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

目录
相关文章
|
2天前
|
JSON 安全 JavaScript
Web安全-JQuery框架XSS漏洞浅析
Web安全-JQuery框架XSS漏洞浅析
16 2
|
4天前
|
安全 搜索推荐 应用服务中间件
Web安全-目录遍历漏洞
Web安全-目录遍历漏洞
16 2
|
7天前
|
安全 关系型数据库 MySQL
Web安全-任意文件下载漏洞
Web安全-任意文件下载漏洞
27 5
|
4天前
|
XML JSON 安全
Web安全-XXE漏洞
Web安全-XXE漏洞
11 1
|
8天前
|
开发框架 安全 .NET
Web安全-文件上传漏洞与WAF绕过
Web安全-文件上传漏洞与WAF绕过
19 4
|
8天前
|
编解码 安全 生物认证
|
2天前
|
安全 关系型数据库 MySQL
Web安全-条件竞争漏洞
Web安全-条件竞争漏洞
8 0
|
26天前
|
数据库 开发者 Python
web应用开发
【9月更文挑战第1天】web应用开发
36 1
|
14天前
|
数据可视化 图形学 UED
只需四步,轻松开发三维模型Web应用
为了让用户更方便地应用三维模型,阿里云DataV提供了一套完整的三维模型Web模型开发方案,包括三维模型托管、应用开发、交互开发、应用分发等完整功能。只需69.3元/年,就能体验三维模型Web应用开发功能!
36 8
只需四步,轻松开发三维模型Web应用
|
4天前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
27 6