Fansone Stored XSS & 多個漏洞問題 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2025-01069
  •  發信 Vendor: 闇翼科技有限公司
  • Title: Fansone Stored XSS & 多個漏洞問題
  • Introduction: Stored XSS & 多個漏洞問題

處理狀態

目前狀態

公開
Last Update : 2025/09/12
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 未複測
  • 公開

處理歷程

  • 2025/08/26 13:00:29 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/08/26 13:01:31 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/08/26 13:02:56 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/08/26 13:03:12 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/08/26 13:06:58 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/08/26 13:09:02 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/08/29 14:30:35 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/09/03 16:29:57 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/09/03 16:29:57 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/09/03 16:29:57 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/09/04 11:33:36 : 已修補 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/09/12 03:00:21 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2025-01069
  • 通報者:SamChen_696 (CheN..)
  • 風險:高
  • 類型:預存式跨站腳本攻擊 (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://fansone.co/post/1180835086
https://static.fansone.co/chenchen/bigdick57.html

敘述

備註:已寄信至客服信箱,確保漏洞得到妥善修復,同步通報至hitcon平台

問題一:主站 "fansone.co" 文章/留言區 存在Stored XSS

概述

文章區域的 HTML Encode 機制很奇耙只有在前端 Encode,我從burp suite送出封包的時候再修改成原來沒有轉譯過的Payload "<img src="x" onerror="console.log('XSS_IMG_OK', document.domain)">" (我怕影響到其他用戶沒用alert,這裡使用console.log [可以打開 DevTools 到Console查看]),而留言區則是完全沒有做 Encode 可以直接注入Payload;兩個因素造成 Stored XSS 問題,由於留言區也存在此問題故為高風險漏洞攻擊者可以玩的點很多 (Ex: 任意呼叫API 或是竊取用戶Cookie [只是舉其二種攻擊手法])。Clickjacking也是能做到的 因為同源的關係所以會是已登入的狀態。影響涉及全站 可以在其他人文章底下隨意留言 !

重製步驟

  1. 已登入帳號發文或留言輸入以下Payload "<img src="x" onerror="console.log('XSS_IMG_OK', document.domain)">"

  2. 打開瀏覽器 DevTools Console 出現 XSS_IMG_OK fansone.co 的紀錄。

PoC

文章網址 https://fansone.co/post/1180835086

各種測試Payload截圖
圖片
圖片
圖片
圖片

影響

竊取用戶Cookie、在同源執行任意 Javascript、Clickjacking


問題二: Bucket 可任意上傳檔案並執行 Javascript 造成 XSS & Malicious File Hosting

概述

static.fansone.co 允許上傳任意檔案 可回應為 text/html 並 inline 執行。造成網域託管惡意頁面。

重製步驟

  1. 送出 multipart 請求建立 HTML;POST /v0/b/static.fansone.co/o?name=chenchen%2Fbigdick57.html HTTP/2 Host: firebasestorage.googleapis.com
    contentType 修改為 text/html 並更改url副檔名,輸入Payload
    --39887880697272167207700505427055
    Content-Type: text/html

    <h1>CheN.. Vulnerability PoC</h1>
    <img src=x onerror=alert(document.domain)>

  2. 瀏覽https://static.fansone.co/chenchen/bigdick57.html 出現alert彈窗,且成功插入任意Html標籤。惡意檔案託管當然也是可行的

PoC

https://static.fansone.co/chenchen/bigdick57.html

上傳圖片完整封包
圖片

截圖佐證
圖片
圖片

影響

品牌釣魚:攻擊者能將假登入網頁、詐騙活動頁掛在 static.fansone.co,大幅提高可信度與點擊率。

惡意檔託管:任何可執行檔、巨集文件皆可透過官方網域散佈,使用者難以分辨。


問題三:允許載入外部圖片導致用戶 IP 洩漏

概述

PUT /api/user HTTP/2 Host: fansone.co 是可以變更個人檔案(包括頭貼 avatar)的 API 請求,發現它可接受任意外部網域的圖片 URL 作為頭貼,讓用戶瀏覽時其瀏覽器會直接向第三方伺服器發送請求,代表攻擊者可以在使用者不知情的情況下收集他們的 IP 和 User-Agent。

PoC

變更個人檔案的完整封包請求
圖片

瀏覽器向我的網站發出GET請求
圖片
我網站後台的Log紀錄
圖片

影響

可以大量收集fansone用戶的 IP 和 User-Agent。


問題四:HLS 串流未授權保護(無簽名 加密)存在外流風險

概述

付費影片以 HLS(.m3u8 + .ts)提供,但 master.m3u8 和各 segment-N.ts 在未登入、無時效 Token 的情況下可直接訪問取得,段檔不含帳號名稱浮水印。如果有心人士外流影片的 UUID 路徑其他人即可拼回完整影片 會增加外流風險。

重製步驟(僅對我已購買之影片做驗證)

  1. 播放影片時打開 DevTools 找尋 https://video7.fansone.co/video7.fansone.co/<UUID>/master.m3u8 與對應 video_1.m3u8、video_1/segment-0.ts。

  2. 使用無痕視窗(未登入)直接造訪上述 m3u8 與部分 .ts 狀態皆為 200 OK。

  3. 以工具重組影片 (Ex: ffmpeg)

  4. 確認影片繞過網站的帳號名稱浮水印限制

PoC

可以使用我撰寫的 Expolit 腳本進行測試,程式把解析 下載 合併 多個步驟整合在一起 使用方法只需提供影片的UUID並設定輸出格式 (Ex: python hls_poc_grabber.py --uuid e7f39612-3d2a-4af7-9d74-9a0ca6565ce3 --out out2.mp4)
(.py文件和影片佐證提供於EMAIL附件中)

影響

繞過帳號名稱浮水印限制:浮水印僅為播放器疊圖,對直連段檔無效。

如果有心人士外流UUID 非授權使用者可取得完整付費內容造成營收損失。

修補建議

***針對問題1***
在後端正確實施HTML encoding

僅允許安全標籤與屬性:移除所有 on* 事件。
-----------------------------------------------------------------------------------------------------

***針對問題2***
後端白名單:僅接受 image/jpeg | png;拒絕 text/html、可執行壓縮檔。
-----------------------------------------------------------------------------------------------------

***針對問題3***
API 僅允許來自 限定信任網域(Ex: static.fansone.co) 的圖片 URL 作為頭貼來源,避免使用者自行指定任意外部網址。
-----------------------------------------------------------------------------------------------------

***針對問題4***
對 m3u8 與所有 .ts 啟用 短時效簽名 URL

使用 HLS 加密(AES-128 / SAMPLE-AES),金鑰由授權 API 短時效發放定期輪換

擷圖

留言討論

聯絡組織

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