墨者_SVN信息泄露漏洞分析

 
在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。
 
使用svn checkout后,项目目录下会生成隐藏的.svn文件夹(Linux上用ls命令看不到,要用ls -al命令)。
svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为  .svn/text-base/文件名.svn-base 
 
 
目录扫描扫出来的
 
 

 

下载

 

 

 

svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份

 

用SQLiteStudio软件打开 wc.db文件,我们看到 NODES 表,看到 local relpath栏 和 checksum栏,明白了吗(滑稽.jpg)。checksum栏里的$sha1$后面的那串数字就是pristine文件夹里的那堆文件的文件名,pristine里的00~ff文件夹,其实是文件名的前两位,而local relpath就是原始的文件名。
现在,我们根据这个 wc.db 的NODES表,遍历这个表里的每一行,就可以下载到整个项目里的代码了,而且还能得到对应的真实文件名,可谓岂不快哉?

 

除了NODES表以外,还可以看到一个 REPOSITORY表,里面存储了svn的项目路径和 uuid,如果没有做访问IP限制的话,你可以直接使用此信息取得此项目的SVN权限(下载、提交等)…
四、漏洞修复
方案一、不要使用svn checkout和svn up更新服务器上的代码,使用svn export(导出)功能代替。
方案二、服务器软件(Nginx、apache、tomcat、IIS等)设置目录权限,禁止访问.svn目录
posted @ 2019-03-12 16:54  hilfloser  阅读(958)  评论(0编辑  收藏  举报