From Easy Wins to Epic Challenges: Bounty Hunter Edition | Bug Bounty Village, DEF CON 32
三句話摘要
賞金獵人的冒險:從簡單漏洞到複雜攻擊鏈的實戰案例分享。 深度理解技術棧的實現細節是發現高價值漏洞的關鍵,環境隔離、加密設計、規範邊界處都可能隱藏從數千到數萬美元的安全風險。 環境隔離缺失導致認證完全繞過:Swisscom測試環境與生產環境共享密鑰存儲庫,測試環境固定PIN碼111可直接登入生產系統,雖然簡單卻影響數百萬用戶個人資訊。
重點整理
重點- 1
環境隔離缺失導致認證完全繞過:Swisscom測試環境與生產環境共享密鑰存儲庫,測試環境固定PIN碼111可直接登入生產系統,雖然簡單卻影響數百萬用戶個人資訊。
- 2
加密cookie的設計漏洞可被簡單利用:三個加密cookie中的SMS令牌可複製到驗證碼顯示cookie中洩露,因為兩者使用相同加密密鑰與演算法,攻擊難以自動化但低成本高收益。
- 3
複雜漏洞鏈需多層技術結合:路徑遍歷繞過 → 刪除保護文件 → XML注入 → XInclude包含日誌 → XPath盲注逐字竊取會話令牌 → RCE,每一步都基於對應用實現的深度理解。
- 4
標準規範的邊界情況隱藏重大漏洞:郵件RCE鏈利用PHP double escaping、RFC 2047 MIME編碼、底線當空格等規範邊界,通過MTA配置注入實現任意檔案寫入與PHP代碼執行。
實用技巧與重點
乾貨- Swisscom駕駛艙系統:
- SMS令牌硬編碼為111
- cookie: 駕駛艙_擷取文字、駕駛艙_MSISDN、駕駛艙_SMS_令牌
- 複製SMS令牌cookie到驗證碼顯示cookie洩露PIN
- 登入取消後仍保持已登入狀態
- 獎金:8000+3000+8000美元,共約50萬美元來自Swisscom
- Swisscom被收購公司(PHP CMS):
- 使用XML資料庫與檔案系統存儲
- 路徑遍歷繞過:dotpipe.pipe slash
- 刪除htxs保護檔案訪問XML資料庫
- XML注入破壞XML結構
- XInclude指令:`<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/path/to/db">` 包含日誌數據庫
- XPath盲注:字符逐一比較竊取會話令牌
- 獎金:3000美元+2000美元編輯獎金
- 瑞士郵政支付系統:
- 交易超時時預設返回成功(應返回失敗)
- 延遲支付完成可獲免費資金
- 獎金:3000美元
- 瑞士郵政CMS(Pepperhop):
- 非標準SQL分隔符(非分號)
- B64開始/結束標籤:`<B64>encoded_string</B64>` 被替換為解碼後的字符
- 備份恢復功能SQL注入
- 序列化PHP物件反序列化(通過訂單備註欄位,該欄位未被清理)
- 自訂gadget鏈刪除./htaccess檔案繞過管理員認證
- 獎金:6650美元
- 大型PHP CMS - SSTI漏洞:
- 初始SSTI: `{php_code}`標籤
- 官方補丁:移除標籤並替換
- 繞過方法1:結束標籤前換行(因正則無multiline模式)
- 繞過方法2:不關閉起始標籤,依賴後續補丁添加結束標籤
- 獎金:10000美元+小獎金
- 大型PHP CMS - 郵件RCE鏈:
- Laminas郵件庫驗證寄件者標頭
- PHP double escaping:escapeshellarg + mail函數內部轉義
- RFC 2047 MIME word編碼:`=?UTF-8?B?base64_encoded?=`
- 底線作為空格(RFC允許):`=?UTF-8?Q?test_payload?=`
- MTA參數注入:`-C /path/to/config -X /path/to/deadletter`
- mail()第五參數控制sendmail二進制參數
- 前置條件:短Web根目錄、可上傳檔案
- 獎金:5000美元
結論
結論“深度理解技術棧的實現細節是發現高價值漏洞的關鍵,環境隔離、加密設計、規範邊界處都可能隱藏從數千到數萬美元的安全風險。”
完整解析
詳細Blake是一位從業七年的資深賞金獵人,擁有15年CTF經驗與18年總工作經驗,專精Web應用與PHP應用安全。他已在各平台累計賺取約200萬美元,對複雜攻擊鏈特別感興趣。本次演講分享了他在三家主要客戶身上的代表性發現。
Swisscom(瑞士最大電信商)提供了三個有趣的漏洞案例。最簡單的是測試環境完全暴露——SMS驗證碼固定為111,且測試環境與生產環境共享密鑰存儲庫。當測試環境登入功能故障時,Blake嘗試在生產環境預演(Pre)系統中使用測試PIN碼,結果成功登入。雖然極其簡單,卻能存取數百萬個IP位址後的用戶個人識別資訊。第二個漏洞體現了對細節的觀察——登入流程設置三個加密cookie,他發現通過複製SMS令牌cookie的內容到驗證碼顯示cookie中,由於使用相同加密方式,PIN碼會被解密並顯示在頁面上。第三個更詭異——只要收到SMS驗證碼後立即取消,系統仍會保持已登入狀態。
一個被Swisscom收購的公司使用了不知名的PHP CMS,暴露了複雜的漏洞鏈。該系統採用XML資料庫與檔案系統存儲(無SQL)。路徑遍歷防護試圖刪除`../`但有繞過方法(使用`../ pipe ../ pipe`),Blake利用此創建了特定目錄,進而刪除了唯一的`.htaccess`保護檔案,暴露XML資料庫。登入日誌資料庫包含所有用戶會話令牌。通過XML注入,他在用戶名中注入`<!ENTITY % include SYSTEM "path/to/login_logs">` 的XInclude指令,將登入日誌包含到被鎖定用戶資料庫中。由於該應用重新格式化XML文件,直接注入無法提取數據,但他發現通過XPath盲注可逐個字符竊取會話令牌——根據登入失敗次數與用戶鎖定状態的不同響應作為預言機,最終提取了管理員會話令牌並實現RCE。
瑞士郵政的支付系統包含有趣的邏輯漏洞。當交易超時(規定時間內未完成支付)時,系統預設返回成功而非失敗——這意味著只要在交易發起後等待足夠時間,就能免費獲得充值。該公司另一CMS使用非標準SQL分隔符與B64編碼功能。在備份恢復功能中,Blake利用未被清理的訂單備註欄位進行SQL注入。通過B64標籤注入特殊字符破壞SQL語法,並在恢復時注入更新語句,將序列化PHP物件寫入訂單資料。該物件包含的gadget鏈能夠刪除`.htaccess`檔案,從而繞過管理員認證機制。
最後一個大型PHP CMS的漏洞最為複雜。初始SSTI漏洞(`{php_code}`標籤)被官方修補後,Blake發現可通過在結束標籤前換行符來繞過正則表達式。但更有意思的是郵件RCE鏈,它涉及PHP double escaping、RFC 2047 MIME編碼與MTA參數注入的完美風暴。Laminas郵件庫先對寄件者地址進行escapeshellarg轉義,但mail()函數會再次應用轉義,導致參數注入。通過RFC 2047格式(`=?UTF-8?B?base64?=`或`=?UTF-8?Q?quoted?=`)編碼特殊字符,底線被定義為空格,Blake構造了一個payload來注入MTA配置參數。由於本地部分限制為64字符,他上傳了惡意MTA配置檔案,該檔案會將failed郵件的死信記錄寫入Web根目錄的`app.php`,最終實現PHP代碼執行。這個漏洞鏈因前置條件多(需短Web根、可上傳、郵件功能可用)而難以利用。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

