Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00868
- Vendor: 輔仁大學學校財團法人輔仁大學
- Title: 輔仁大學應用美術系工讀打卡系統 SQL Injection(未授權,login 與 signup 雙注入點,可讀取整個資料庫)
- Introduction: 應用美術系工讀打卡系統的 login_verify.php 與 signup.php 皆將使用者輸入直接拼接進 SQL 查詢,未授權即可進行 error-based 注入讀取整個資料庫;登入端點更於 HTML 回應中直接印出完整 SQL 查詢。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
未複測
-
公開
處理歷程
- 2026/06/23 10:59:51 : 新提交 (由 Ethan Yang 更新此狀態)
- 2026/06/25 16:42:26 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/23 15:56:22 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/23 15:56:22 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/23 15:56:22 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/06 09:41:21 : 已修補 (由 組織帳號 更新此狀態)
- 2026/08/14 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00868
- 通報者: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://aart1.fju.edu.tw/attend/signup.php
敘述
摘要
登入端點 POST /attend/login_verify.php 與註冊端點 POST /attend/signup.php 皆將使用者輸入直接拼接進 SQL 查詢,未使用參數化。登入端點更在 HTML 回應中直接印出完整 SQL 查詢字串。未授權即可進行 error-based 注入,確認可完整讀取資料庫。
重現步驟
1. SQL 查詢外洩(login)
以 userid=admin&pw=test&action=login 送出,回應中夾帶完整查詢:
<font color=white>SELECT * FROM account WHERE username='admin'</font>
查詢被以白色字隱藏於頁面,但原始碼可見,直接暴露資料表結構與拼接方式。
2. Error-Based 萃取(login)
Payload(userid 欄位):
' AND extractvalue(1,concat(0x7e,database(),0x7e))-- -
回應:XPATH syntax error: '~attend~',於錯誤訊息中帶出資料庫名稱。
以相同手法確認:database() → attend、version() → 5.5.68-MariaDB、user() → attend@localhost,資料庫含 account、day、record 三個資料表。
3. INSERT 注入點(signup)
以 id=test'user&...&action=add&mode=newaccount 送出,回應拋出 MariaDB 語法錯誤:
...near 'user','...','TestUser')' at line 1
證明註冊流程的 INSERT 語句同樣存在注入點(本報告僅觸發語法錯誤證明,未實際寫入任何資料)。
影響範圍
- 當前資料庫
attend,含工讀生帳號(account)、打卡日期(day)、打卡紀錄(record)。 - 注入點具完整讀取能力,理論上整庫(含帳密與打卡個資)皆可被未授權讀取
- 密碼以未加鹽 MD5 儲存,一旦外洩可被快速還原。
發現
- 整套環境均已 End-of-Life:PHP 5.4.16、Apache 2.4.6、MariaDB 5.5.68,自身即帶大量已知漏洞。
- 兩端點皆無速率限制、無 CAPTCHA。
- 登入查詢字串外洩本身即為資訊洩漏問題。
根因
login 與 signup 端點皆以字串拼接組裝 SQL,未使用 prepared statement。
修補建議
1. 所有查詢改用參數化(prepared statement / 綁定參數),勿字串拼接。
2. 移除回應中印出 SQL 查詢的除錯程式碼。
3. 關閉對外的詳細 SQL 錯誤訊息,改寫入內部 log。
4. 密碼改用 password_hash()(bcrypt/argon2)加鹽,淘汰 MD5。
5. 升級或汰換 EOL 的 PHP / Apache / MariaDB。
6. 登入與註冊端點加入速率限制與 CAPTCHA。
7. 因資料庫曾可被未授權讀取,建議評估通知受影響工讀生並要求重設密碼。