CTFHub 信息泄露

一.目录遍历

解题:

根据网页显示内容提示点击开始寻找 flag 按钮,发现显示出网页目录内容,猜测此题可能和题目描述所说的目录遍历有关,敏感信息泄露

点击开始寻找flag按钮发现内容为网页目录信息

根据提示遍历网页目录信息,会在某一个文件夹中发现一个flag.txt文件

点击flag.txt文件,获得此题flag

1.漏洞简介

目录遍历是 Web 漏洞,该漏洞可以遍历服务器上的任意文件,可能包含用户数据、程序代码等敏感信息的泄露。漏洞原理主要是因为没有过滤用户输入的 ../ 相关的目录跳转符,使得攻击者通过目录跳转符来遍历服务器中的任意文件。

2.漏洞技巧

(1)加密参数绕过:

        网站设计者可能会使用加密文件的方式对文件名加密上传到网站,访问网站时可能会显示 1.php?text=aW5kZXguaHRtbA== 这种以不安全的明文加密对网页文件加密,攻击者可以通过对网页文件解密进行绕过。

(2)后缀过滤绕过:

        攻击者可以在文件目录上添加一些后缀名进行绕过。例一, ::$DATA 绕过,在文件名后加上如 1/3/::$DATA 系统会判断为文件流进行处理,并不检测文件后缀名。例二, %00 截断 ,在文件名后加上此截断如, 1/3.text%003.html 解析为 1/3.text 会自动忽略截断符号后的内容从而绕过。

(3)目录限定绕过:

        网站设计者可能使用限定目录权限对文件做分割,使用 ~ 符号可以对目录限定进行绕过,例如 1.php?text=~/1/3 可以直接跳转到对应的文件目录下。

如果想要了解更多,可以参考

渗透攻击红队. Apache-目录遍历漏洞[EB/OL]. [2022-10-2]. https://cloud.tencent.com/developer/article/1540750.

二.PHPINFO

解题:

开启题目

可以手动浏览,也可以 ctrl+F 搜索 flag 或者 ctfhub

可以看到 $_ENV[‘FLAG’] 即为flag

PHPINFO

phpinfo是php内置的函数,用于以网页的形式输出 php的具体配置信息。

使用:phpinfo — 输出关于 PHP 配置的信息

bool phpinfo([ int $what = INFO_ALL])

输出 PHP 当前状态的大量信息,包含了 PHP 编译选项、启用的扩展、PHP 版本、服务器信息和环境变量(如果编译为一个模块的话)、PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和PHP授权信息(License)。

该函数主要用于网站建设过程中测试搭建的PHP环境是否正确,但phpinfo文件泄露一直被大家所忽视,很多网站在测试完毕后并没有及时删除,因此当访问这些测试页面时,会输出服务器的关键信息,这些信息的泄露将导致服务器被渗透的风险。

泄露的主要敏感信息:

1、system : 提供服务器所在的操作系统的信息。

2、$_SERVER[‘SERVER_ADDR’]: 公网IP地址

获取真实Ip的我们防止cdn的影响。同时也可以尝试端口扫描

3、CONTEXT_DOCUMENT_ROOT : web根目录

获得网站绝对路径的危害是巨大的,特别是进行渗透测试,当存在SQL注入点时,要上传木马的时需要,知道网站的绝对路径才可以获取webshell。假设网站的搭建是某些网上的模板,就可以知道网站文件的基本框架,就可以寻找软件对应的漏洞去尝试攻击目标网站。

4.disable_functions: 网站禁用函数

disable_functions标识该网站禁用的函数,防止在代码执行和编写webshell时产生问题

5 . _FILES[“file1”]: 临时缓存文件信息

可以在_FILES[“file1”]中看到上传的临时文件

如果想要了解更多,可以参考

浅谈“phpinfo()信息泄漏”_phpinfo.php信息泄露 漏洞级别-CSDN博客

phpinfo信息泄漏-布布扣-bubuko.com

三.备份文件下载

1.网站源码

解题:

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露.

打开后,给出了常用备份文件的后缀和文件名等内容,使用Python3脚本对其进行扫描,可参考脚本如下:

