0x01 .git源码泄漏
漏洞成因: 在运行git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。
e.g. http://www.127.0.0.1/.git/config
漏洞利用工具:
1.GitHack
下载地址:https://github.com/lijiejie/GitHack
GitHack 工具使用说明:
python2 GitHack.py http://127.0.0.1/.git/
需要python2的运行环境
修复建议:
1、删除.git文件
2、通过apache/nginx来拒绝.git访问
0x02 .hg文件泄露
漏洞成因:
Mercurial 是一个 版本控制系统. 开发者可以用它来管理源代码.
hg在初始化代码库的时候,会在当前目录下面产生一个.hg的隐藏文件
e.g. http://www.127.0.0.1/.git/config
漏洞利用工具:
dvcs-ripper
下载地址 https://github.com/kost/dvcs-ripper
rip-hg.pl -v -u http://www.example.com/.hg/
修复建议:
删除.hg
0x03 svn源码泄露
漏洞成因:
SVN(subversion)是源代码版本管理软件。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。
但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,
黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。
http://127.0.0.1/.svn/entries
漏洞利用工具:
1、dvcs-ripper
下载地址:https://github.com/kost/dvcs-ripper
rip-svn.pl -v -u http://www.example.com/.svn/
2、Seay-Svn
下载地址:https://pan.baidu.com/s/1jGA98jG
0x04 cvs文件泄露
漏洞成因:
CVS是一个年代比较久远的版本控制系统, 通过它可以追踪源代码的历史变化记录。
但是因为功能比较简单, 而且不支持分支, 所以很早前就被上面提到的SVN替代了。CVS项目在初始化(cvs checkout project)的时候, 会在project目录下创建一个名为CVS的目录。
其中保存了各个文件的修改和commit记录. 通过此目录可以获取代码的历史版本. 其中两个关键文件为:CVS/Root和CVS/Entries, 分别记录了项目的根信息和所有文件的结构
http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构
取回源码的命令:
bk clone http://url/name dir
这个命令的意思就是把远端一个名为name的repo clone到本地名为dir的目录下。
0x05 .DS_Store文件泄露
.DS_Store是Mac下Finder用来保存文件/文件夹的数据文件,每个文件夹下对应一个。
如果开发/设计人员在发布代码时未删除文件夹中隐藏的.DS_store,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。
http://www.127.0.0.1/.ds_store
漏洞利用工具:
dsstoreexp
下载地址: https://github.com/lijiejie/ds_store_exp
修复建议:
删除.Ds_Store文件
0x06 网站备份压缩文件
漏洞成因: 在网站的使用过程中,往往需要对网站中的文件进行修改、升级。这时就需要对网站进行备份,当备份文件被网站管理员留在该网站目录下而且没有设置访问权限时,就有可能导致备份文件被下载,从而埋下安全隐患。
部分常见的网站备份文件后缀名:
.rar
.zip
.7z
.tar.gz
.bak
.swp
.txt
.html
部分常见的备份文件名:
0
www
back
backup
web
temp
data
website
新建文件夹
修复建议:
把备份文件删除或移出web根目录
0x07 WEB-INF泄露
WEB-INF是Java的WEB应用的安全目录。WEB-INF目录"包含了所有web应用会用到但是不处于web路径中的资源", 也就是说, WEB-INF目录下的内容是不属于公开页面的。
web应用可以通过getResource等API在servlet的上下文中访问到这些资源。
WEB-INF目录:
WEB-INF/web.xml
web应用程序配置文件,描述了servlet和其他的应用组件配置及命名规则。
WEB-INF/classes
包含了站点所有用的class文件,包括servlet class和非servlet class
WEB-INF/lib
存放web应用需要的JAR文件
WEB-INF/src
源码目录,按照包名结构放置各个java文件
WEB-INF/database.properties
数据库配置文件
WEB-INF/tags
存放了自定义标签文件
META-INF
相当于一个信息包。
漏洞成因:
通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。
漏洞利用:
通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。
修复建议:
发布前确认WEB-INF目录是禁止访问的, 或者在server设置好对于的过滤规则。
0x08 .bzr源码泄露
漏洞成因:
bzr是个版本控制工具, bzr在初始化项目时(bzr init/init-repo), 也会在项目根目录产生名为.bzr的隐藏目录。
e.g. http://www.127.0.0.1/.bzr/
漏洞利用工具:
dvcs-ripper
下载地址 https://github.com/kost/dvcs-ripper
命令:
rip-bzr.pl -v -u http://127.0.0.1/.bzr/
修复建议:
删除.bzr文件