工具准备:dirsearch、dvcs-ripper
网络安全之渗透测试全套工具篇(内含安装以及使用方法)_dvcs-ripper-CSDN博客
dvcs-ripper:一款perl的版本控制软件信息泄露利用工具,支持bzr、cvs、git、hg、svn...
tree //树状图列出目录的内容
下载安装dvcs-ripper
https://github.com/kost/dvcs-ripper
Perl:是一种为扫描任意的文本文件,从这些文本文件中获取信息,基于这些信息打印报表而优化的语言。旨在实用(易用、高效、完整)。
dvcs-ripper工具使用到perl语言,需要在root权限下安装perl环境 :
apt install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
一、什么是HG?
hg(Mercurial)总结_hg mercurial-CSDN博客
Mercurial简介-CSDN博客
Mercurial(英文意为水银,所以常被缩写为hg)是一款非常优秀的分布式版本控制系统(DCVS),具有高效率、跨平台、可扩展、使用简便且开源等优点,是目前最为流行的版本控制工具之一。
分布式版本控制系统:
当源码服务器故障或网络不通时,依然能提交你所做的本地修改。
基本命令:
Init //初始化,创建一个空的仓库。 Clone //创建仓库的复本,创建的来源可以是一个http或ssh链接表示的仓库,也可以是本地仓库。Commit //提交,即接受所有的改动,将当前版本作为最新版本(也叫tip)。Revert //恢复,即撤销所有的改动,恢复到未更改的状态。Pull //拉,是将其他仓库有,而当前仓库没有的变更集“下载”到当前仓库。不过这只是添加了变更集,文件并不会改动。(变更集有一个唯一的hash标识,所以很容易区分。) Update //更新,当获取了其他变更集,且需要更改以保持和其他仓库一致时,就需要更新。Push //推,将当前仓库的变更集“上传”到其他仓库。//其他仓库必须支持该操作,并可能需要经过验证。如果是从本地仓库A push到本地仓库B,就相当于用B pull A。此外,push也不会更新仓库的版本,因为它是共享的,需要的人直接选择想要的版本即可。Merge //合并。当一个文件同时被多次修改,并存放在多个仓库时,要获得一个统一的版本,就需要合并。
使用HG
//切换到dvcs-ripper的路径下
cd dvcs-ripper//使用dvcs-ripper工具将泄露的.hg文件克隆到本地目录中
perl rip-hg.pl -u http://xxx/.hg
二、HG泄露
在初始化项目时,HG会在当前文件夹下创建一个 .hg 隐藏文件夹,其中包含代码和分支修改记录
等信息。
题目描述:
当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。
HG泄露(ctfhub)
1.题目提示有hg泄露
使用dirsearch扫描,也发现有.hg泄露
python dirsearch.py -u http://xxx //扫描某个站点
2.使用dvcs-ripper工具将泄露的.hg文件克隆到本地目录中
perl rip-hg.pl -u http://xxx/.hg
克隆泄露的.hg文件发现提示404报错,可能是没有完整下载网站目录
3.查看目录,发现(隐藏的).hg文件
ls -al //查看当前目录下的所有目录和文件(包括隐藏的文件)
4. 进入.hg文件夹下,查看目录发现一个.txt文件
5..cat查看.txt文件,发现历史记录add flag
6.利用正则匹配找一下flag,发现flag.txt文件 提示没有这个文件,它被删除了
grep -r flag
7.于是在url直接访问文件名得到flag
也可使用curl命令访问 得到flag
curl http://xxx/flag.txt //利用URL规则在命令行下工作的文件传输工具
grep命令
linux grep和find命令_--quiet find-CSDN博客
功能:
查找文件里符合条件的字符串(强大的文本搜索工具)
它能使用正则表达式搜索文本,并把匹配的行打印出来。
参数:
-a //不忽略二进制的数据。-b //在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。-c //计算符合范本样式的列数。-d //指定要查找的是目录(而非文件)-e //指定字符串作为查找文件内容的范本样式。-i //忽略字符大小写的差别。-l //列出文件内容符合指定的范本样式的文件名称。-L //列出文件内容不符合指定的范本样式的文件名称。-q //不显示任何信息。-r //指定要查找的目录。-s //不显示错误信息。-v //反转查找。-V //显示版本信息。-w //只显示全字符合的列。-x //只显示全列符合的列。-y //忽略字符大小写的差别。
--help 在线帮助。