KeyFrame內部研究專用

Top War Stories from a Try Hard Bug Bounty Hunter, Rhynorater | Bug Bounty Village, DEF CON 32

Bug Bounty Village·5月22日週四·50 min英文

三句話摘要

職業 Bug Bounty 獵手分享 11 個關鍵漏洞的發現與利用完整鏈路,涵蓋 Web、IoT、桌面應用及二進位制協議。 威脅模型的轉變、多維度視角的交叉驗證、系統化的連結思維與跨領域協作是挖掘關鍵漏洞的核心,而深入理解目標系統的設計邊界往往比程式碼審計更有價值。 威脅模型轉變是安全盲區:當內部工具改為公開產品時,原有的隱性信任失效。Nginx 403 繞過案例說明需要識別異常的錯誤頁面差異(應用層 vs 網路層),這提示了防禦的真正位置。掌握 URL 編碼、WR 編碼、路徑遍歷等規範化繞過技巧往往能突破看似堅固但位置錯誤的防禦。

重點整理

重點
  • 1

    威脅模型轉變是安全盲區:當內部工具改為公開產品時,原有的隱性信任失效。Nginx 403 繞過案例說明需要識別異常的錯誤頁面差異(應用層 vs 網路層),這提示了防禦的真正位置。掌握 URL 編碼、WR 編碼、路徑遍歷等規範化繞過技巧往往能突破看似堅固但位置錯誤的防禦。

  • 2

    多視角連結攻擊產生指數級影響:經銷商 CRM 漏洞透過切換身份視角(客戶→經銷商→系統)發現了隱藏的功能標誌和 IDOR。三個漏洞(IDOR + XSS + IDOR)的連結不僅擴大了影響範圍,還形成了自我複製的蠕蟲,最終洩露千萬級資料。這說明深入應用的各個功能模組、啟用隱藏特性(透過 Kaido Match & Replace 切換功能標誌)是發現鏈條的前置條件。

  • 3

    跨領域協作大幅降低陌生技術的學習曲線:硬體硬化、二進位制逆向、SIP 協議等難題都透過與專長者合作而快速破解。物理韌體提取雖然前期失敗三次,但最終實現了配置注入利用;Perforce 二進位制協議透過協議文件自學加 ChatGPT 輔助成功開發了惡意伺服器。這體現了"10 天內從零到遠端 Shell"的可能性。

  • 4

    配置與協議層漏洞長期存在且被低估:SQL 注入、配置檔案注入等被視為"老舊"的漏洞仍廣泛出現在版本控制、DHCP/DNS 配置、SIP 協議中。特別地,DHCP 命令注入中利用行長度限制(1025 位元組)來繞過去重檢查,DNS Mask 中透過理解系統邊界條件而非程式碼漏洞實現突破,這些都說明深入理解目標系統的設計而非僅關注程式碼的做法往往更有成效。

實用技巧與重點

乾貨
  • 漏洞分類與賞金範圍:
  • 易級(3個):Nginx 403 繞過($15-20k)、OAuth 憑證注入($40-60k)、IDOR($40-60k)
  • 中級(2個):盲 XSS 連結 Cookie 竊取($20-40k)、GitHub Issue 會議旁聽($20-25k)
  • 難級(4個):Perforce 遠端 RCE($15-30k)、DHCP 配置注入($20-32k)、DNS Mask 雙重注入(續前)、.NET SQLite 注入($30-40k)
  • 非常難(2個):SIP OAuth 偽造攝像頭訪問($20-50k)、SIP 第三方註冊劫持($20-50k)
  • 具體漏洞特徵:
  • Nginx 繞過:%53(URL 編碼的 S)透過反向代理白名單
  • OAuth 憑證:Base64 編碼的憑證儲存在 JS 檔案中,接受任意密碼
  • 數字 IDOR:API 端點使用自增數字 ID,洩露密碼雜湊和重置令牌
  • SMS XSS:簡訊訊息介面同時存在 XSS 與 IDOR,Cookie 在不可見 iframe 中竊取
  • SIP 盲點:participant list 更新訊號由客戶端單向傳送,可被選擇性忽略
  • Perforce 協議:RPC 二進位制格式為(引數名 + null + 長度 + 值 + null),服務端可強制檔案寫入
  • DHCP 注入:IP 保留功能未轉義 DHCP 命令,可注入 run shell 指令
  • DNS 行限制:1025 位元組限制導致指令溢位到下一行被解析
  • 關鍵工具與技術棧:
  • 反編譯:JADX (APK)、dotPeek (.NET)、Ghidra (通用)
  • 動態分析:Frida + objection (Root 檢測繞過、TLS 固定脫釘)
  • 代理與嗅探:Burp Suite、Polar Proxy (SIPS 支援)、PCAP 分析
  • 硬體:熱風焊臺(500℉)、BGA 讀卡器、EMMC 晶片提取
  • 程式設計輔助:struct.pack、ChatGPT (二進位制編碼)、十六進位制編輯器
  • 應用修改:Kaido Match & Replace (功能標誌切換)
  • 協議理解細節:
  • SIP 認證流:/API/get_sip_oauth_token 返回包含 from/to 的令牌 → REGISTER/INVITE 請求驗證 from/to 匹配 → 自動應答依賴特定 from/to 值
  • OAuth 令牌結構:GWT 樣式但實際是自定義格式,分隔符包含 from/to 欄位
  • Perforce 二進位制 RPC:call 名 + 引數對陣列 + null 位元組分隔,客戶端盲目信任服務端指令

