渗透-svn源代码泄露漏洞综合利用
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
很多网站都使用了svn版本控制系统,但是很多网站安全意识不足,导致svn残留,因此我们可以使用这个工具来下载网站源码。
一旦网站出现SVN漏洞,其危害远比SQL注入等其它常见网站漏洞更为致命,因为黑客获取到网站源代码后,一方面是掠夺了网站的技术知识资产,另一方面,黑客还可通过源代码分析其它安全漏洞,从而对网站服务器及用户数据造成持续威胁。
更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
一、.svn 目录
使用svn checkout后,项目目录下会生成隐藏的.svn文件夹(Linux上用ls命令看不到,要用ls -al命令)。
svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base
svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份
下面我以svn1.7及之后版本为例,讲解如何利用此漏洞下载整个网站源代码
二、分析.svn目录内容

我们看到的是一个名为 wc.db 的文件,用文本编辑器打开看到第一行有写 SQLite format 3 ,可以知道,这是一个SQLite数据库的文件,后面包含的信息,文本编辑器就先不看了。我们下载一个正经的SQLite查看软件来慢慢看--SQLite Studio 。
在软件下载完之前,再看看此文件夹里的其他内容:
entries和format文件里面,只有个数字12,没什么参考意义;wc.db-journal文件是空的,也没什么价值;tmp目录里面也是空的;
pristine里面内容就多了,一堆00~ff的文件夹,每个文件夹里有若干个 .svn-base文件;用文本编辑器打开看一下,有些文件是代码,有些文件是乱码(大概是图片文件吧)。看来这个文件夹是整个项目文件的一份备份,只是一堆哈希过的文件名,似乎有点难下手啊。
毕竟是无规律的这一堆文件名,40位的哈希(36^40)这样的暴力穷举下载的话,即便是N多线程,时间成本上也是非常大的啊。而且得到是一堆无序文件,要整理成原来代码项目的样子,还得费好一阵功夫。
这样看来,是不是说.svn漏洞利用的价值很少?然而非也,少年,还记得刚才说的 wc.db 文件吗。现在SQLite Studio软件应该下载好了,我们就打开看看这里有什么来头吧
三、wc.db文件,有你想要的一切
用SQLiteStudio软件打开 wc.db文件,我们看到 NODES 表,看到 local relpath栏 和 checksum栏,明白了吗(滑稽.jpg)。checksum栏里的$sha1$后面的那串数字就是pristine文件夹里的那堆文件的文件名,pristine里的00~ff文件夹,其实是文件名的前两位,而local relpath就是原始的文件名。
现在,我们根据这个 wc.db 的NODES表,遍历这个表里的每一行,就可以下载到整个项目里的代码了,而且还能得到对应的真实文件名,可谓岂不快哉?
(下面截图为我自己的项目,仅作参考)

除了NODES表以外,还可以看到一个 REPOSITORY表,里面存储了svn的项目路径和 uuid,如果没有做访问IP限制的话,你可以直接使用此信息取得此项目的SVN权限(下载、提交等)…
四、漏洞修复
方案一、不要使用svn checkout和svn up更新服务器上的代码,使用svn export(导出)功能代替。
方案二、服务器软件(Nginx、apache、tomcat、IIS等)设置目录权限,禁止访问.svn目录
不只svn,git或者其他版本管理软件也存在类似的问题
渗透-svn源代码泄露漏洞综合利用的更多相关文章
- SVN源代码泄露
		
1. 联想b2b站SVN源代码泄露 开启Firefox,输入:b2b.thinkworldshop.com.cn/.svn/entries Webserver返回如下信息:
 - SVN/GIT源代码泄露
		
造成SVN源代码漏洞的主要原因是管理员操作不规范.在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息.但一些网站管理员在发布代码时,不愿意使用‘导出’功能 ...
 - SVN源码泄露漏洞
		
SVN(subversion)是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范.“在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息 ...
 - 【阿里聚安全·安全周刊】苹果证实 iOS 源代码泄露|英国黑客赢下官司
		
本周的七个关键词:iOS 源代码泄露 丨 阿里软件供应链安全大赛 丨 个人数据安全 丨 Android P 丨 黑客赢下官司 丨 备忘录泄露美国安全局机密 丨 机器学习系统 -1 ...
 - HackingTeam重磅炸弹: 估值超1000万美金带有军火交易性质的木马病毒以及远控源代码泄露
		
