《Web安全测试学习手册》- SVN文件泄露
0x00 SVN文件泄露
1)什么是SVN文件泄露
Subversion,简称SVN,是一个开放源代码的版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。
Subversion使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库,另一端是Subversion的客户端程序,管理着受控数据的一部分在本地的映射(称为“工作副本”)。在这两端之间,是通过各种仓库存取层(Repository Access,简称RA)的多条通道进行访问的。这些通道中,可以通过不同的网络协议,例如HTTP、SSH等,或本地文件的方式来对仓库进行操作。
2)SVN文件泄露的特点
- Web目录中存在
.svn
目录 - Web中间件未限制客户端访问带
.
目录,例如:.conf/、.svn/、.data/
0x01 SVN文件泄露 - 风险等级
高
0x02 SVN文件泄露 - 原理
由于网站管理员在上线的时候使用了SVN服务,checkout
完毕并没有删除.svn
这个隐藏目录,并且中间件没有禁止客户端访问这一目录。
0x03 SVN文件泄露 - 常见场景
- 存在
.svn
目录的Web应用
0x04 测试方案
方案一
使用浏览器或CURL探测:http://target/.svn/entries,查看entries
这个文件是否存在。
命令:curl -I http://target/.svn/entries
例如:
➜ ~ curl -I http://10.211.55.12/.svn/entries
HTTP/1.1 200 OK
Date: Fri, 27 Apr 2018 08:12:54 GMT
Last-Modified: Fri, 27 Apr 2018 07:43:25 GMT
Accept-Ranges: bytes
Content-Length: 3
方案二
使用检测工具
方案三
0x05 修复方案
方案一
删除.svn
目录
方案二
Nginx服务器
在nginx.conf
中添加如下代码:
location ~ ^(.*)\/\.svn\/
{
return 404;
}
重启nginx
Apache服务器
在httpd.conf
中添加如下代码:
<Directory "WEB绝对路径/.svn/">
Order deny,allow
Deny from all
</Directory>