Web安全——SVN源码泄露整站下载

风险漏洞

SVN源码泄露

SVN(subversion)是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范。“在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。”(可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息)更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。

验证结果

漏洞情况

在此文件夹中找到了Subversion元数据目录(.svn)。 攻击者可以通过请求流行的版本控制工具Subversion创建的隐藏元数据目录来提取敏感信息。 元数据目录用于开发目的,以便在将一组源代码提交回中央存储库之前跟踪对一组源代码的开发更改(反之亦然)。 当代码从存储库滚动到活动服务器时,应该将其作为导出而不是本地工作副本来完成,因此会出现此问题。
验证地址或请求:http://www..com/.svn/entries
验证截图
Goby扫描IP(
...**)发现SVN漏洞

在浏览器端进行验证,发现漏洞存在

使用Seay-SVN工具进行连接

可以浏览网站的源代码

发现程序文件和数据如下

整站下载如下

证书文件如下

apiclient_key.pem:

rootca.pem:

apiclient_cert.pem:

系统漏洞危害及整改建议

  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 ".s
以上文件保存为.sh
执行之后,会删除 /home/web目录及其子目录中 所有 .svn 隐藏文件夹

  1. 开发人员在使用SVN时,严格使用导出功能。禁止直接复制代码。
posted @ 2021-09-05 22:56  Weber·Bon  阅读(354)  评论(0编辑  收藏  举报