看案例的时候,看到了这个漏洞。总结一下。
svn 是源代码版本管理软件,造成svn源代码漏洞的主要原因是管理员操作不规范。
在使用svn管理本地代码的时候,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源码信息。
但是有的管理者在发布代码的时候,偷懒,不使用导出功能。而是直接复制代码文件夹到web服务器上。导致.svn隐藏文件夹暴露在外网环境中。
然后在看看.svn下的entries 文件。
这个文件是用于版本信息追踪的。从而会得到一些意想不到的收获。
举例:https://www.xxx.com/.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 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 隐藏文件夹