Web安全-SVN信息泄露漏洞分析

简介: Web安全-SVN信息泄露漏洞分析

文章目录
漏洞简介
漏洞复现
漏洞检测
脚本检测
漏洞修复
漏洞简介
SVN(subversion)是程序员常用的源代码版本管理软件。在使用 SVN 管理本地代码过程中,使用 svn checkout 功能来更新代码时,项目目录下会自动生成隐藏的.svn文件夹(Linux上用 ls 命令看不到,要用 ls -al 命令),其中包含重要的源代码信息。

造成SVN源代码漏洞的主要原因是管理员操作不规范,一些网站管理员在发布代码时,不愿意使用“导出”功能,而是直接复制代码文件夹到WEB服务器上,这就使得.svn隐藏文件夹被暴露于外网环境,黑客对此可进一步利用:

可以利用其中包含的用于版本信息追踪的 entries 文件(.svn/entries 文件),获取到服务器源码、svn服务器账号密码等信息;
可以利用 wc.db 数据库文件(.svn/wc.db 文件),获取到一些数据库信息;
更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,则可以直接获得文件源代码。
漏洞危害

一旦网站出现SVN漏洞,其危害远比SQL注入等其它常见网站漏洞更为致命,因为黑客获取到网站源代码后,一方面是掠夺了网站的技术知识资产,另一方面,黑客还可通过源代码分析其它安全漏洞,从而对网站服务器及用户数据造成持续威胁(git同理)。

SVN目录

此图来自其他博客,分析下各个文件:

entries 和 format 文件里面,只有个数字12,没什么参考意义;
wc.db-journal 和 tmp 文件都是空的,也没什么价值;
pristine 文件夹里有若干个 .svn-base 文件,看来这个文件夹是整个项目文件的一份备份,只是一堆哈希过的文件名,似乎有点难下手啊;
wc.db文件:用SQLiteStudio软件打开 wc.db文件,可以看到 NODES 表,历这个表里的每一行,就可以下载到整个项目里的代码了,而且还能得到对应的真实文件名。

另外补充一下SVN不同版本的一下差异:

1、在 svn1.6 及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base ;

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

漏洞复现
下面利用墨者学院现成的靶场环境进行演示:

访问靶场环境如下:

漏洞检测
1、最简单的检测方法是直接在网站路径后面 + /.svn/entries,存在漏洞会显示数字“12”,如下图所示:

2、实际工作过程中,可以使用 dirsearch 进行路径扫描:

3、下载并分析 wc.db 文件:

用 SQLiteStudio 软件打开 wc.db文件,我们看到 NODES 表,遍历这个表里的每一行,就可以下载到整个项目里的代码了,而且还能得到对应的真实文件名:

除了NODES表以外,还可以看到一个 REPOSITORY表,里面存储了svn的项目路径和 uuid,如果没有做访问IP限制的话,你可以直接使用此信息取得此项目的SVN权限(下载、提交等)…

脚本检测
Github脚本下载:svnExploit:

1、检测是否存在漏洞 python SvnExploit.py -u http://xxxxxx.com/.svn

2、下载网站源码:python SvnExploit.py -u http://xxxxxx.com/.svn --dump :

3、此时可以在脚本文件的目录下找到网站源码文件:

漏洞修复
1、不要使用svn checkout和svn up更新服务器上的代码,使用svn export(导出)功能代替;

2、服务器软件(Nginx、apache、tomcat、IIS等)设置目录权限,禁止访问.svn目录;

3、删除 /.svn 文件夹,注意,不只svn,git 或者其他版本管理软件也存在类似的问题。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_39190897/article/details/109306693

目录
相关文章
|
1月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
89 1
|
2月前
|
安全 关系型数据库 MySQL
Web安全-条件竞争漏洞
Web安全-条件竞争漏洞
48 0
|
2月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
149 8
|
2月前
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
130 3
|
2月前
|
JSON 安全 JavaScript
Web安全-JQuery框架XSS漏洞浅析
Web安全-JQuery框架XSS漏洞浅析
388 2
|
2月前
|
安全 搜索推荐 应用服务中间件
Web安全-目录遍历漏洞
Web安全-目录遍历漏洞
78 2
|
2月前
|
XML JSON 安全
Web安全-XXE漏洞
Web安全-XXE漏洞
24 1
|
6月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
232 0
|
6月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SVN服务器搭建教程】
现在,你已经成功在Ubuntu系统上搭建了SVN服务器。其他用户可以通过SVN客户端连接到你的SVN服务器,进行代码版本管理和协作开发。注意,为了安全起见,建议配置SSL加密以保护数据传输。
81 1
|
6月前
|
Apache 项目管理 数据安全/隐私保护
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
129 0