首先,介绍一下,SVN是什么。SVN是一个开放源代码的版本控制系统,。它是集中式版本管理,用户将文件提交到服务器。当然用户也可以根据需要下载后修改指定版本的文件,然后再提交到服务器。 在我的理解中,SVN在这一过程中充当的,类似于一个媒介,也可以理解为一个简易的处理交换库。它提供的中央仓库可以用来来存储项目的文件和历史记录,并允许多个开发者通过客户端软件与该仓库进行交互。开发者可以从仓库检出项目的副本到本地工作区,在本地进行修改、添加、删除等操作,然后将这些变更提交到这个仓库中。更加详细的可以去看这个大佬的博客。(具体使用,我也不太了解,我也还没有用过SVN),反正我的理解,我感觉这个SVN有点像一个开放式的云平台,只是功能比较局限化和专一化,因为他们的本质我感觉都是,文件被储存到了一个不属于本地电脑的虚拟平台上,然后哪个用户需要,再分别发送给他。
然后是SVN漏洞产生的原理。当SVN作为源代码本本管理软件,使用SVN管理本地代码过程中,会生成一个名为.svn的隐藏文件夹,其中包含重要的源码信息。意思就是说,它在网站本地有一个文件源代码的备份文件被暴露在外网。SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。然后发生这种情况的大多数原因是开发人员在使用SVN时,没有严格使用导出功能,而是直接复制代码。这里解释一下网站源码导出和直接复制粘贴有什么区别。
接着是我觉得检测该网页是否存在SVN泄露的方法:
1.在url后加/.svn/all-wcprops;
2.使用工具直接扫后台。
接下来就是实操(题太少了,以ctfhub上的题为例)
因为这里题目已经给了提示,所以,我们直接打开dvcs-ripper(需要配置perl环境),使用rip-svn.pl模块
将泄露的文件下载到本地目录中
查看(注意,这里需要使用ls -al命令,因为.svn是隐藏文件),也可以用tree命令(需提前下载安装,后面会有)
进入.svn文件,查看内容
(这里因为忘记截图了,所以给出tree命令的图来凑合看看)
因为题目已经给提示在服务端旧版本源代码里面(不过通过看tree命令也可以看出来实际上,只有这个分支有我们需要的信息)
然后就是常规的命令,来分别查看内容
发现有一个是网页的前端源码
后面两个文件打开查看都是flag
然后这个是关于这个工具的功能及使用
纯小白,如有错误,欢迎纠正。