結論

結論

威脅模型的轉變、多維度視角的交叉驗證、系統化的連結思維與跨領域協作是挖掘關鍵漏洞的核心,而深入理解目標系統的設計邊界往往比程式碼審計更有價值。

完整解析

詳細

Justin Gardner 是全職 Bug Bounty 獵手,在這場 DEF CON 演講中分享了過去兩三年間發現的 11 個關鍵等級漏洞,總賞金在 $225-400k 之間。演講的核心邏輯是重現實時駭客大賽中"秀成果"環節的體驗,即透過深度技術講解展現漏洞發現的完整思路。

前期簡單漏洞:威脅模型與文件盲點

第一個 Nginx 403 繞過案例啟示了"威脅模型轉變"的危險。該企業將內部應用改為公開產品,但 Nginx 反向代理仍保留了原有的防禦規則。Justin 透過對比 Nginx 返回的 403(網路層)與應用層 403 的差異,推斷出防禦規則位置錯誤,進而嘗試 URL 編碼(%53)繞過黑名單,成功訪問 `/api/internal/get_all_users` 端點並洩露 450 萬使用者 PII。關鍵啟示是識別異常的錯誤頁面往往暗示了防禦位置不當。

第二個漏洞來自 OAuth 文件。該應用雖然聲稱使用 OTP 登入(無密碼),但文件中出現了密碼登入端點。在查閱 Authorization 憑證時,Justin 在 JS 檔案中發現了 Base64 編碼的憑證。用這些憑證呼叫 OAuth 端點後,該應用竟然接受了任意密碼並返回訪問令牌,導致千萬級賬戶任意接管。這說明在充分信任文件、閱讀 JS 程式碼尋找隱藏憑證的做法往往有奇效。

第三個漏洞更簡潔:某應用的 OAuth API 端點存在數字 IDOR,直接洩露密碼雜湊和密碼重置令牌。這個漏洞的發現需要 40 小時的應用熟悉過程,說明"深入"應用的各個功能模組是必要的前置工作,不應被忽視。

中等複雜度漏洞:多視角與連結攻擊

第四個漏洞是經銷商 CRM 應用的綜合利用。Justin 首先發現了隱藏在 JavaScript 中的功能標誌(feature flags),透過 Kaido Match & Replace 工具啟用了"訊息"功能。接著他從三個不同身份視角(客戶、經銷商、系統)交叉驗證,發現簡訊訊息介面同時存在三個漏洞:IDOR(可偽造任意經銷商和客戶 ID)、XSS(簡訊訊息內容注入惡意指令碼)和另一個 IDOR(獲取所有客戶資料)。攻擊鏈路為:傳送 XSS 有效載荷至自己的簡訊 → 在經銷商面板檢視時觸發 XSS → 在不可見的 OAuth iframe 中竊取授權碼 → 獲得經銷商會話令牌 → 用經銷商身份登入並檢視所有客戶 PII → 向所有客戶傳送包含 XSS 的簡訊(利用 IDOR 偽造發件人)→ 批次收集會話令牌。這個"連結"(chaining)過程充分展示了多個小漏洞組合後的指數級危害。

第五個漏洞源自 GitHub Issue 挖掘。某視訊會議應用的 Issue 記錄中提到"使用特定音訊裝置時參與者列表錯誤"。Justin 推斷音訊連線訊號是觸發參與者列表更新的機制,透過 Kaido Match & Replace 禁用該訊號的傳送,實現了在不出現在參與者列表中的情況下監聽會議("snoop dog")。這啟示是 GitHub Issues 往往隱含安全相關的線索。

遠端協議層漏洞:二進位制逆向與伺服器模擬

第六個漏洞涉及 Perforce 版本控制協議。該桌面應用允許連線遠端版本控制伺服器同步程式碼。Justin 透過閱讀 Perforce 協議文件,理解了 RPC 的二進位制格式,並用 Python 的 struct.pack 和 ChatGPT 的輔助開發了惡意伺服器。當受害者開啟包含惡意配置的檔案後,應用會自動連線攻擊者的伺服器。伺服器簡單地忽略 auth 過程並直接傳送 write 檔案命令,覆寫每 2 秒自動執行的 exe 檔案,實現遠端程式碼執行。關鍵啟示是即使不熟悉二進位制協議,透過文件自學與工具輔助也可快速突破。

硬體與配置層漏洞:深度系統理解

