2021-07-07 CTFer成长之路-信息收集-敏感目录泄露
一:敏感目录泄露
通过敏感目录泄露,我们往往能获取网站的源代码和敏感的URL地址,如网站的后台地址等。
1. git泄露
[漏洞简介
]git是一个主流的分布式版本控制系统,开发人员在开发过程中经常会遗忘.git文件夹,
导致攻击者可以通过.git文件夹中的信息获取开发人员提交过的所有源码,进而可能导致服务器被攻
击而沦陷。
(1)常规git泄露
常规git泄露:即没有任何其他操作,参赛者通过运用现成的工具或自己编写的脚本即可获取网站源码
或者flag。这里推荐一个工具:https://github.com/denny0223/scrabble,使用方法也很简单:
1 ./scrabble http://127.0.0.1/git_test/
2 ls
3 cat flag.text
- 1
- 2
- 3
(2) git回滚
git作为一个版本控制工具,会记录每次提交(commit)的修改,
所以当题目存在git泄露时,flag
(敏感)文件可能在修改中被删除或被覆盖了,这时我们可以利用git的“git reset’命令来恢复到
以前的版本。
1 ./scrabble http://127.0.0.1/git_test/
2 ls
3 cat flag.text
4 get reset --hard HEAD^
5 cat flag.text
- 1
- 2
- 3
- 4
- 5
如果是跳转到固定版本
1 ./scrabble http://127.0.0.1/git_test/
2 ls
3 cat flag.text
4 get log -stat
5 get diff-HEAD commit-id
6 cat flag.text
- 1
- 2
- 3
- 4
- 5
- 6
(3) git分支
在每次提交时,git都会自动把它们串成一条时间线,这条时间线就是一个分支。而git允许使用多个分支,从而让用户可以把工作从开发主线上分离出来,以免影响开发主线。如果没有新建分支,那么只有一条时间线,即只有一个分支,git中默认为master分支。因此,我们要找的flag或敏感文件可能不会藏在当前分支中,这时使用“git log"命令只能找到在当前分支上的修改,并不能看到我们想 要的信息,因此需要切换分支来找到想要的文件。现在大多数现成的git世露工具都不支持分支,如果需要还原其他分支的代码,往往需要手工进行文件的提取,这里以功能较强的GitHacker(https://github.com/WangYihang/GitHacker)工具为例。GitHacker的使用十分简单,只需执行命令“
python GitHacker.py http://127.0.0.1:8000/.git/
- 1
运行后,我们会在本地看到生成的文件夹,进入后执行“git log--all
”或"git branch-v
"命令,只能看到master分支的信息。如果执行“git reflog
”命令,就可以看到一些checkout的记录除了master还有一个secret分支,但自动化工具只还原了master分支的信息,因此需要手动下载secret分支的head信息,保存到.git/refs/heads/secret
中(执行命令“wgethttp://127.0.0.1:8000/.git/refs/heads/secret
”)。恢复head信息后,我们可以复用GitHacker的部分代码,以实现自动恢复分支的效果。在GitHacker的代码中可以看到,他是先下载object文件,再使用git fsck检测,并继续下载缺失的文件。此处可以直接复用检测缺失文件并恢复的fixmissing函数。我们注释掉程序最后调用main的部分,修改为如下代码:
修改后重新执行“python GitHacker.py
”命令,运行该脚本,再次进入生成的文件夹,执行“git log--all
”或“git branch-v
”命令,则secret分支的信息就可以恢复了,从git log中找到对应提交的hash,执行“git diff HEAD b94c
”(b94c为hash的前4位)命令,即可得到flag
(4)git泄露的
其他利用除了查看源码的常见利用方式,泄露的git中也可能有其他有用的信息,如.git/config文件夹中可能含有access_token信息,从而可以访问这个用户的其他仓库。
2.SVN泄露
SVN(subversion)是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范将SVN隐藏文件夹暴露于外网环境,可以利用.svn/entries或wc.db文件获取服务器源码等信息。这里推荐两个工具:https://github.com/kost/dvcs-ripper,Seay-svn(Windows下的源代码备份漏洞利用工具)。
3.HG泄露
在初始化项目时,HG会在当前文件夹下创建一个.hg隐藏文件夹,其中包含代码和分支修改记录等信息。这里推荐工具:https://github.com/kost/dvcs-ripper。
4.总结经验
不论是.git这些隐藏文件,还是实战中的admin之类的敏感后台文件夹,其关键在于字典的强大,读者可以在某些工具的基础上进行二次开发,以满足自己需要。这里推荐一个开源的目录扫描工具:https://github.com/maurosoria/dirsearch。CTF线上比赛往往会有重定向一类问题。例如,只要访问.git,便会返回403,此时试探着访问.git/config,如果有文件内容返回,就说明存在git泄露,反之,一般不存在。而在SVN泄露中,一般是在entries中爬取源代码,但有时会出现entries为空的情况,这时注意wc.db文件存在与否,便可通过其中的checksum在pristine文件夹中获取源代码。
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/118540011
- 点赞
- 收藏
- 关注作者
评论(0)