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。