[简单介绍] 经常使用网名: 猪头三 出生日期: 1981.XX.XX 个人站点: http://www.x86asm.com QQ交流: 643439947 编程生涯: 2001年~至今[共14年] ...
 - IIS短文件名泄露漏洞危害及防范方法
		
危害级别:轻微 IIS短文件名泄露漏洞 WASC Threat Classification 描述: Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件 ...
 - WordPress Backdoor未授权访问漏洞和信息泄露漏洞
		
漏洞名称: WordPress Backdoor未授权访问漏洞和信息泄露漏洞 CNNVD编号: CNNVD-201312-497 发布时间: 2013-12-27 更新时间: 2013-12-27 危 ...
 - Linux kernel 内存泄露本地信息泄露漏洞
		
漏洞名称: Linux kernel 内存泄露本地信息泄露漏洞 CNNVD编号: CNNVD-201311-467 发布时间: 2013-12-06 更新时间: 2013-12-06 危害等级: ...
 - Linux Kernel ‘/net/socket.c’本地信息泄露漏洞
		
漏洞名称: Linux Kernel ‘/net/socket.c’本地信息泄露漏洞 CNNVD编号: CNNVD-201312-037 发布时间: 2013-12-04 更新时间: 2013-12- ...
 
随机推荐
- android小工具-系统音量管理器
			
简介:调节系统音量的小工具,能够快捷的调节系统铃声,媒体音乐.闹钟和通话声音.你可能会想,手机自带的音量键还不够快捷吗?还得写个程序?首先,用音量键调音只能调节一种声音,像闹钟这种声音不能直接调.其次 ...
 - pytho的traceback的解读
			
写 Python 代码的时候,当代码中出现错误,会在输出的时候打印 Traceback 错误信息,很多初学者看到那一堆错误信息,往往都会处于懵逼状态,脑中总会冒出一句,这都是些啥玩意.如果你是第一次 ...
 - 装系统-------     了解常用的启动方式以及如何进入bios
			
1.从硬盘启动:这种方式提供了最简单的维护解决方案,其基本原理就是增加一个系统的开机启动项,每次开机的时候您都可以选择是进入本地系统还是进入PE. 安装程序并不将PE的启动项作为默认启动项,而是提供一 ...
 - DOM之事件(二)
			
今天详细讲解JavaScript中的常用事件类型和功能. 一 鼠标事件 1, click:点击事件 等同于mousedown+mouseup,不管这两个事件间隔多久,都会触发一次click事件. 2 ...
 - MyBatis返给前端正确的时间格式
			
前台获取位时间戳,后端解决办法之一 问题描述:前端获取后台接口返回的数据,时间是long类型的时间戳而不是时间类型2019-09-25 17:07:32 项目: JAVA web 工具:eclipse ...
 - html使用空格的替代符号
			
替代符号就是在需要显示空格的地方加入替代符号,这些符号会被浏览器解释为空格显示. 空格的替代符号有以下几种: 名称 编号 描述 不断行的空白(1个字符宽度) 半个空白(1个字符宽度) ...
 - filebeat的@timestamp字段时区问题
			
最近使用filebeat进行日志采集,并通过logstash对日志进行格式化处理. filebeat采集数据后,会给日志增加字段@timestamp,@timestamp是UTC时间,查看日志很不方便 ...
 - 百万it资源百度网盘链接分享
			
自己大量时间整理的优质资源,容量达3000多G,有需要的朋友可以微我,资源截图: 面试资料: 书籍类: 视频类: 以上只是部分资源,想要资源的亲请加微信咨询. 欢迎加微信咨询,请备注资源: 独乐乐不 ...
 - idea必备快捷键
			
ctrl + F: 在当前文件进行文本查找 ctrl + R: 在当前文件进行文本的替换 ctrl + Z: 撤销操作 ctrl + Y:删除光所在的行 或者选中的行 ctrl + D: 复制光标所在 ...
 - 【Python】机器学习之单变量线性回归练习(计算Cost Function)
			
注:练习来自于吴恩达机器学习 翻译后的题目: 你是一个餐厅的老板,你想在其他城市开分店,所以你得到了一些数据(数据在本文最下方),数据中包括不同的城市人口数和该城市带来的利润.第一列是城市的人口数,第 ...