目录
SNV泄露
一、什么是snv泄露
SVN(Subversion)是一种开放源代码版本控制系统,用于管理项目的文件和代码。SVN是程序员常用的源代码版本管理软件。在使用 SVN 管理本地代码过程中,使用 svn checkout 功能来更新代码时,项目目录下会自动生成隐藏的.snv文件夹(Linux上用 ls 命令看不到,要用 ls -al
命令),其中包含重要的源代码信息。
资料参考:SVN详解_svn cp-CSDN博客
subvert(颠覆) + verson(版本) = subversion --> svn
二、 snv泄露的危害
一旦网站出现SVN漏洞,其危害远比SQL注入等其它常见网站漏洞更为致命,因为黑客获取到网站源代码后,一方面是掠夺了网站的技术知识资产,另一方面,黑客还可通过源代码分析其它安全漏洞,从而对网站服务器及用户数据造成持续威胁(git同理)。
黑客可以利用其中包含的用于版本信息追踪的 entries 文件(.svn/entries 文件),获取到服务器源码、svn服务器账号密码等信息;利用 wc.db 数据库文件(.svn/wc.db 文件),获取到一些数据库信息;更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,则可以直接获得文件源代码。
三、例题(ctfhub)
安装dvcs-ripper:网络安全之渗透测试全套工具篇(内含安装以及使用方法)_dvcs-ripper-CSDN博客
1.用disearch扫描,发现有svn泄露,命令是:python dirsearch.py -u http://xxx //扫描某个站点
2.在linux中安装好dvcs-ripper,先进入dvcs-ripper的路径下
3.使用perl rip-svn.pl -u http://xxx/.svn,将泄露的文件克隆到本地目录中
4.查看目录,也发现有svn泄露
ls -al//查看当前目录下的所有目录和文件(包括隐藏的文件)
5.使用cd命令进入.svn,然后用ls查看文件
6.进入wc.db,.svn的数据库文件
7.发现有关flag的文件,但是显示没有这个文件
8.题目提示flag 在服务端旧版本的源代码中,看一下pristine文件(源代码文件副本)是否有flag。
9. 进入bf目录进行查看,发现没有flag
10.进入另一个目录,得到flag
HG泄露
一、什么是HG泄露
Mercurial是一款非常优秀的分布式版本控制系统(DCVS),具有高效率、跨平台、可扩展、使用简便且开源等优点,是目前最为流行的版本控制工具之一。Mercurial英文意为水银,所以常被缩写为Hg。
二、HG泄露的危害
如果Mercurial服务器的安全措施不当或用户不小心,可能会导致Mercurial源码的信息泄露的问题,而Mercurial源码信息泄露的原理是因为Mercurial服务器上的源代码未被正确保护,导致未经授权的用户可以轻易地访问和下载代码,这可能会导致以下问题:
1.暴露源代码:未经授权的用户可以轻易地访问和下载源代码,包括敏感信息,例如密码、API密钥和凭据等
2.增加恶意攻击的风险:未经授权的用户可以轻易地访问和下载源代码,黑客可以使用这些代码来发起攻击,例如通过发现代码漏洞来入侵服务器或者应用程序
三、相关的命令
Init是指初始化,也就是创建一个空的仓库。
Clone是指创建仓库的复本,创建的来源可以是一个http或ssh链接表示的仓库,也可以是本地仓库。
Commit是指提交,即接受所有的改动,将当前版本作为最新版本(也叫tip)。注意这个提交和集中式SCM不同,它只提交的本地仓库,而且本地仓库会 详细记录所有的变动(称为变更集或改动集)。因此不用客气,多提交几次也没关系,因为不影响别人的仓库。而如果怕影响自己的话,可以clone一个复本, 再对复本进行改写和提交。
Revert是指恢复,即撤销所有的改动,恢复到未更改的状态。右键菜单里你是找不到它的,原因后面再提。
Pull的意思是拉,是将其他仓库有,而当前仓库没有的变更集“下载”到当前仓库。不过这只是添加了变更集,文件并不会改动。(变更集有一个唯一的hash标识,所以很容易区分。)
Update的意思就是更新,当获取了其他变更集,且需要更改以保持和其他仓库一致时,就可以执行它了.
Push的意思是推,就是将当前仓库的变更集“上传”到其他仓库去。其他仓库必须支持该操作,并可能需要经过验证。如果是从本地仓库A push到本地仓库B,就相当于用B pull A。此外,push也不会更新仓库的版本,因为它是共享的,需要的人直接选择想要的版本即可。
Merge就是指合并。当一个文件同时被多次修改,并存放在多个仓库时,要获得一个统一的版本,就需要合并。对于翻译而言,一个文本可能同时会分给多个人,于是合并时只需要接受每个人的改动即可。
四、HG泄露的利用
资料参考:hg(Mercurial)总结_hg mercurial-CSDN博客
//切换到dvcs-ripper的路径下
cd dvcs-ripper
//使用dvcs-ripper工具将泄露的.hg文件克隆到本地目录中
perl rip-hg.pl -u http://xxx/.hg//使用dvcs-ripper下载泄露的文件
./rip-hg.pl -u http://xxx/.hg
五、相关例题
1.切换到dvcs-ripper的路径下之后,使用dvcs-ripper工具将泄露的.hg文件克隆到本地目录中,提示404报错,可能是没有完整下载网站目录
2.使用ls -al //查看当前目录下的所有目录和文件(包括隐藏的文件),发现(隐藏的).hg文件
3.进入.hg文件夹下,查看目录发现一个.txt文件
4.cat查看.txt文件,发现历史记录add flag
5.利用正则匹配找一下flag,发现flag.txt文件 提示没有这个文件,它被删除了
6.使用curl命令访问,得到flag
使用curl http://xxx/flagxxxx.txt //利用URL规则在命令行下工作的文件传输工具