星橋國際影城多個頁面存在 資料庫注入漏洞(SQL Injection) - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00876
  •  發信 Vendor: {星橋國際影城}
  • Title: 星橋國際影城多個頁面存在 資料庫注入漏洞(SQL Injection)
  • Introduction: 該伺服器資料庫能以最高權限帳號執行,導致全站資料及同AWS EC2 主機其他客戶資料面臨洩漏風險

處理狀態

目前狀態

公開
Last Update : 2026/08/30
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2026/06/30 14:40:41 : 新提交 (由 summer.nudy 更新此狀態)
  • 2026/07/01 17:10:54 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 16:02:24 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 16:02:24 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 16:02:24 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/30 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00876
  • 通報者:summer83583 (summer.nudy)
  • 風險:嚴重
  • 類型:資料庫注入攻擊 (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.sbc-cinemas.com.tw/news.php?id=758
https://www.sbc-cinemas.com.tw/search.php?q=test

敘述

星橋國際影城官方網站的新聞頁面(news.php)與電影搜尋頁面(search.php),沒有對使用者輸入的內容做任何過濾,可以直接在網址列塞入 SQL 指令操控資料庫。
更嚴重的是,網站的資料庫帳號用的是 MySQL 最高權限的 root,加上這台伺服器是多個網站共用的主機,一旦被攻擊,不只是星橋影城的資料全部曝光,連同一台伺服器上其他 16 個以上不同公司的資料庫也都跟著中獎。

受影響端點

端點/news.php?id=758 ,參數id , 注入型態Boolean / Error / Time / UNION

圖片

端點/search.php?q=test ,參數q , 注入型態Boolean / Error / Time / UNION

圖片

因為資料庫帳號是 root,可以看到這台AWS EC2 伺服器上所有資料庫。透過注入枚舉,發現至少 16 個其他資料庫同樣暴露在風險中:

圖片

修補建議

改用參數化查詢

把所有 SQL 查詢改成 Prepared Statement,讓使用者輸入的內容永遠不會被當成 SQL 指令執行:
// ❌ 改之前(有漏洞)
$sql = "SELECT * FROM news WHERE id='" . $_GET['id'] . "'";

// ✅ 改之後(安全)
$stmt = $pdo->prepare("SELECT * FROM news WHERE id = ?");
$stmt->execute([$_GET['id']]);

// ✅ search.php 的 LIKE 查詢同樣要改
$stmt = $pdo->prepare(
"SELECT * FROM movies WHERE status>0
AND (cname LIKE ? OR ename LIKE ? OR director LIKE ? OR player LIKE ?)
ORDER BY releaseTime"
);
$keyword = '%' . $_GET['q'] . '%';
$stmt->execute([$keyword, $keyword, $keyword, $keyword]);

立即:關掉錯誤訊息顯示
不要讓 SQL 語句和錯誤內容出現在瀏覽器上:
; php.ini 設定
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log

立即:把資料庫帳號從 root 換掉
建立一個只有必要權限的帳號,就算被注入也只能動自己的資料庫:
-- 建立新帳號
CREATE USER 'sbc_web'@'localhost' IDENTIFIED BY '設一個強密碼';

-- 只給 sbc 這個資料庫的基本操作權限
GRANT SELECT, INSERT, UPDATE ON sbc.* TO 'sbc_web'@'localhost';
FLUSH PRIVILEGES;

-- 然後把 PHP 連線設定改掉
// config.php
$pdo = new PDO('mysql:host=localhost;dbname=sbc', 'sbc_web', '你的密碼');

擷圖

留言討論

聯絡組織

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