KeyFrame內部研究專用

Bug Bounty Secrets The attack Technique No One Talks About

Tehlan·1月17日週六·5 min英文

三句話摘要

透過 CORS 錯誤設定與 CSRF 攻擊,將受害者的銀行提款帳戶竄改為攻擊者帳戶。 CORS 接受任意來源加上 SameSite=None,足以讓 JSON API 的 CSRF 防線徹底失效,攻擊者只需一個自動提交的 HTML 表單即可竄改受害者的財務帳戶。 Client ID 參數缺乏驗證是入口:修改 Client ID 會觸發 403,但完整移除該參數後伺服器仍回應 200 並建立 Payout Method,代表後端邏輯只對「值不符」做防護,對「參數不存在」完全無處理。

重點整理

重點
  • 1

    Client ID 參數缺乏驗證是入口:修改 Client ID 會觸發 403,但完整移除該參數後伺服器仍回應 200 並建立 Payout Method,代表後端邏輯只對「值不符」做防護,對「參數不存在」完全無處理。

  • 2

    CORS 錯誤設定使跨站請求成立:伺服器的 Access-Control-Allow-Origin 接受任意來源,且 Cookie 的 SameSite=None,使得從第三方頁面發出的請求能夾帶受害者的 Session,繞過同源政策。

  • 3

    text/plain 編碼繞過 JSON CSRF 防護:JSON API 通常被認為天然防 CSRF,因為瀏覽器預設不允許跨站發送 application/json。但透過 `<form enctype="text/plain">` 將 JSON Key-Value 包在隱藏欄位中,可讓 POST body 符合 JSON 格式,同時屬於「簡單請求」不觸發 Preflight。

  • 4

    攻擊結果直接影響資金安全:攻擊者只需誘使受害者開啟惡意頁面,表單自動提交後,受害者帳戶的 Payout Method 即被更新為攻擊者的 Routing Number 與 Account Number,後續所有付款直接轉至攻擊者。

實用技巧與重點

乾貨
  • 工具:Burp Suite(Intercept、Repeater、HTTP History)
  • 漏洞類型:CORS Misconfiguration + CSRF(Cross-Site Request Forgery)
  • 目標端點:POST 請求,JSON body 含 `funding_type`、`entity`、`account_number`、`bank_routing_number`
  • URL 參數:`client_id`(移除後仍 200 OK → 無後端驗證)
  • CORS 問題:伺服器接受任意 Origin,Cookie `SameSite=None`
  • 繞過技巧:HTML form `method=POST`、`enctype=text/plain`,以隱藏 Input 拼出 JSON Key-Value Pair
  • 自動觸發:`<script>` tag 呼叫 `document.forms[0].submit()`
  • 攻擊影響:受害者的 Payout Method 被替換 → 資金轉至攻擊者帳戶
  • 成功回應:`200 OK`,body 含 `"Payout Method Created Successfully"`

結論

結論

CORS 接受任意來源加上 SameSite=None,足以讓 JSON API 的 CSRF 防線徹底失效,攻擊者只需一個自動提交的 HTML 表單即可竄改受害者的財務帳戶。

完整解析

詳細

這支影片示範的是一個結合 CORS 錯誤設定與 CSRF 的真實 Bug Bounty 案例。目標網站的支付頁面提供了一個讓用戶綁定提款帳戶的功能,用戶可輸入 Routing Number 與 Account Number,點擊 Continue 後,前端會送出一個帶有 JSON body 的 POST 請求。講者首先用 Burp Suite 攔截這個請求,注意到 URL 中帶有 `client_id` 參數。他先嘗試修改 `client_id` 的值,伺服器正確回應 403 Forbidden,看似有做身份驗證。然而,當他將整個 `client_id` 參數從 URL 中完整刪除後,伺服器卻回應 200 OK,並附上「Payout Method Created Successfully」的訊息,代表後端只驗證了參數值是否合法,卻沒有檢查參數本身是否存在。

發現這個邏輯漏洞後,講者進一步審查 HTTP History,發現伺服器的 CORS 設定允許任意來源(Access-Control-Allow-Origin 不限制),且回應的 Cookie 屬性 SameSite 設為 None。這兩個條件加在一起,代表任何第三方網站都可以發出帶有受害者 Cookie 的跨站請求,伺服器也會照單全收。

接下來講者構造了攻擊 Payload:一個標準 HTML 表單,`method` 設為 POST、`enctype` 設為 `text/plain`,內含隱藏的 Input 欄位,其 `name` 與 `value` 拼合後恰好構成合法的 JSON 格式,填入的是攻擊者自己的 Account Number 與 Routing Number。頁面載入時,一段 `<script>` 自動呼叫 `document.forms[0].submit()` 提交表單。由於 `text/plain` 屬於瀏覽器允許的「簡單請求」類型,不會觸發 CORS Preflight 檢查,請求連同受害者的 Session Cookie 直接送達伺服器。

結果是:只要受害者點開攻擊者發送的連結,其帳戶的提款設定即在無感知的情況下被替換為攻擊者的銀行資訊,往後所有提款或 Payout 都會流向攻擊者帳戶。這個案例的嚴重性在於攻擊完全靜默、不需任何用戶輸入,且直接影響財務安全,因此在 Bug Bounty 平台上通常可獲得相當高的賞金。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。