常誠購物商城的會員登入功能存在資料庫隱碼注人(SQLi)漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2025-00680
  •  發信 Vendor: 常誠電腦股份有限公司
  • Title: 常誠購物商城的會員登入功能存在資料庫隱碼注人(SQLi)漏洞
  • Introduction: 會員登入存在SQLi漏洞

處理狀態

目前狀態

公開
Last Update : 2025/08/01
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 未複測
  • 公開

處理歷程

  • 2025/07/03 09:58:57 : 新提交 (由 阿美 更新此狀態)
  • 2025/07/03 11:53:49 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/17 15:50:32 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/17 15:50:32 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/17 15:50:32 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/22 15:37:54 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/22 15:37:54 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/22 15:37:54 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/24 09:23:03 : 已修補 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/08/01 03:00:29 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2025-00680
  • 通報者:gmwa (阿美)
  • 風險:高
  • 類型:資料庫注入攻擊 (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
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://www.esis.com.tw/cart/index.asp?login=1

敘述

1.帳密及密碼欄都輸入「' or '9'>'8」,會造成http code 500,錯誤訊息如下
 Microsoft OLE DB Provider for SQL Server 錯誤 '80004005'
 警告: 嚴重錯誤 7105 發生於 07 3 2025 9:32AM。請記錄錯誤和時間,並連絡您的系統管理員。
 /cart/cart_verification.asp, 行6
2.在帳號欄輸入「' or account= #」,密碼欄輸入「password」則呈現「接近 ' and login_pw=' 之處的語法不正確。」表示密碼的資料欄位名稱為「login_pw」
3.在帳號欄輸入「' or account='3」,密碼欄輸入「password」則呈現「無效的資料行名稱 'account'。」,經反復測試,獲得帳號的資料欄位名稱為「login_id」
4.在帳號欄輸入「' or login_id='3」,密碼欄輸入「password」,因登入失敗,回到未登入狀態的首頁(圖1)
5.在帳號欄輸入「' or login_id=' #」,密碼欄輸入「password」(圖2),成功登入,但看不到客戶的姓名(圖3),表示繞過身分管制,但沒有對應到正確的客戶。此時點擊「訂單查詢」可看到清單內容(圖4)
6.在帳號欄輸入「' or login_id like 'a%' or '1'>'9」,密碼欄輸入任意值(例如 xxxx),即可以帳號第1字母 為「a」客戶身分登入,也可看到客戶姓名(圖5)
7.經測試,帳號及密碼欄位皆有相同問題。
由上述測試步驟證明此系統存在SQLi弱點。

修補建議

一、永遠不要直接拼接 SQL 字串,改用Prepared Statements / Parameterized Queries
二、用白名單驗證(Whitelist Validation)檢查使用者提交的資料之合法性、有效性。
三、使用 ORM 或 框架自帶的查詢建構器,如Laravel Eloquent
四、在接受使用者提交的資料前,應驗證資料內容及長度的合理性。

擷圖

留言討論

聯絡組織

 發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。
;