Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2025-00627
- Vendor: 應安有限公司
- Title: 應安有限公司 SQLi 注入漏洞
- Introduction: SQLi 注入漏洞
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2025/06/26 13:06:13 : 新提交 (由 Elvis 更新此狀態)
- 2025/06/26 23:29:15 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2025/07/01 17:47:29 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2025/07/01 17:47:29 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2025/08/26 03:00:02 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2025-00627
- 通報者:summer78315 (Elvis)
- 風險:高
- 類型:資料庫注入攻擊 (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
相關網址
敘述
一、初步測試:XSS 嘗試/輸入長度限制
目的:確認「車牌號」參數是否有反射型 XSS
操作:在 web 表單的「車牌號」欄位輸入:
"><script>alert(1)</script>
結果:前端輸入框只允許 7 字元,立即被截斷(無法插入完整 <script>)。
結論:前端對長度有限制,但不能排除後端沒有做同樣檢查(可繞過)。
二、繞過前端限制:Burp Suite 攔截與修改請求
攔截請求
在 Burp Proxy 介面開啟攔截,於「查詢」動作送出時抓到完整 POST。
送到 Repeater
右鍵 → Send to Repeater,取得包含 VIEWSTATE、EVENTVALIDATION 等 ASP.NET 隱藏欄位的原始請求。
直接修改 txt_ANPR
手動把原本的 txt_ANPR=ABCDEFG 改成更長的 payload,例如:
txt_ANPR=ABCDEFG'; WAITFOR DELAY '00:00:05';--
三、確認時間盲注:觀察延遲回應
發送修改後的請求
在 Repeater 按下 Send。
觀察回應時間
如果伺服器回應耽擱約 5 秒(對應 WAITFOR DELAY '00:00:05'),就證實該參數存在 time-based blind SQL injection。
手動測試多次
把延遲值改成 '00:00:10'、'00:00:03' 等,確認延遲成正比,排除偶發網路延遲。
四、自動化枚舉:使用 sqlmap 抓資料
準備完整請求檔
在 Burp → HTTP history → Copy as cURL → 轉成原始 request.txt。
初步測試盲注
sqlmap -r request.txt -p txt_ANPR --dbms=mssql --technique=T --time-sec=5 --batch
sqlmap -r request.txt -p txt_ANPR --dbms=mssql --technique=B --batch --level=4 --risk=2 --threads=5 --tamper=space2comment
修補建議
一、後端修補
1.參數化查詢
2.最小權限原則
3.輸入長度與型別驗證
即便前端做了字數限制,後端也要重複驗證:
車牌號:用正則式 ^[A-Z0-9]{1,7}$(或符合當地格式)驗證。
4.強化錯誤處理
關閉應用程式層面的詳細錯誤回傳(customErrors="RemoteOnly" 或 “On”),改為統一的 500 錯誤頁。