Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00341
- Vendor: 城市學校財團法人臺北城市科技大學
- Title: 臺北城市科技大學 校務系統登入頁 Reflected Cross-Site Scripting (XSS)
- Introduction: 校務系統登入流程在顯示登入錯誤訊息時未對使用者輸入進行 HTML escaping,導致可觸發 Reflected Cross-Site Scripting (XSS)。
- 感謝函
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/03/16 23:02:51 : 新提交 (由 small R 更新此狀態)
- 2026/03/16 23:03:40 : 新提交 (由 small R 更新此狀態)
- 2026/03/16 23:08:44 : 新提交 (由 small R 更新此狀態)
- 2026/03/16 23:33:58 : 新提交 (由 small R 更新此狀態)
- 2026/03/18 15:12:51 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/03/26 18:22:01 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/03/26 18:22:01 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/03/26 18:22:01 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/08 14:26:02 : 已修補 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/10 14:31:31 : 已修補 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/10 14:31:43 : 已修補 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/10 14:50:39 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/04/10 14:57:56 : 未修補完成 (由 small R 更新此狀態)
- 2026/04/10 15:06:14 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/04/10 15:10:43 : 確認已修補 (由 small R 更新此狀態)
- 2026/04/14 03:00:14 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00341
- 通報者:alaner652 (small R)
- 風險:低
- 類型:反射型跨站腳本攻擊 (Reflected Cross-Site Scripting)
參考資料
漏洞說明: OWASP - Cross-site Scripting (XSS)
https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
防護原則: OWASP - XSS (Cross Site Scripting) Prevention Cheat Sheet
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
防禦繞過方式: OWASP - XSS Filter Evasion Cheat Sheet
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
相關網址
https://siw.tpcu.edu.tw/tsint/perchk.jsp
https://siw.tpcu.edu.tw/tsint/login_check.jsp
敘述
在分析校務系統登入流程時,發現登入失敗頁面存在 Reflected Cross-Site Scripting (XSS) 漏洞。
系統會將使用者輸入的帳號 (uid) 內容直接回顯到登入錯誤訊息中,但未進行 HTML escaping。
當使用者輸入包含 HTML / JavaScript 的內容時,該內容會被瀏覽器解析並執行。
前端雖然對帳號欄位設定 maxlength 限制,但此限制僅存在於 client-side,可透過修改 DOM 或使用代理工具攔截並修改 HTTP request 繞過。
漏洞成因
登入頁面帳號欄位 HTML:
<input type="text" class="textone" name="uid" size="10" maxlength="15">
系統僅透過 maxlength 屬性限制輸入長度,但未在 server-side 進行適當輸入處理與 HTML escaping。
因此攻擊者仍可提交任意 payload。
重現步驟
Step 1
開啟校務系統登入頁面
Step 2
在帳號欄位輸入以下 payload
<script>alert(1)</script>
Step 3
提交登入請求
登入失敗後,系統會回顯帳號輸入內容。
Step 4
伺服器回應 HTML 內容包含 payload:
<font color="red">
[<script>alert(1)</script>] 無此帳號或密碼不正確,請重新輸入!
</font>
由於未進行 HTML escaping,瀏覽器解析 HTML 時會直接執行 JavaScript。
Step 5
瀏覽器成功觸發 JavaScript alert(1)
Proof of Concept (PoC)
透過 Burp Suite 攔截登入請求並修改 uid 參數:
POST /tsint/perchk.jsp HTTP/1.1
Host: siw.tpcu.edu.tw
Content-Type: application/x-www-form-urlencoded
hid_type=S&uid=<script>alert(1)</script>&pwd=0&err=N&fncid=&ls_chochk=N
伺服器回應內容中包含未經處理的輸入:
[<script>alert(1)</script>] 無此帳號或密碼不正確,請重新輸入!
因此導致 JavaScript 被瀏覽器執行。
影響
攻擊者可構造惡意 payload,使受害者在瀏覽器中執行任意 JavaScript。
可能造成:
- 使用者端 JavaScript 執行
- DOM manipulation
- UI 偽造 / 釣魚攻擊
- 若與其他漏洞結合,可能造成更進一步安全風險
修補建議
建議採取以下措施:
1. 對所有輸出至 HTML 的使用者輸入進行 **HTML escaping**
例如:
```
< → <
> → >
```
2. 避免直接將 request parameter 輸出至 HTML
3. 在 server-side 進行輸入驗證
4. 前端限制(如 maxlength)僅作為 UI 控制,不應作為安全機制
5. 建議使用安全模板引擎或統一輸出編碼機制