SVN、Git 源码泄露

Posted by JenI on 2016-11-01 00:00:00+08:00

前言

在之前的博文中提到过Github,它是目前为止最先进的分布式版本控制系统,与它同样著名的是SVN,全名Subversion,它和Github一样是源代码管理系统和版本控制软件,只不过它并不是分布式的,而是集中式的。为了方便开发和管理,大部分的开发者或团体都会使用此类版本控制系统。正常来说,使用这类版本控制系统不会出现神马问题,但是由于一些使用者的疏忽或偷懒,造成了源码的泄露。

泄露原因

为什么说是由于疏忽或偷懒呢。我们首先来看下这类版本控制系统的一个特点,我以 Github 为例。如果你要使用 Git 的话首先要在本地使用git init命令创建版本库,命令执行完成后,目录下回出现一个隐藏文件夹,文件夹名为 .git ,这个目录是 Git 用来跟踪管理版本库的,里面存放了所提交的文档索引内容,Git 可以根据该文件夹内的内容对其所管理的文档进行内容跟踪,从而实现版本控制。讲到这里你可能已经想到了,如果我们能得到这个 .git 文件夹,就可以利用 .git 文件夹内的文件,还原重建工程源代码,这也就是源码会泄露的原因。但是一般来说,正常的提交部署操作并不会将这个文件夹部署到线上环境,如果线上环境存在这个文件夹,大多是因为开发人员进行了错误的配置,或者是直接复制了工程的整个文件夹到服务器。SVN也是一样的道理,SVN的本地存在一个 .svn 文件,一旦暴露在外网环境,同样可以借助里面包含的文件,还原出服务器源码、SVN服务器账号密码等信息。

利用工具

针对这些文件泄露的利用工具网上有很多,我在这里提供两个

针对 SVN 的利用工具,工具来源:Seay

百度网盘: 传送门 | 密码:uk8a

针对 Git 的利用工具,工具来源:李劼杰的博客

源码地址: 传送门

总结

对于这种文件泄露的漏洞,最好的解决方法就是严格要求部署方式,只要管理员的操作符合规范,就不会出现源码泄露的问题。当然,也可以设置对提交的文件进行过滤,以防止误操作。


作者:   JenI   转载请注明出处,谢谢


Comments !