Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2023-01060
- Vendor: 萬家鄉醬園股份有限公司
- Title: 萬家香Bypass WAF to SQL Injection
- Introduction: 攻擊者可利用該漏洞取得後端資料庫權限及完整資料(包含大量使用者個資或敏感性資料),同時也有機會對資料進行破壞或修改。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2023/12/27 01:08:19 : 新提交 (由 shnien 更新此狀態)
- 2023/12/27 01:11:25 : 新提交 (由 shnien 更新此狀態)
- 2023/12/27 01:14:03 : 新提交 (由 shnien 更新此狀態)
- 2023/12/27 01:18:51 : 新提交 (由 shnien 更新此狀態)
- 2023/12/27 01:19:03 : 新提交 (由 shnien 更新此狀態)
- 2023/12/27 01:21:39 : 新提交 (由 shnien 更新此狀態)
- 2023/12/27 10:27:05 : 新提交 (由 shnien 更新此狀態)
- 2023/12/29 10:43:56 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/01/18 16:23:00 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/01/18 16:23:01 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/03/11 03:00:04 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2023-01060
- 通報者:s52492001 (shnien)
- 風險:高
- 類型:資料庫注入攻擊 (SQL Injection)
參考資料
漏洞說明: OWASP - SQL Injection
https://www.owasp.org/index.php/SQL_Injection
漏洞說明: OWASP - Top 10 - 2017 A1 - Injection
https://www.owasp.org/index.php/Top_10-2017_A1-Injection
漏洞說明: CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
https://cwe.mitre.org/data/definitions/89.html
防護方式: OWASP - SQL Injection Prevention Cheat Sheet
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
相關網址
敘述
於問題網址之參數「P_ID」後方加上「' and '1'='1」,系統回傳正常頁面。
改成加上「' and '1'='2」,系統回傳異常頁面。
觀察此處系統對於兩種不同請求之回應狀況,判斷此處可能存在Boolean-Based SQL Injection。
嘗試以sqlmap輔助測試時,發現會觸發人機驗證機制。
觀察該機制之運作過程,發現只要於cookie中加入一屬性「cl-bypass-cache=yes」即可繞過該驗證。
繼續嘗試以sqlmap進行測試,發現系統回傳403,推測可能有WAF在進行防禦。
以wafw00f查詢,發現該網頁的確有WAF,廠牌為LiteSpeed。
觀察WAF的作動機制後,撰寫一tamper,目的為將「schema_name」、「INFORMATION_SCHEMA.SCHEMATA」這兩個關鍵詞加上內聯註釋,以避開WAF的濾除條件。
即schema_name => /!schema_name/
INFORMATION_SCHEMA.SCHEMATA => /!INFORMATION_SCHEMA.SCHEMATA/
再度以sqlmap進行測試,參數中引入剛才修改過cookie的封包,以及自行撰寫的tamper。
成功執行SQL Injection攻擊,查詢到資料庫名稱。
資料庫中可能含有後台管理之帳號密碼,或是其他機敏資訊。
例如這邊有找到該網頁的後台登入頁面,若真的在資料庫中找到帳密,則可任意從後台更改網頁內容,或獲取更多資訊。
更甚至可能讓攻擊者上傳惡意檔案,進一步造成RCE。
但這邊就不繼續往下測試了。
修補建議
網頁中雖有兩層防禦機制(人機驗證、WAF),但目前看來還是有方法可以繞過。
建議最根本的修補方式,還是要在網頁程式碼中讀取資料庫的部分,改用參數化查詢的方式來撰寫程式碼。