0x01 前言
源码泄露在ctf中经常会出现,特此总结一下
0x02 web源码泄露分类
.git泄露
漏洞成因:
在运行git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。
漏洞利用:
工具:
python Githack.py http://xxx.com/.git/
rip-git.pl -v -u http://www.example.com/.git/
swp文件泄露
漏洞成因:
swp即swap文件,在编辑文件时产生的临时文件,它时隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留。
文件名格式:.filename.swp(有时候也可能是swo)
漏洞利用:
直接按照文件名访问.swp文件,下载回来后再linux中使用vim -r .filename.swp
来恢复源码
.hg泄露
漏洞成因:
hg init的时候会生成.hg文件
如:http://www.xxx.com/.hg/
漏洞利用:
工具:dvcs-ripper
rip-hg.pl -v -u http://www.example.com/.hg/
通用格式:rip-xxx.pl -v -u http://www.example.com/.xx/
.DS_Store文件泄露
漏洞成因:
在发布代码时未删除文件夹中隐藏的.DS_store,被发现后,可以获取敏感的文件名等信息。
漏洞利用:
工具:dsstoreexp
python ds_store_exp.py http://www.example.com/.DS_Store
网站备份压缩文件
漏洞成因:
- 服务器管理员错误地将网站或者网页的备份文件放置到服务器web目录下。
- 编辑器在使用过程中自动保存的备份文件或者临时文件因为各种原因没有被删除而保存在web目录下。
常见备份文件后缀
- .rar
- .zip
- .7z
- .tar.gz
- .bak
- .swp
- .txt
- .html
- .php~
- .php.
漏洞利用
工具:dirsearch
python3 dirsearch -u "xxx" -e php,rar,zip,txt
SVN导致文件泄露
漏洞成因:
Subversion,简称SVN,是一个开放源代码的版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。
Subversion使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库,另一端是Subversion的客户端程序,管理着受控数据的一部分在本地的映射(称为“工作副本”)。在这两端之间,是通过各种仓库存取层(Repository Access,简称RA)的多条通道进行访问的。这些通道中,可以通过不同的网络协议,例如HTTP、SSH等,或本地文件的方式来对仓库进行操作。
漏洞利用
工具:dvcs-ripper
rip-svn.pl -v -u http://www.example.com/.svn/
WEB-INF/web.xml泄露
WEB-INF简介及漏洞成因
WEB-INF是java的web应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对其进行相应的映射才能访问。Tomcat默认禁止这个目录,而Nginx在映射静态文件时,把WEB-INF目录映射进去,而又没有做Nginx的相关安全配置(或Nginx自身缺陷),导致可以通过Nginx访问到Tomcat的WEB-INF目录。
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:数据库配置文件
- META-INF:相当于一个信息包
漏洞利用
直接手工访问/web.xml文件,通过是否回显来判断是否可访问该文件。找到web.xml文件后,根据命名规则推断class文件的路径,最后直接访问class文件,或通过反编译等得到网站源码。
如:com.wm.ctf.FlagController 推断的文件路径为
WEB-INF/classes/com/wm/ctf/FlagController.class
CVS泄露
###漏洞利用:
直接访问来测试
http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构
取回源码的命令(liunx下)
bk clone http://url/aaa bbb
意思是把远端一个名为aaa的repo仓库clone到本地名为bbb的目录下
查看所有的改变的命令(转到downloads目录下)
bk changes
Bazaar/bzr泄露
漏洞利用:
工具:dvcs-ripper
rip-bzr.pl -v -u http://www.example.com/.bzr/