竹代設計有限公司-寅河系 未登入且未購買的使用者可直接取得付費電子寫真 PDF 檔 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00970
  •  發信 Vendor: 竹代設計有限公司
  • Title: 竹代設計有限公司-寅河系 未登入且未購買的使用者可直接取得付費電子寫真 PDF 檔
  • Introduction: 未登入且未購買商品的使用者,可取得網站全部付費電子寫真 PDF 的實際檔案網址,並直接開啟及瀏覽完整內容。

處理狀態

目前狀態

公開
Last Update : 2026/09/29
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2026/07/30 09:39:35 : 新提交 (由 更新此狀態)
  • 2026/07/30 09:45:03 : 新提交 (由 更新此狀態)
  • 2026/07/30 09:48:23 : 新提交 (由 更新此狀態)
  • 2026/08/03 13:03:48 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/05 19:07:28 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/05 19:07:28 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/05 19:07:29 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/09/29 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00970
  • 通報者:S_Cyrus ()
  • 風險:高
  • 類型:存取控制缺陷 (Broken Access Control)

參考資料

攻擊者可經由該漏洞取得、修改、刪除系統中的其他使用者的資料,或連線至高權限使用者的頁面。

OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control

CWE-284: Improper Access Control
https://cwe.mitre.org/data/definitions/284.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://mein-universe.com/
https://mein-universe.com/wp-json/wp/v2/media?mime_type=application/pdf
https://mein-universe.com/wp-content/uploads/<Redacted_PDF_Path>
https://mein-universe.com/wp-content/uploads/woocommerce_uploads/<Redacted_PDF_Path>

敘述

0. 摘要(Summary)

網站販售需付款後才能取得的電子寫真。

然而,任意使用者在未登入、未持有 Cookie、未建立訂單及未購買商品的情況下:

  1. 可向以下端點發送請求:
GET /wp-json/wp/v2/media?mime_type=application/pdf
  1. 伺服器會回傳全部 7 筆 PDF 媒體資料。

  2. 每筆資料均包含:

檔案名稱
檔案大小
媒體編號
實際檔案網址 guid.rendered 與 source_url
  1. 將 guid.rendered 或 source_url 貼入瀏覽器後,即可直接開啟完整付費電子寫真。

  2. 實際檔案網址不會檢查登入狀態、購買紀錄、訂單金鑰或下載權限,未購買者可直接存取完整內容。

漏洞流程如下:

匿名查詢 WordPress media API
        ↓
取得付費 PDF 的 guid.rendered 或 source_url
        ↓
直接開啟 PDF 網址
        ↓
未購買即可取得完整付費商品

本問題影響網站目前販售的全部 5 個付費 PDF 商品;API 另回傳 2 筆未顯示於網站前台的 PDF。


1. 受影響功能(Affected Feature)

  • 功能: 付費電子寫真下載與 WordPress 媒體檔案存取

  • 受影響網域:

https://mein-universe.com/
  • 主要受影響端點:
GET /wp-json/wp/v2/media?mime_type=application/pdf
  • 受影響檔案路徑:
/wp-content/uploads/
/wp-content/uploads/woocommerce_uploads/

2. 漏洞驗證之前置條件(Preconditions for Verification)

  • 不需要登入、建立帳號或 Cookie。
  • 不需要購買商品、訂單編號或訂單金鑰。
  • 可使用瀏覽器或 Burp Suite 等代理工具重現。

3. 重現步驟(Steps to Reproduce)與概念驗證(Proof of Concept)

以下重現步驟使用 Burp Suite Repeater 進行。

步驟 1:以未登入狀態查詢全部 PDF

移除請求中的 Cookie 與其它登入資訊,並發送以下請求:

GET /wp-json/wp/v2/media?mime_type=application/pdf HTTP/2
Host: mein-universe.com

伺服器回應:

HTTP/2 200 OK
Content-Type: application/json; charset=UTF-8
X-WP-Total: 7
X-WP-TotalPages: 1
Allow: GET

這表示未登入使用者可取得全部 7 筆 PDF 媒體資料。

圖片


步驟 2:從 API 回應取得付費 PDF 網址

可從以下兩個欄位取得相同的付費 PDF 實際檔案網址:

guid.rendered
source_url

例如:

{
  "guid": {
    "rendered": "https://mein-universe.com/wp-content/uploads/<Redacted_PDF_Path>"
  },
  "source_url": "https://mein-universe.com/wp-content/uploads/<Redacted_PDF_Path>"
}

部分商品檔案位於 WooCommerce 的下載目錄,例如:

