一、SVN泄露漏洞原理
-
默认.svn目录暴露:
-
SVN在工作目录下会生成.svn隐藏目录
-
该目录包含版本控制信息、原始源代码等
-
如果Web服务器配置不当,可能允许直接访问这些目录
-
entries文件泄露:
-
.svn/entries文件包含版本库元数据
-
可能暴露文件结构、开发者信息、日志等
-
wc.db数据库泄露:
-
新版本SVN使用wc.db SQLite数据库存储信息
-
包含完整的文件路径、校验和等敏感数据
-
pristine目录泄露:
-
存储文件的原始版本
-
可直接获取未编译的源代码
二、漏洞利用方法
1. 手动检测与利用
检测.svn目录是否存在:
http://example.com/.svn/
访问entries文件(旧版本SVN):
http://example.com/.svn/entries
访问wc.db文件(新版本SVN):
http://example.com/.svn/wc.db
利用wc.db获取文件列表:
下载wc.db文件
使用SQLite工具查询:
自动化工具利用
三、防御措施
1. 服务器配置防御
Apache配置:
<Directory ~ ".svn">
Order allow,deny
Deny from all
</Directory>
Nginx配置:
location ~ ^/.svn/ {
deny all;
}
在请求过滤中添加拒绝规则,阻止.svn目录访问
开发部署前清理
使用svn export
代替svn checkout
部署代码或部署后删除.svn目录:
find /path/to/webroot -name ".svn" -exec rm -rf {} ;
权限控制:
Web服务器用户只赋予必要目录的读取权限
禁止目录列表功能
监控与审计:
定期扫描网站是否存在.svn目录
监控异常访问日志
使用WAF防护:
配置规则阻止对.svn目录的访问
过滤敏感文件请求
四、漏洞危害
SVN泄露可能导致:
源代码完全暴露
数据库连接信息泄露
API密钥和加密密钥泄露
系统架构信息暴露
开发者个人信息泄露
五、修复验证
修复后应验证:
直接访问.svn目录返回403/404
自动化工具无法提取版本信息
敏感文件无法通过猜测路径访问
原文始发于微信公众号(web安全笔记):SVN泄露漏洞:原理、防御与利用详解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论