源码泄露以及利用

工具包:https://github.com/Introspelliam/tools

.hg源码泄漏

原因

在使用 Mercurial( hg)进行版本控制时,hg init 命令会初始化一个新的 Mercurial 仓库。执行 hg init 后,Mercurial 会在当前目录中生成一个名为 .hg 的隐藏目录,这个目录是 Mercurial 用来存储版本控制信息的地方。

利用

工具:dvcs-ripper

使用:

1
rip-hg.pl -v -u http://www.am0s.com/.hg/

.git源码泄漏

原因

在运行git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。

利用

工具:githack和githacker

.DS_Store文件泄漏

原因

在发布代码时未删除文件夹中隐藏的.DS_store,被发现后,获取了敏感的文件名等信息

利用

工具:ds_store_exp

1
python ds_store_exp.py http://xxx/.DS_Store

网站备份压缩文件

原因

当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站web目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露

利用

常见后缀

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.rar

.zip

.7z

.tar.gz

.bak

.swp

.txt

.html

SVN导致文件泄露

原因

开发者在本地开发时,可能会将一些临时文件、配置文件或敏感信息(如密码、密钥等)不小心提交到 SVN 仓库中。即便开发者在后续的提交中删除了这些敏感文件,这些信息仍然可能通过查看 SVN 的历史记录来恢复。攻击者可以通过回溯历史提交,找到删除前的敏感数据

如果 SVN 仓库或 .svn 目录被放置在 Web 服务器的根目录或可访问的子目录中,且 Web 服务器配置不当,可能会导致外部用户通过浏览器访问这些目录,从而暴露代码和版本控制的历史记录

利用

工具:dvcs-ripper

使用

1
rip-svn.pl -v -u http://www.am0s.com/.svn/

工具:Seay-Svn

看工具包

WEB-INF/web.xml泄露

WEB-INF是Java的WEB应用的安全目录。

原因

通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。

利用方式

通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。

防护

一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,问题原因其实很简单,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(这样耦合性太高了),修改Nginx配置文件禁止访问WEB-INF目录就好了: location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他!

CVS泄漏

原因

在 CVS 中,所有版本管理的文件和元数据都会保存在一个名为 .cvsignore 的文件夹中。如果 Web 服务器配置错误,公开了包含 CVS 元数据的目录,攻击者可以通过访问这些目录来泄露仓库中的敏感信息。

利用

http://xxxxx/CVS/Root 返回根信息

http://xxxx/CVS/Entries 返回所有文件的结构

1
2
bk clone http://xxxxx/name dir#取回源码,这个命令的意思就是把远端一个名为name的repo clone到本地名为dir的目录下
bk changes#查看所有的改变,转到download的目录

Bazaar/bzr泄露

原理

换汤不换药

利用

工具:dvcs-ripper

使用:

1
rip-bzr.pl -v -u http://xxxxxxx/.bzr/