Contents

CTFHub-信息泄露

0x00 前言

菜鸡记录汇总下信息泄露的学习过程。

0x01 目录遍历

在页面可以遍历到目录

一个个点开,最后发现

0x02 PHPINFO

点击后搜索关键字

0x03 网站源码

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

使用DirBuster设置后缀和文件名

发现存在www.zip文件

下载文件

解压后发现可疑文件,打开后没有flag

换种思路,网页上访问。

0x04 bak文件

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

根据提示访问index.php.bak

得到flag

0x05 vim缓存

题目:当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。

Vim 的交换文件 .filename.swp,默认交换文件在打开文件的时候就会产生交换文件,正常退出的时候才会删除。

Vim 的备份文件 filename~,默认关闭,需要通过设置 set backup 来开启,Unbuntu的Vim配置文件是 /etc/vim/vimrc,开启后,对文件进行修改后会保存修改之前的一个副本。

打开文件

0x06 .DS_Store

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

下载.DS_Store

发现提示有flag的文件

0x07 Log

题目:当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。

使用dirsearch工具进行目录扫描,执行dirsearch.py -u http://challenge-6ef911625ae64cdf.sandbox.ctfhub.com:10800/ -e *,注意url包含冒号,无法创建文件,可以通过-o指定outputfile文件的路径,或者修改在default.conf[reports] autosave-report = False

使用GitHack进行文件恢复

进入dist目录中的刚恢复的文件内打开git,题目提示log,联想到git log,查看历史提交记录。发现有个add flag的版本。

使用git reset [HEAD] ,回退版本

发现dist文件夹中多出了可疑文件,打开得到flag。

0x08 Stash

题目:同上

使用dirsearch扫描,再重复用GitHack来clone源码。

使用git stash show显示做了哪些改动,或者git stash list查看stash了哪些存储

刚好只有一个文件改动过,使用git stash show -p :,显示第一个存储的改动,成功得到flag。如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p

另一种解法:执行 git stash pop 发现从 git 栈中弹出来一个包含flag的文件。

第三种解法:使用cat .git/refs/stash打开stash文件,然后执行git diff比较工作区和暂存区

0x09 Index

题目:同上

clone源码,ls发现可疑文件,查看得到flag

0x0A SVN泄露

题目:当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。

在管理员使用SVN管理本地代码,并在发布代码时没有使用到处功能,直接使用了全选+复制+粘贴这种操作的话,就会将自动生成的 .svn 隐藏文件同时上传,而此文件中会有源码信息以及文件目录。

使用dirmap扫描隐藏文件

发现存在了 .svn 文件,手动访问.svn/entries.svn/wc.db均能成功下载

可以使用svn-extractor下载文件,但output不支持冒号,在源代码中加入replace(":", "")后才能正常运行。

也可以直接使用svnExploit

使用 Navicat Premium 打开 wc.db 文件,储存的为某一版本的文件目录,REPOSITORY表里存储了svn的项目路径,在NODES 表发现可疑文件,local_relpath是原始文件名。

checksum栏里的$sha1$后面的那串数字的前两位对应pristine文件夹里的00~ff文件名,index.html对应的是bf。

再通过PRISTINE表中的checksum,推断出flag文件的名称为75。

但url直接访问无法获取txt,通过dvcs-ripper获取 .svn 文件来得到文件的源码备份信息,从而查看此txt文件的内容。

查看隐藏文件

pristine文件夹下会储存旧版本的备份信息,故进行访问查看

发现目标文件夹

查看flag文件

0x0B HG泄露

题目:当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。

使用dvcs-ripper来获取.hg文件,执行./rip-hg.pl -v -u http://challenge-be1484acebe78833.sandbox.ctfhub.com:10800/.hg/执行过程中发现可疑文件

下载完成后cd到.hg文件夹,执行grep -r flag *

确认后url访问,get flag。