1. 极安网首页
  2. 网络安全技术

SVN信息泄露漏洞分析

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

漏洞简介

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

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

漏洞危害

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

SVN目录

SVN信息泄露漏洞分析-极安网
此图来自其他博客,分析下各个文件:

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

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

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

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

本文转载:TrueBW,不代表 极安网 立场,转载请注明出处:https://secvery.com/3463.html