一.SVN泄露
1.当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。
2.了解一下SVn泄露:
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就用用于多个人共同开发同一个项目,实现的共享资源,实现最终集中式的管理
3.例题:
此题使用 kali-linux 系统完成,因为使用 windows 系统环境使用 Perl 配置环境变量过于繁琐,且 Perl 更适合在 Linux 环境中使用。在做这题碰到的坑还挺多,一开始尝试了使用各种 SVN 泄露漏洞利用工具,最后发现 dvcs-ripper 这个工具比较好用。配置好工具及环境后,使用工具将泄露文件 clone 到本地目录下,最后通过检索文件发现 6e 文件中的文件存放此题 flag 。
先用dirsearch扫描了这个网页,发现.svn泄露
1.根据题目的描述,在ctfhub上下载工具
GitHub - kost/dvcs-ripper: Rip web accessible (distributed) version control systems: SVN/GIT/HG...
2.在kali的终端打开工具所在的目录(要把下载的工具的文件拖入到kali虚拟机中)
cd /home/kali/桌面/dvcs-ripper-master/
3.安装工具所需要的yi'lai库
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
4.使用dvcs-ripper工具将泄露的文件下载到本地目录中
./rip-svn.pl -u http://challenge-5ffffc53f8a60893.sandbox.ctfhub.com:10800/.svn
5.在.svn文件夹中查看下载好的文件
ls -al
6.访问wc.db数据查看是否有此题flag,索引发现flag有两个文本文件可能存在flag
7.使用curl命令访问可以文件检查网页源代码是否存在flag,检查均返回404,可能已经被删除了
8.网页提示说flag在服务端旧版本的源代码中,那么应该检查一下pristine文件是否存放flag
9.查看97文件夹是否存在此题flag,发现查看文件夹中的.svn-base文件中存在此题flag
二.HG泄露
1.
HG泄露:
当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了HG泄露漏洞。
2.这题与之前的题目比较类似,同样使用 dvcs-ripper 工具下载泄露的网站目录,但是使用工具过程中出现了一些错误,导致网站源代码没有完整下载。正如网页显示内容中的提示所说,不好使的情况下,试着手工解决。那么此题目是让我们不要过度依赖工具的使用。使用 tree 命令列出下载到本地目录的所有文件。发现一个可疑的文本文件,查看文本文件发现历史记录中一个新增的 flag 文件。正则搜索相关文件发现可疑文本,使用 curl 命令检查发现此题flag。
题目:
下载的工具和svn要用的是一样的,所以之前下载过就不需要再下载了
1.在kali的终端打开工具
2.安装工具所需要的依赖库
apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
3.使用dvcs-ripper下载泄露的文件发现提示404报错和几处完成,可能是没有完整下载网站目录
./rip-hg.pl -v -u http://challenge-f6e8e5294515f677.sandbox.ctfhub.com:10800/.hg
4.使用tree命令列出刚刚下载的.hg网站目录,发现可疑的文本文件
tree .hg
5.查看可疑的文本文件是否存在此题flag,发现历史版本add flag
cat .hg/last-message.txt
6.发现历史版本可以使用正则表达式进行关键字查找
grep -a -r flag
7.使用curl检查一下data数据中的文本文件,发现此题flag
curl http://challenge-f6e8e5294515f677.sandbox.ctfhub.com:10800/flag_1401910224.txt
补充内容:
1.curl命令:
简介:
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。
如果在一个curl命令中不指定具体的方法,那么默认的就是使用GET方法。
语法:
curl [option] [url]
2.正则匹配: