輔仁大學校友會系統登入端點 SQL Injection(未授權,可讀取整個資料庫並繞過驗證) - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00867
  •  發信 Vendor: 輔仁大學學校財團法人輔仁大學
  • Title: 輔仁大學校友會系統登入端點 SQL Injection(未授權,可讀取整個資料庫並繞過驗證)
  • Introduction: 校友會系統 /script/login.php 的 loginid 參數未經參數化即拼接進 SQL 查詢,可進行 error-based / boolean-based / time-based 注入,未授權即可讀取整個資料庫並繞過登入驗證。

處理狀態

目前狀態

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

處理歷程

  • 2026/06/23 10:52:55 : 新提交 (由 Ethan Yang 更新此狀態)
  • 2026/06/25 16:42:07 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 15:56:12 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/23 15:56:12 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/17 10:55:05 : 已修補 (由 組織帳號 更新此狀態)
  • 2026/08/23 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00867
  • 通報者:yangminchun (Ethan Yang)
  • 風險:嚴重
  • 類型:資料庫注入攻擊 (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://fjwaa.fju.edu.tw/script/login.php

敘述

摘要

登入端點 POST /script/login.phploginid 參數以字串拼接方式直接帶入 SQL 查詢,未使用參數化(prepared statement)。可進行 error-based、boolean-based、time-based 三種 SQL Injection,未授權即可讀取整個資料庫,並可繞過登入驗證。

重現步驟

1. Error-Based(取得資料庫名稱)

Payload(loginid 欄位):
[email protected]' AND GTID_SUBSET(CONCAT(0x7e,(SELECT database()),0x7e),1)#
回應錯誤訊息中夾帶資料庫名稱:Malformed GTID set specification '~fjwaa2025~'

2. Error-Based(單引號觸發原始 SQL 錯誤)

[email protected]' 會回傳完整 PDOException stack trace,洩漏:

  • 完整網站根目錄路徑:/www/wwwroot/fjwaa7/
  • 弱點檔案與行號:vendor/exlocus/function-pdo.php:132
  • 查詢以 PDO::query() 字串拼接(非 prepared statement)
    production 環境 display_errors = On,完整堆疊外洩本身即為一項資訊洩漏問題。

3. Boolean-Based(驗證繞過)

[email protected]' OR 1=1# 回傳「密碼不正確」,而不存在帳號回傳「帳號不存在」。兩者差異證明 OR 1=1 確實匹配到 member 表內的真實資料列。

4. Time-Based Blind

[email protected]' AND SLEEP(2)# 使回應時間由約 100ms 增至約 2,100ms,證明注入的 SQL 於伺服器端執行。

影響範圍

透過 error-based 確認:

  • 當前資料庫:fjwaa2025,DB 版本 5.7.44-log
  • 資料庫共 26 個資料表
  • member 表約 482 筆,內含姓名、email、電話、地址等個資,密碼以未加salt MD5 儲存
  • 另存在 adminuser 等管理相關資料表

發現

  • production 開啟 display_errors,外洩絕對路徑與框架結構。
  • 會員與管理密碼皆為未加salt MD5,一旦資料庫外洩可被快速還原。
  • 經觀察,系統仍存在一組 CMS 廠商預設/測試性質的管理帳號且使用極弱密碼,建議一併停用。
  • CMS 廠商:Exlocus(壹端網路科技,1duan.net)。

根因

/www/wwwroot/fjwaa7/vendor/exlocus/function-pdo.php:132 使用 PDO::query() 並將使用者輸入直接拼接進 SQL 字串。

修補建議

1. 所有資料庫查詢改用 PDO::prepare() 搭配綁定參數(prepared statement),勿字串拼接。
2. production 關閉 display_errors,錯誤改寫入內部 log,避免堆疊與路徑外洩。
6. 因資料庫曾可被未授權讀取,建議評估通知受影響會員並要求重設密碼。

擷圖

留言討論

聯絡組織

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