web常见源码泄露备忘录
背景
网上已经有非常多的资料了,写本文主要是经常在CTF中和web渗透测试时遇到,所以当作自己的备忘录记录一下
源码泄漏分类
.hg源码泄漏
hg
是类似于git
的一种分布式管理
漏洞成因:
hg init
的时候会生成.hg
(初始化)
fuzz:
1 | http://url/.hg/ |
漏洞利用:
工具:dvcs-ripper
1 | rip-hg.pl -v -u http://url/.hg |
.git源码泄漏
漏洞成因:
在运行git init
初始化代码库的时候,会在当前目录下面产生一个.git
的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git
这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。
fuzz:
1 | http://url/.git/config |
存在该页面,可以看到配置信息,说明存在该漏洞
漏洞利用:
工具:GitHack
1 | python GitHack.py http://url/.git/ |
工具:dvcs-ripper
1 | rip-hg.pl -v -u http://url/.git |
.DS_Store文件泄漏
漏洞成因:
在发布代码时未删除文件夹中隐藏的.DS_store
fuzz:
1 | http://url/.DS_Store |
漏洞利用:
工具:dsstoreexp
1 | python ds_store_exp.py http://url/.DS_Store |
编辑器文件泄露
vim文件泄露
非正常关闭vim编辑器(直接关闭终端、电脑断电等),都会生成一个用于备份缓冲区内容的临时文件.swp
文件。它记录了用户在非正常关闭vim编辑器之前未能及时保存的修改,用于文件恢复。并且多次意外退出并不会覆盖旧的.swp
文件,而是会生成一个新的,例如.swo
文件。
例如第一次产生一个.test.txt.swp
,再次意外退出后,将会产生名为.test.txt.swo
的交换文件;而第三次产生的交换文件则为.test.txt.swn
依此类推。
vim备份文件
默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~
的备份文件,某些情况下可以对其下载进行查看
例如:index.php
的备份文件则为index.php~
phpstorm
使用phpstorm
新建项目时,会生成一个.idea`
文件夹,这个文件夹有一个workspace.xml`,访问可以得到一些信息。
网站备份压缩文件
在网站的使用过程中,往往需要对网站中的文件进行修改、升级。此时就需要对网站整站或者其中某一页面进行备份。当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站web目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。
漏洞成因及危害:
该漏洞的成因主要有以下两种:
- 服务器管理员错误地将网站或者网页的备份文件放置到服务器web目录下。
- 编辑器在使用过程中自动保存的备份文件或者临时文件因为各种原因没有被删除而保存在web目录下。
fuzz
1 | .rar |
SVN泄露
fuzz:
1 | http://url/.svn/entries |
漏洞利用:
工具:dvcs-ripper
1 | rip-svn.pl -v -u http://www.example.com/.svn/ |
WEB-INF/web.xml泄露
WEB-INF是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml
文件对要访问的文件进行相应映射才能访问。
漏洞成因:
通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml
等文件能够被读取。
WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml
:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。/WEB-INF/classes/
:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中/WEB-INF/lib/
:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件/WEB-INF/src/
:源码目录,按照包名结构放置各个java文件。/WEB-INF/database.properties
:数据库配置文件
漏洞利用:
1 | http://url/WEB-INF/web.xml |
浏览器直接读取,推断class
文件的路径,最后直接class
文件,在通过反编译class
文件,得到网站源码。一般情况,jsp
引擎默认都是禁止访问WEB-INF
目录的
CVS泄漏
fuzz
1 | http://url/CVS/Root 返回根信息 |
漏洞利用
取回源码的命令,这个命令的意思就是把远端一个名为name的repo clone到本地名为dir的目录下。
1 | bk clone http://url/name dir |
查看所有的改变的命令,转到download的目录
1 | bk changes |
Bazaar/bzr
漏洞利用:
工具:dvcs-ripper
1 | rip-bzr.pl -v -u http://url/.bzr/ |