import requests

url1 = 'http://xxx.com'        # url为被扫描地址,后不加‘/’

# 常见的网站源码备份文件名
list1 = ['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp']
# 常见的网站源码备份文件后缀
list2 = ['tar', 'tar.gz', 'zip', 'rar']

for i in list1:
    for j in list2:
        back = str(i) + '.' + str(j)
        url = str(url1) + '/' + back
        print(back + '    ', end='')
        print(requests.get(url).status_code)

对其进行扫描后,可见www.zip访问状态为200,返回200 表示该文件可访问

然后再通过url下载文件,要注意下载下来里面并没有flag明文,但是标题写的仍然是flag_xx.txt

证明该文件中确实应该保存的是flag,想到该压缩包是备份文件,所以在网站上一定有真正的文件

所以尝试在网站上打开该文件

http://challenge-91f1f5e6a791ab02.sandbox.ctfhub.com:10080/flag_48739440.txt

至此,拿到flag

常见的网站源码备份文件扫描脚本:

import requests

url1 = 'http://xxx.com'        # url为被扫描地址,后不加‘/’

# 常见的网站源码备份文件名
list1 = ['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp']
# 常见的网站源码备份文件后缀
list2 = ['tar', 'tar.gz', 'zip', 'rar']

for i in list1:
    for j in list2:
        back = str(i) + '.' + str(j)
        url = str(url1) + '/' + back
        print(back + '    ', end='')
        print(requests.get(url).status_code)

2.bak文件

解题:

 打开后看到提示,我们在网址后加上/index.php

回车后下载文件

 打开文件就得到了flag(可能需要特殊软件来打开这个文件,没有就下一个)

3.vim缓存

解题:

当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。在编辑时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容.

点击进入环境,利用提示信息,寻找 flag 文件.(由于是 vim 缓存 泄露,所以在要在后面添加 .swp )

因为这是缓存文件,所以需要我们还原出原本的内容,使用 linux 系统:
 
vim -r "index.php.swp"
 
vim -r "文件名"

就可以得到flag

知识点:

(1).当vim在编辑文档的过程中如果异常退出,则会产生缓存文件。第一次产生的缓存文件后缀为.swp,第二次则产生的缓存文件后缀为.swo,第三次产生的缓存文件后缀为.swn。
 
(2).使用命令vim -r 可以查看当前目录下的所有swp文件。
 
(3).使用命令vim -r filename可以恢复文件,这样上次意外退出并且没有保存的修改,就可以覆盖文件。
 
(4).调用这类的隐藏文件的时候,需要在最前面加.(如删除index.php.swp,则需要rm -fr* .index.php.swp).
 
(5).vim使用的缓存存储是一种固定的二进制文件,我们可以通过curl命令,或者vim命令进行查看。

4. .DS_Store

解题:

 .DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单.

点击进入环境,利用提示信息.(然后直接在后面添加 .DS_Store ).以此来寻找 flag 文件.

直接打开发现是乱码,乱码,然后直接使用 linux 系统:(把文件放在 linux 系统中)

cat DS_Store        // 打开文件

发现flag信息,然后去访问白色区域,得到flag

DS_Store 文件的主要作用,是存储当前文件夹在桌面显示相关方面的一些自定义属性,包括文件图标的位置、文件夹上次打开时窗口的大小、展现形式和位置等。这有助于保留为特定文件夹配置的设置。

四.Git泄露

1.Log

解题:

查看页面

dirsearch扫描目录:python dirsearch.py -u http://challenge-5a5d24023f7ea71c.sandbox.ctfhub.com:10800 -e git -t 5

扫描结果,存在git泄露

Githack扫描,进入GitHack文件夹,执行下列命令:python GitHack.py http://challenge-e87e0210287ba7b3.sandbox.ctfhub.com:10800/.git/

git log历史查询

总共有三个版本,经过查看发现在add flag这添加了flag

获取flag,

 得到flag有两种方法:

1、版本比对:git diff
用法:git diff <分支名1> <分支名2>

2、版本回退:git reset

用法:git reset --hard <分支名>

知识点:

