SVN源码泄露漏洞

SVN源码泄露漏洞

SVN(subversion)是源代码管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用”导出“功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的”entries”文件,逐步摸清站点结构“ (可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息)

更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做接信息,黑客则可以直接获得文件源代码。

利用

1、漏洞利用工具: Seay SVN漏洞利用工具

2、添加网站url,在被利用的网址后面加/.svn/entries,列出网站目录,甚至下载整站。

修复

1、在web服务器配置文件中增加一段代码,过滤掉.svn文件,返回404

nginx服务器:

 location ~ ^(.*)\/\.svn\/
 {
 return 404;
 }
 重启nginx

Apache服务器:

 Order allow,deny
 Deny from all
 重启Apache

2、查找服务器上所有.svn隐藏文件夹,删除

以下命令删除当前目录下.svn文件夹

 find . -type d -name ".svn"|xargs rm -rf
 rm -rf `find .-type d -name .svn`
 find . -name ".svn" -type d | xargs -n1 rm-R
 
 使用脚本删除
 #!/bin/bash
 cd /home/web/
 find ./ -name ".svn" |xargs -n1 echo >/dev/null 2>&1
 find ./ -name ".svn" -print0 |xargs -0 rm -rf
 if [ $? -ne 0 ];then
 echo "remove .svn dirs failed"
 fi
 
 以上文件保存为.sh
 执行之后,会删除/home/web目录及其子目录中所有.svn隐藏文件夹。

防御

开发人员在使用SVN时,严格使用导出功能。禁止直接复制代码。

posted @ 2020-07-29 13:53  世人熙熙皆为利来  阅读(367)  评论(0编辑  收藏  举报