SVN源码泄露漏洞

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

   更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),若是服务器没有对此类后缀作解析,黑客则能够直接得到文件源代码。web

 

利用

一、漏洞利用工具: Seay SVN漏洞利用工具服务器

二、添加网站urlsvn

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

修复

一、在web服务器配置文件中增长一段代码,过滤到.svn文件,返回404网站

nginx服务器:url

location ~ ^(.*)\/\.svn\/开发

{rem

return 404;源码

}

重启nginx

Apache服务器:

 

Order allow,deny

Deny from all

 

重启Apache

二、查找服务器上全部.svn隐藏文件夹,删除

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

find . -type d -name ".svn"|xargs rm -rf

rm -rf `find . -type d -name .svn`

find . -name ".svn" -type d | xargs rm -fr

find . -name ".svn" -type d | xargs -n1 rm -R

使用脚本删除

#!/bin/sh

cd /home/web/

find ./ -name ".svn" |xargs -n1 echo > /dev/null 2>&1

find ./ -name ".svn" -print0 | xargs -0 rm -fr

if [ $? -ne 0 ]; then

echo "remove .svn dirs failed!"

fi

以上文件保存为.sh

执行以后,会删除 /home/web目录及其子目录中 全部 .svn 隐藏文件夹

防护

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

相关文章
相关标签/搜索