第七和第八個漏洞來自物理提取的路由器韌體。透過熱風焊臺和 BGA 讀卡器提取 EMMC 晶片後,Justin 發現了兩個配置注入漏洞。DHCP 配置漏洞在於"IP 保留"功能未轉義使用者輸入的 IP 地址,允許注入 DHCP 命令(如 `dhcp-script=run` 執行 shell 命令)。DNS Mask 配置漏洞更復雜:兩個注入點都需要 `user root` 指令來啟用 TFTP 服務,但該指令不能重複。解決方案來自安全研究者 Sam Erb:利用 DNS Mask 的 1025 位元組行長度限制,在短行中將 `user root` 放在註釋中(停在 1025 位元組邊界),在長行中讓它溢位到下一行並被正確解析。這說明漏洞往往源於系統的邊界條件而非程式碼缺陷。

二進位制應用與資料庫注入

第九個漏洞在版本控制二進位制應用中發現。Justin 用 dotPeek 反編譯 .NET 可執行檔案獲得原始碼,發現上傳檔案時會將檔名直接插入 SQLite 查詢。透過上傳惡意 SQL 注入檔名,他實現了資料庫命令執行,進而匯出使用者的 Chrome Cookie(也儲存為 SQLite 資料庫),最終實現了賬戶接管。這提示是即使是"老舊"的漏洞型別(SQL 注入)仍廣泛存在於非 Web 應用中。

最複雜的利用:多層認證繞過與協議偽造

第十和第十一個漏洞聚焦智慧家居攝像頭的多層認證機制。目標是在無使用者互動的情況下監聽攝像頭。攻擊鏈路包括: 1. 用 JADX 反編譯 APK,Frida + objection 繞過 Root 檢測與模擬器檢測 2. 發現自定義 TLS 固定實現,用 Frida 指令碼覆寫校驗函式 3. 發現 Burp 不支援 SIPS 協議,改用 Polar Proxy 作為透明代理 4. 分析 SIP 認證流程:應用向 `/API/get_sip_oauth_token` 請求令牌,令牌包含 from 和 to 欄位 5. 在 `/api/initiate_call` 中注入目標引數,將其反射到令牌的 to 欄位 6. 透過在 target 引數中注入分號和新的 from 欄位,生成偽造令牌 7. 發現 from 欄位由 .so 二進位制檔案設定且難以用 Frida 鉤取,改用十六進位制編輯器直接修改 APK 字串 8. 最終以自動應答裝置的身份(from=victim_device, to=victim)偽造呼叫,繞過 OAuth 驗證並獲得實時影片和音訊訪問

第十一個漏洞是變種利用:SIP 的第三方註冊特性允許一個使用者為另一個使用者註冊,攻擊者利用這一點將受害者的呼叫地址對映到自己的裝置,實現呼叫劫持。

關鍵時刻

Pipeline v2

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

事實查核

Pipeline v2

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

更多「Web2 安全」的內容

Risky Bulletin: Russia starts blocking DoH and DoT
編輯精選
8 min
Web2 安全英文PODCAST8月26日

Risky Bulletin: Russia starts blocking DoH and DoT

Risky Business

  • 國家級網路管制層級提升:俄羅斯主動封鎖加密 DNS 協定對抗審查工具,中國加速淘汰 Windows 系統並遷移自主 Linux 發行版,各國正透過技術與法律手段強化網路主權與信息控制能力。
  • 詐騙犯罪走向精密化與自動化:從冒充警察的聲音詐騙(竊取 7.2 百萬美元)、AI 語音代理自動化破解 iPhone 啟用鎖、到跨越數百網站的投資詐騙(詐騙 7400 萬美元),犯罪組織正利用自動化工具與 AI 技術大幅降低成本並擴大規模。
  • AI 惡意軟體威脅實際上被嚴重誇大:405 個整合 AI 的惡意軟體樣本中僅 12 個於真實感染被偵測,其餘來自測試環境,證明當前 AI 惡意軟體仍停留於實驗階段,尚未構成主流威脅。
SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;
5 min
Web2 安全英文PODCAST8月26日

SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;

SANS Stormcast

  • SSRF 攻擊者已進化出高級繞過手段,不直接使用元數據服務 IP(169.254.169.254),而改用專門域名服務將請求轉址,支援點或破折號分隔 IP,甚至可自部署 DNS 伺服器進行 DNS 重綁定攻擊,使傳統簡易過濾機制失效。
  • 本地 AI 模型並非完全隱私:微軟 Paint 雖在本地執行生成邏輯,但安全檢查需上傳提示文字至遠程伺服器,返回時圖像內嵌不易移除的伺服器 GUID 隱形浮水印,可見浮水印(Copilot 圖標)則易被移除。
  • 傳統 FTP 協議被新型惡意軟體重新利用為命令控制通道,透過 FTP banner 傳遞指令於連接埠 21,防守者應視任何出站 FTP 流量為異常信號。
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 錯誤報告,進而收集目標系統配置情報。