文件泄露漏洞解析

一. 漏洞形成

源码泄露漏洞的形成原因很简单就是因为一些备份文件或者可以恢复源码的文件放在了外网中,用户可以访问,只要用户找到了这些文件的位置,就可以运用工具进行源码恢复。


二.源码泄露漏洞分类

1. .git/.hg文件泄露

.git/.hg在执行init初始化目录的时候会创建一个.git/.hg目录,包含了所有的git/hg存储何种操作对象。在管理员发布代码的时候,没有把.git/.hg目录删除,而是直接发布到了服务器目录中,那么我们就可以用这个文件进行恢复源码操作。
发现方法:通过目录扫描工具进行扫描,如果发现.git/.hg目录说明有该漏洞。
下图是用dirsearch扫描.git漏洞:

dirsearch用法:

1
python3 dirsearch.py -u url -e *

扫描到了.git目录,使用githack工具进行源码恢复:
1
python2 githack.py https://www.example.com/.git/


也可以使用dvcs-ripper工具:
1
rip-git.pl -v -u http://www.example.com/.git/

这样就可以将源码恢复了。 例题:BUUCTF [BJDCTF2020]Mark loves cat
对于.hg也是一样,都是先通过目录扫描工具,然后使用对应的工具进行源码恢复工作。
使用dvcs-ripper工具,用法为:
1
rip-hg.pl -v -u http://www.example.com/.hg/


2.DS_Store文件泄漏

形成原因:管理员没有把.ds_store文件删除。
扫描到漏洞利用目录:

1
http://www.example.com/.ds_store

使用dsstoreexp工具进行恢复:
1
python ds_store_exp.py http://www.example.com/.DS_Store

先用dirsearch扫描目录发现.DS_Store文件:

再使用ds_store_exp工具恢复源码:

例题:Bugku web sql注入2


3.文件备份泄露

这个漏洞是网站进行升级或者因为某种原因,管理员没有删除备份文件且备份文件没有设置权限,可以被下载下来。
例如:’.rar’,’.zip’,’.tar’,’.tar.bz2’,’.sql’,’.7z’,’.bak’,’.txt’,’.swp’,’index.php.bak’等
可以使用dirsearch扫描或者SourceLeakHacker都可以。


扫描完下载下来就可以了。
例题:bugku 备份是个好习惯;buuctf [ACTF2020 新生赛]BackupFile


4.SVN导致文件泄露

在SVN管理的过程中,会自动生成一个.svn的文件夹,包含了源代码信息,而如果管理员直接复制代码文件到Web服务器上,使得.svn文件同样暴露在外网环境下而没有清理。
同样使用扫描工具可以扫到,使用dvcs-ripper工具恢复

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

例题:SVN信息泄露漏洞分析(第1题)——墨者学院在线靶场


5.CVS泄漏

漏洞利用点:

1
2
http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构

取回源码命令:
1
bk clone http://url/name dir

这个命令的意思就是把远端一个名为name的repo clone到本地名为dir的目录下。

1
查看所有的改变的命令,转到download的目录:bk changes

6.Bazaar/bzr

工具:dvcs-ripper

1
rip-bzr.pl -v -u http://www.example.com/.bzr/


7.WEB-INF/web.xml泄露

WEB-INF是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
漏洞成因:
通常一些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; 或者其他

1
2
3
4
WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则. WEB-INF/database.properties : 数据库配置文件 
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)

例题:DDCTF 2018 Web Writeup


参考博客:
1
2

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×