{
  "guid": {
    "rendered": "https://mein-universe.com/wp-content/uploads/woocommerce_uploads/<Redacted_PDF_Path>"
  },
  "source_url": "https://mein-universe.com/wp-content/uploads/woocommerce_uploads/<Redacted_PDF_Path>"
}

圖片


步驟 3:直接開啟付費 PDF

  1. 開啟無痕瀏覽器,確認沒有登入網站。
  2. 將步驟 2 取得的 guid.rendered 或 source_url 貼入網址列。
  3. 瀏覽器可直接載入完整 PDF。

圖片

此過程不需要:

登入帳號
購買商品
完成付款
訂單金鑰
下載權限

開啟的 PDF 為完整電子寫真商品,而非預覽或試閱內容。

由於 PDF 檔案較大,Burp Suite 無法直接顯示完整回應內容,並顯示:

This message is too large to display

因此以無痕瀏覽器成功載入完整 PDF 的畫面,作為未授權存取成立的驗證證據。


步驟 4:確認網站目前販售的付費電子寫真均受影響

API 回應共有 7 筆 PDF。經逐一比對檔名與商品名稱,其中 5 筆可對應網站目前販售的完整付費電子寫真,另外 2 筆未顯示於網站前台。

全部 7 筆資料均提供 guid.rendered 與 source_url,且可依步驟 3 的方式直接開啟;因此可確認網站目前販售的 5 個付費 PDF 商品均受影響。


4. 預期行為(Expected Behavior)

  • WordPress media API 不應向匿名或未購買使用者回傳付費 PDF 的實際檔案網址。
  • 每次下載付費檔案時,伺服器都應驗證訂單付款狀態、購買紀錄及下載權限。
  • 即使使用者已知實際檔案路徑,未具有效購買或下載權限時仍應拒絕存取。

5. 實際行為(Actual Behavior)

  • 未登入使用者可透過 API 查詢 7 筆 PDF,其中包含網站目前販售的 5 筆完整付費電子寫真。
  • API 直接回傳檔案資訊與固定的實際網址,未購買者可重複開啟完整內容。
  • 存取過程未驗證登入狀態、購買紀錄、訂單金鑰或下載權限。

6. 影響(Impact)

此問題使任何人皆可繞過購買流程,免費取得網站販售的完整電子寫真。

可能造成:

  • 付費商品的購買控制失效,並可能造成直接營收損失。
  • 付費內容遭未授權下載、複製與散布。
  • 實際檔案網址可被未購買者重複使用及分享。

由於 API 會直接列出受影響檔案,使用者不需猜測檔名或逐筆尋找。


7. 可能的根本原因(Likely Root Cause)

問題可能是付費 PDF 被當成公開媒體檔案提供,且存取檔案時未進行購買授權驗證。

可能原因包括:

  1. WordPress media API 允許匿名查詢 PDF,並直接回傳實際檔案網址。

  2. 付費檔案位於可公開存取的 /wp-content/uploads/ 或 /wp-content/uploads/woocommerce_uploads/ 路徑,已知網址即可直接存取。

  3. 伺服器傳送檔案前,未驗證訂單付款狀態、購買紀錄或下載權限。


8. 嚴重性評估(Severity Assessment)

高風險(High)

理由:

  • 洩漏內容屬於商業商品,可直接造成購買流程失效、未授權散布及營收損失。
  • 網站目前販售的全部付費 PDF 均受影響,且取得的是完整商品而非預覽內容。
  • 任意網路使用者皆可直接利用,不需登入或既有權限。
  • API 會直接提供實際檔案網址,不需猜測或枚舉檔案路徑。
  • 未購買者可直接存取付費內容,且檔案網址可被複製及分享。

9. 補充說明(Researcher Note)

  1. 本次測試僅確認漏洞存在,未進行自動化、批次下載、長期保存或散布。

修補建議

1. 將付費檔案移至無法直接透過網址存取的受保護空間,並使用 WooCommerce 的受保護下載方式傳送檔案。

2. 每次下載前,由後端驗證使用者身份、購買紀錄、付款狀態及下載權限;並視業務需求加入有效期限與下載次數限制。

3. WordPress media API 不應向匿名使用者回傳付費檔案資料或實際網址;下載連結應在後端確認購買權限後產生,並限制有效時間。

4. 更換目前付費 PDF 的檔名與路徑,清除 Cloudflare 及網站快取,並移除搜尋引擎、頁面原始碼與其它 API 中已暴露的舊網址。

5. 全面檢查 ZIP、EPUB、MP4、PSD 等其它付費檔案格式是否存在相同問題。

6. 僅隱藏 media API 或移除 `source_url` 無法完整修補此問題;只要實際檔案網址仍可直接存取,已知網址的使用者仍可繞過購買流程。

擷圖

留言討論

聯絡組織

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