實戰 | 記一次授權令牌中SQL注入漏洞挖掘?
記一次授權令牌中SQL注入漏洞挖掘

今天在這篇文章中,我將分享一篇關于使用授權Header(Authorization Headers token)的 SQL 注入的文章。
Authorization Headers token的一些介紹,
=> 授權令牌由服務器生成和簽名,用于通過唯一令牌驗證用戶。
=> 登錄成功后,服務器會發送一個授權令牌,Web 開發者通常會將其存儲在瀏覽器的本地存儲或會話存儲中。
=> 現代網站使用 JWT(JSON Web 令牌)進行用戶授權。這并不意味著每個授權令牌都是 JWT。這取決于網站使用的后端和框架,
滲透過程
我是一個季節性的 Bug 賞金獵人。我嘗試通過google dorks搜索一些私人的bug賞金計劃,并隨機選擇了一個程序進行狩獵。
當我從主要目標開始時,我沒有做像子域枚舉或任何 Dorking 這樣的基本偵察。
對我來說,這是平凡的一天。我剛剛啟動了 BurpSuite并打開了目標站點。根據公司政策,我不能透露目標。
在 Wappalyzer 插件的幫助下,我注意到目標在 PHP 上運行。
對我來說,PHP 本質上是易受攻擊的。作為一名 Web 開發人員,我有豐富的 PHP 構建網站和修復漏洞的經驗。
在攻擊目標時,我會在偵察過程的初始階段對目錄進行暴力破解并檢查 robots.txt 文件。
我使用 Dirsearch 查找隱藏目錄,但沒有運氣。除了管理頁面,我沒有得到任何可疑的東西。
我嘗試通過訪問 target/admin/ 打開管理頁面
但是沒有成功,它會引發錯誤403 Forbidden

我并沒有太快放棄,再次嘗試使用Dirsearch 在管理頁面內進行 Fuzz。這次活動頁面收到了200狀態碼。
沒有任何延遲,我已經打開了頁面 www.target.com/admin/events/
我注意到這個頁面是一個普通的登錄頁面,它有兩種登錄方式,一種用于用戶,另一種用于超級管理員
發現SQL注入
正如我所說,登錄頁面有兩個鏈接,一個用于用戶,另一個用于管理員,我選擇了第一個,并將我重定向到
www.target.com/admin/events/?classic_login=true

它彈出用戶名和密碼,我開始提供錯誤的憑據并觀察服務器的響應,測試了一段時間后,我提供的用戶名和密碼為1'
幸運的是,它出現了SQL報錯。

我試圖重現它,但它不起作用,并且登錄彈出窗口完全消失了。
即使刷新頁面后,錯誤消息也會顯示在那里,因為我認為這可能是一些后端錯誤。
我查看了 Burp代理歷史記錄,發現沒有發送常規的 POST 表單數據或 JSON 數據。
我有一段時間空白,后來在隱身模式下打開了鏈接,然后出現了用于登錄的彈出窗口。再次觀察請求和響應。
后來,我注意到帶有令牌的 Header Value Authorization。

作為一名 Web 開發人員,我知道授權令牌是如何工作的,并且我對 PHP、MERN 堆棧和一些 Django 框架有很好的了解。我可以很容易地猜到開發人員使用的標記化
Authorization: Basic Base64Values
您可能經常在 Web 應用程序中看到此 Header。
專業提示:在后端,在大多數情況下,Bearer 被忽略,開發人員將令牌與發行的令牌匹配。
如果那是 JWT,那么開發人員通常會對其進行解碼,而不是驗證這就是不正確的訪問控制、帳戶接管發生的地方。
我已將請求發送到Repeater,選擇了令牌并使用 Burp 解碼器對其進行解碼,因為我通過長度和性質猜測了加密類型。它不是 JWT,而是 1':1' 的 base64 值
我很快想起了 Sqlmap 工具,捕獲了整個請求,并將其保存到一個文本文件中。
并嘗試運行sqlmap,但問題出現在base64編碼。雖然 sqlmap 支持 base64 編碼,但場景是值之間有一個冒號 :。
因為應用程序的行為如下
它接受用戶名和密碼,并使用 base64 對值進行編碼,其中用:分隔
雖然我擅長手動 SQL 注入利用,但有一種 base64 編碼的實時模式,并在轉發器中應用有效負載。為此,我試圖找到目標的列數。
并將用戶名和密碼的payload:
1' Order By 1 — -:1' Order By 1 — -
Base64后 Auth的payload如下。
Authorization: Basic MScgT3JkZXIgQnkgMS0tIC06MScgT3JkZXIgQnkgMS0tIC0=
base64 編碼發送,無 SQL 錯誤,顯示常規未授權錯誤
試圖增加這些列,但拋出錯誤。我知道只有一列并嘗試注入聯合語句。
注入payload:
1' Union Select 1 — -:1' Union Select 1 — -
編碼后
Authorization: Basic MScgVW5pb24gU2VsZWN0IDEtLSAtOjEnIFVuaW9uIFNlbGVjdCAxLS0gLQ==
我已成功登錄管理面板并能夠修改內容

下面是沒有打碼的POC演示

文章來源:HACK學習呀