目录
Git与SVN的区别
漏洞产生的原因
漏洞危害
修复建议
工具下载
解题过程
当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。
Git与SVN的区别
- Git 是分布式版本控制系统,每个开发者都拥有完整的代码库副本。这意味着即使没有中央服务器,你也可以在本地进行大部分操作,如提交、查看历史记录等。当有网络连接时,可以与其他开发者进行同步。
- SVN 是集中式版本控制系统,代码存储在中央服务器上。开发者需要连接到中央服务器才能进行大部分操作。如果中央服务器出现问题,可能会影响整个团队的开发工作。
漏洞产生的原因
在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn
隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的entries
文件,获取站点信息。
漏洞危害
攻击者可以利用.svn/entries
文件,获取到应用程序源代码、svn服务器账号密码等信息。同时,SVN产生的.svn
目录下还包含了以.svn-base
结尾的源代码文件副本(低版本SVN具体路径为text-base
目录,高版本SVN为pristine
目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
- 攻击者利用该漏洞可下载网站源代码,获得数据库的连接账号密码等敏感信息;
- 攻击者可通过获取的源代码进一步分析出新的系统漏洞,从而进一步入侵系统;
修复建议
- 查找服务器上所有.svn隐藏文件夹,删除。
- 开发人员在使用SVN时,严格使用导出功能,禁止直接复制代码。
工具下载
SvnExploit下载
GitHub - admintony/svnExploit: SvnExploit支持SVN源代码泄露全版本Dump源码
dvcs-ripper下载
GitHub - kost/dvcs-ripper: Rip web accessible (distributed) version control systems: SVN/GIT/HG...
dvcs-ripper需要在kali上下载运行,并安装Perl环境
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
解题过程
首先还是先使用dirsearch进行扫描,发现有.svn泄漏
使用svnexploit工具下载.svn
python3 SvnExploit.py -u http://challenge-9005d52ddc930d30.sandbox.ctfhub.com:10800/.svn/ --dump
但是svnexploit这个工具只能获取当前版本的源代码,而题目提示说flag在旧版本
所有我们要得到旧版本的源码
使用.使用 dvcs-ripper 工具中的 rip-svn.pl 脚本进行下载
./rip-svn.pl -v -u http://challenge-9005d52ddc930d30.sandbox.ctfhub.com:10800/.svn
使用ls -a查看隐藏文件
匹配二进制源码
cat wc.db|grep -a flag
最后找到flag