(1)、用的工具:dirsearch、Githack。(大家在GitHub上自己下载,也可以私聊)

Githack在使用前需要有确保git在环境变量里,下载如下:

    ubuntu/debian: $ apt-get install git
    redhat/centos: $ yum install git
    windows:https://github.com/git-for-windows/git/releases/tag/v2.38.1.windows.1(下载地址)

(2)、GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。

(3)、Githack使用思路:1、Githack扫描;2、git log查看历史记录。

扫描语法:python GitHack.py http://www.target.com/.git/

2.Stash

解题:

使用githack工具进行扫描

扫描完成后,在目录里面会生成一个新的文件,进去之后按住shift单机鼠标右键选择git base here,执行git stash list :查看stash了哪些存储。

执行git stash pop,恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1})

目录下生成了新的txt文件 ,我们查看获取flag。

知识点:

(1).git stash概念

.git stash用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作。.git stash将本地的修改保存起来,并且将当前代码切换到HEAD提交上。

主要大家可以参考:git stash的详细讲解 - 简书 (jianshu.com)

(2)、会用到的命令

    主要会用到:

    git stash lish   #查看当前stash中的内容

    git stash pop  #将当前stash中的内容弹出,并应用到当前分支对应的工作目录上,可以理解为恢复内容。

其他命令讲解可以参考:git stash详解-CSDN博客

3.Index

解题:

首先还是githack处理一下,打开dist里的这个文件,运行终端

使用命令 git log 查看历史记录,然后使用 git diff进行比对,即可看到flag

其中,git diff后面的那一串就是上面git log中add flag的这次提交

知识点:

题目中的index并不是我们理解的web网页,而是一个暂存区,默认存储在.git/index。

Git本地库中的索引(Index)及文件状态概述_git index-CSDN博客

五.SVN泄露

解题:

此题使用 kali-linux 系统完成,因为使用 windows 系统环境使用 Perl 配置环境变量过于繁琐,且 Perl 更适合在 Linux 环境中使用,dvcs-ripper 这个工具比较好用

使用dvcs-ripper工具将泄露的文件下载到本地目录中 ./rip-svn.pl -u URL/.svn

在.svn文件夹中查看下载好的文件 ls -al

访问wc.db数据查看是否有此题flag,索引发现flag有两个文本文件可能存在flag

使用curl命令访问可以文件检查网页源代码是否存在flag,检查均返回404,可能已经被删除了

网页提示说flag在服务端旧版本的源代码中,那么应该检查一下pristine文件是否存放flag

cd pristine

查看6e文件夹是否存在此题flag,发现查看文件夹中的.svn-base文件中存在此题flag

知识点:

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

想知道更多,可参考

https://baike.baidu.com/item/subversion/7818587?fromModule=lemma-qiyi_sense-lemma.

https://blog.csdn.net/qq_36869808/article/details/88848414.

六.HG泄露

解题:

同样使用 dvcs-ripper 工具下载泄露的网站目录,使用dvcs-ripper下载泄露的文件发现提示404报错和两处完成,可能是没有完整下载网站目录

./rip-hg.pl -u URL/.hg

使用tree命令列出刚刚下载的.hg网站目录,发现可疑的文本文件 tree .hg

查看可疑的文本文件是否存在此题flag,发现历史版本add flag

cat .hg/last-message.txt

发现历史版本可以使用正则表达式进行关键字查找 grep -a -r flag

使用curl命令检查一下data数据中的文本文件,发现此题flag

curl http://challenge-137f105811083a40.sandbox.ctfhub.com:10800/flag_1682217975.txt

知识点:

        Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。

        在 Mercurial 轻量级分布式版本控制系统中,本地既可以当做版本库的服务端,也可以当做版本库的客户端。版本库与工作目录不同,版本库存放了所有版本,而工作目录只是因为特定需要存放特定版本。与 SVN 系统不同,SVN 的版本库集中在一台服务器中。这也导致很多初次使用 Mercurial 系统的工作者,因为操作失误导致出现 HG 泄露漏洞的主要原因。

想知道更多,可参考

https://baike.baidu.com/item/Mercurial/6615059.

       

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值