在阅读了各类文章之后发现,其实针对各类漏洞的自动化挖掘都或多或少已经有一些脚本,但是原理和利用的工具都有所差异,因此决定自己动手实现。
初步的设想是,依托于 redis 数据库的任务队列特性,自动化进行子域名挖掘,参数挖掘,js 文件泄露,漏洞检测等等功能,并进行消息的即时推送。
LFI 漏洞
本地文件包含漏洞(Local File Inclusion)是一种常见的 web 安全漏洞。当应用程序将用户输入的数据作为文件名包含(include)到服务器端的文件中时,由于缺乏对输入数据的适当验证,攻击者可以包含服务器上的其他文件,甚至是敏感文件。一般会造成任意文件读取甚至远程代码执行。
自动化流程
子域名挖掘
子域名挖掘的工具很多,下面列举部分常见的:
•https://github.com/tomnomnom/assetfinder•https://github.com/YashGoti/crtsh•https://github.com/gwen001/github-subdomains•https://github.com/owasp-amass/amass•https://github.com/tomnomnom/assetfinder•https://github.com/aboul3la/Sublist3r•... 这部分尽量使用尽可能多的工具,保证收集到的子域名尽量全面。所有工具跑出来的结果放到一个文件里,进行去重处理。
cat domains | assetfinder -subs-only
subfinder -d vulnweb.com -o results.txt
...
参数挖掘
在获取到子域名之后,对每个域名进行参数的挖掘,这部分为了提高效率,需要先进行判活,再对相似的站点进行过滤等等,后面会单独写一篇文章讨论信息收集(子域名挖掘和参数挖掘)的内容。
这里利用 paramspider 工具:
https://github.com/devanshbatham/ParamSpider
paramspider -d [domain] -o results.txt
结果如下:
FFUF
收集完参数之后,用 FFUF 进行探测。
ffuf/ffuf: Fast web fuzzer written in Go (github.com)[1]
for URL in $(<results.txt); do (ffuf -u "${URL}" -c -w LFI-Jhaddix.txt -mc 200 -ac -sa -t 20 -or -od ffuf_lfi_results); done
其中:•-mc 200:只匹配 HTTP 状态码为200的响应。•-ac:自动调整请求的并发数。•-sa:禁用自动大小写变异。•-t 20:设置请求的超时时间为20秒。•-or:将结果输出到屏幕。•-od :将结果输出到指定的目录。直接用 bash 命令,对 paramspider 的结果进行遍历,用到的字典为 seclist 中的 LFI-Jhaddix.txt: https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/LFI/LFI-Jhaddix.txt
grep
在上一步之后,生成的文件内容如下:
再通过 grep 命令筛选敏感内容即可。
grep -Ril "root:x" ffuf_lfi_results/ | tee VULNERABLE.txt
•-R:以递归的方式搜索所有子目录。•-i:在搜索时忽略大小写•-l :只输出包含匹配字符串的文件名,而不输出匹配行的内容。
如果grep的字符串为"root:x",需要按需调整字典内容,保证其与response相匹配。
References
[1]
ffuf/ffuf: Fast web fuzzer written in Go (github.com): https://github.com/ffuf/ffuf
原文始发于微信公众号(Crush Sec):Bugbounty Automation 01——LFI自动化
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论