國立中興高級中學基於 DOM 的跨站腳本攻擊 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00841
  •  發信 Vendor: 國立中興高級中學學校網站
  • Title: 國立中興高級中學基於 DOM 的跨站腳本攻擊
  • Introduction: 目標網站前端 JavaScript 未對網址來源(window.location.href)進行安全過濾,便直接代入 jQuery .append() 接收點,導致存在基於 DOM 的跨站腳本攻擊漏洞(DOM-based XSS)。

處理狀態

目前狀態

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

處理歷程

  • 2026/06/14 19:55:38 : 新提交 (由 陳宥甫 更新此狀態)
  • 2026/06/17 00:04:05 : 新提交 (由 陳宥甫 更新此狀態)
  • 2026/06/17 00:04:51 : 新提交 (由 陳宥甫 更新此狀態)
  • 2026/06/21 13:45:47 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/06 17:02:10 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/06 17:02:10 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/06 17:02:10 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/09 13:03:41 : 已修補 (由 組織帳號 更新此狀態)
  • 2026/07/17 03:00:20 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00841
  • 通報者:lcooll (陳宥甫)
  • 風險:高
  • 類型:基於 DOM 的 XSS (DOM-based Cross-Site Scripting)

參考資料

攻擊者可經由該漏洞竊取使用者身份,或進行掛碼、轉址等攻擊行為。

漏洞說明: OWASP - Cross-site Scripting (XSS)
https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

防護原則:
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

XSS 防禦繞過方式:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://www.chsh.ntct.edu.tw/home/main.js
https://www.chsh.ntct.edu.tw/home/

敘述

漏洞種類:
基於 DOM 的跨站腳本攻擊(DOM-based Cross-Site Scripting, DOM-based XSS)
發現過程:
分析前端腳本 /home/main.js,確切漏洞成因源於以下程式碼邏輯缺陷:

  1. Source(輸入點):腳本透過 b = window.location.href; 直接讀取未經邏輯過濾的完整 URL。
  2. Data Flow(資料流):未進行 HTML 實體編碼,直接以單引號拼接方式構造 HTML 字串:
    a += "<a href='.../logout_m.php?continue=" + b + "'>登出</a>";
  3. Sink(觸發點):最後將被污染的字串直接傳入 $("#login_info").append(a);
    漏洞重現方式:
  4. 本漏洞屬於「需認證之 DOM-based XSS (Authenticated DOM XSS)」。
  5. 在「未登入(訪客)」狀態下,<div id="login_info"> 區塊並不會渲染,因此直接瀏覽 PoC 連結時畫面呈現正常。
  6. 當「已登入網站的使用者」點擊惡意建構的連結時,前端腳本執行登出按鈕渲染邏輯,該危險代碼(append)即會被執行。
  7. 程式碼佐證:由 F12 開發者工具中可確認 #login_info 區塊與 /home/main.js 的對應綁定關係,代碼本身的安全性缺陷確實存在,足以構成資安威脅。
    影響:
    惡意腳本可於前端存取受害者瀏覽器的 Local Storage、Session Storage,或未設定 HttpOnly 屬性的敏感 Cookie。攻擊者可藉此竊取當前的連線憑證,達成瀏覽器會話挾持。
    攻擊者可利用受害者已建立的登入狀態,透過前端腳本(如 Fetch 或 Ajax)在背景冒充受害者發送請求。例如:更換帳號密碼、竄改個人資料、或讀取不對外公開的內部敏感資訊。

修補建議

不使用字串拼接,改用 jQuery 的物件建構方式。透過 `.attr()` 方法設定屬性,以及 `.text()` 方法設定文字。jQuery 內部會自動對傳入的資料進行底層的安全轉義與編碼,從根本上杜絕「屬性逃逸」與「標籤注入」的可能性。
可以將
b = window.location.href;
a += "<a href='" + g_root_path + "config/logout_m.php?continue=" + b + "'>\u767b\u51fa</a>";
$("#login_info").append(a);
改成
var b = window.location.href;
var $logoutLink = $('<a></a>')
.text('登出')
.attr('href', g_root_path + 'config/logout_m.php?continue=' + encodeURIComponent(b));
$("#login_info").empty().append($logoutLink);

擷圖

留言討論

聯絡組織

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