Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00489
- Vendor: 情趣用品界第一把交椅
- Title: 情趣用品界第一把交椅 E大 會員資料維護頁面 nickname /name 欄位儲存型跨站腳本攻擊(Stored XSS)
- Introduction: 欄位未對使用者輸入進行適當的 HTML 實體編碼,攻擊者可透過注入含有事件處理器的 HTML 屬性,實現儲存型 XSS,進而竊取其他使用者的 Session Cookie 或執行任意 JavaScript。
- 獎勵金
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/04/02 14:59:41 : 新提交 (由 Marco 更新此狀態)
- 2026/04/02 15:11:58 : 新提交 (由 Marco 更新此狀態)
- 2026/04/07 22:44:26 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/09 18:33:51 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/09 18:33:51 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/09 18:33:51 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/21 13:43:46 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/04/21 20:09:22 : 確認已修補 (由 Marco 更新此狀態)
- 2026/04/25 03:00:07 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00489
- 通報者:mlgzackfly (Marco)
- 風險:高
- 類型:預存式跨站腳本攻擊 (Stored 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://erotogenic.com.tw/user01_sure.php
敘述
漏洞概述
erotogenic.com.tw 的會員資料維護功能(user01_sure.php)接受 POST 參數 nickname(暱稱)和 name(姓名)並將其儲存至資料庫。當使用者瀏覽 user01.php 頁面時,這兩個欄位的值會被直接嵌入到 HTML <input> 標籤的 value 屬性中,且未對雙引號(")及其他 HTML 特殊字元進行編碼處理。
這使得攻擊者可以透過注入雙引號跳脫 value 屬性,並插入任意 HTML 事件處理器(如 onfocus、onmouseover),實現儲存型 XSS。
受影響欄位:
| 欄位 | 參數名稱 | 注入位置 | 影響範圍 |
|---|---|---|---|
| 暱稱 | nickname |
user01.php input value 屬性 + 評論留言區 |
個人頁面 + 產品評論頁 |
| 姓名 | name |
user01.php input value 屬性 + 全站導航列(「XXX 歡迎光臨!」) |
每個頁面 |
name 欄位的影響範圍特別嚴重,因為姓名會以未編碼的方式顯示在全站導航列中:
<div class="btn-group dropdown">
x" onfocus="alert(1)" autofocus=" 歡迎光臨!
這表示只要受害者登入後瀏覽任何頁面,XSS 都會觸發。
此外,暱稱欄位的 placeholder 提示為「暱稱(評論留言時會顯示)」,表示此欄位的值會在產品評論/留言區域顯示。若攻擊者設定惡意暱稱後發表評論,所有瀏覽該產品頁面的使用者都會觸發 XSS,而非僅限自身帳號。
同時,user01_sure.php 的個人資料更新功能不具備 CSRF 防護(無 CSRF Token),且 PHPSESSID Cookie 設定為 SameSite=None,使得攻擊者可透過跨站請求偽造(CSRF)直接修改受害者的暱稱為惡意 XSS Payload,受害者下次瀏覽個人資料頁面時即觸發攻擊,無需任何互動。
重現步驟 (Steps to Reproduce)
- 使用任意帳號登入 erotogenic.com.tw
- 前往會員中心「資料維護」頁面:
https://erotogenic.com.tw/user01.php - 使用瀏覽器或直接發送以下 POST 請求至
user01_sure.php:
POST /user01_sure.php HTTP/2
Host: erotogenic.com.tw
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=<your_session>
nickname=x" onfocus="alert(document.domain)" autofocus="&name=test
- 重新載入
user01.php頁面 - 觀察瀏覽器彈出 alert 視窗,顯示
erotogenic.com.tw
方法二:透過產品評論影響其他使用者(已測試,評論可能需審核)
- 設定暱稱為 XSS Payload
- 前往產品頁面(如
product_page.php?rid=10373)發表評論 - 已實際測試發表評論,但評論尚未顯示於頁面上,可能需要站長審核
- 若評論通過審核並顯示,所有瀏覽該產品頁面的使用者都會觸發 XSS
安全測試備註:已於
product_page.php?rid=10373(popocat 貓貓全套組合價)發表測試評論,暱稱含 XSS Payload。若該評論出現於頁面上,煩請協助刪除。測試帳號:[email protected]
原始碼分析
注入後的 HTML 原始碼:
<input type="text" class="form-control" id="inputPassword3"
placeholder="暱稱(評論留言時會顯示)"
name='nickname' value="x" onfocus="alert(document.domain)" autofocus="">
可以看到:
- 雙引號
"未被編碼為",導致攻擊者可以關閉value屬性 onfocus事件處理器被直接寫入 DOMautofocus屬性使得頁面載入時自動觸發 XSS,無需使用者互動
影響 (Impact)
- Session Hijacking:攻擊者可竊取登入使用者的 PHPSESSID Cookie(注意:Cookie 設定為
HttpOnly,但攻擊者仍可透過 XSS 進行其他操作如 CSRF、頁面篡改、釣魚等) - 帳號資訊竊取:透過 XSS 讀取頁面中的個人資料(姓名、地址、Email、電話)
- 操作劫持:代替受害者執行操作,如更改收件地址、提交訂單
- 擴散至其他使用者:暱稱會在評論/留言中顯示,攻擊者發表評論後可影響所有瀏覽該產品的使用者
修補建議
1. 輸出編碼:在將使用者輸入嵌入 HTML 屬性時,必須進行 HTML 實體編碼,至少將以下字元轉換
2. 全站檢查:建議檢查所有將使用者輸入嵌入 HTML 的位置,統一使用 htmlspecialchars() 進行編碼
3. Content Security Policy:建議加入 CSP Header 作為額外防護層