如何在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=//?.?>script>
于是,小哥很愉快的向Bugcrowd提交了漏洞報告,但是廠商卻在沒有通知他的情況下默默地修復了漏洞,并將漏洞報告標記為 N/A(不適用)。
骨哥畫外音:原來老外也有這種騷操作~
經歷了這件事之后,白帽小哥非常沮喪和失望,甚至產生了負面情緒,他甚至開始懷疑他的技能以及個人職業生涯,但最終小哥決定相信自己和這3 年來的工作經驗,所以他帶著自己開發的工具重回到該目標,這次他使用了自己開發的自定義爬蟲腳本工具,并在 waybackurl 腳本的幫助下,提取到了超過 5000,000個 abc.com 的所有子域中的站點信息,使用的命令是:
cat host.txt | crawler | tee -a endpoint.txtcat 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漏洞報告尚待處理中。
