Top War Stories from a Try Hard Bug Bounty Hunter, Rhynorater | Bug Bounty Village, DEF CON 32
三句話摘要
職業 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 只會顯示它真正能驗證的內容。

