競爭條件與請求走私
競爭條件/請求走私提供兩種專用工具,用於對時間敏感的攻擊與通訊協定層級的 HTTP 攻擊。
競爭條件
競爭分頁會同時向相同端點傳送同一請求的多份副本,讓你比較各次平行執行的回應與耗時。
適用時機
- TOCTOU(檢查時間 / 使用時間):測試並行請求是否能將檢查與狀態變更操作分離。
- 帳戶操作:並行傳送餘額變更、優惠券兌換或受限額約束的操作,測試是否存在重複花費或超額兌換。
- 投票或速率限制繞過:確認每位使用者的限制是否以不可分割的方式執行。
執行競爭測試
- 在競爭分頁建立目標請求,或將目標請求傳送至該分頁。
- 設定並行數值,也就是要平行傳送的副本數量。
- 點選發送按鈕(按鈕文字會顯示請求數量)。所有副本會盡可能同時傳送。
- 檢視回應表格中每份副本的狀態碼、本文與經過時間。
- 回應之間的差異(不同狀態碼、不同回應本文、第 2 份及後續副本意外成功)表示存在競爭時間窗。
HTTP/2 單一封包競爭
目標支援 HTTP/2 時,啟用 H2 單封包模式。HTTP/2 在同一連線上多工處理所有平行請求,消除網路抖動,使請求同時抵達伺服器更可靠。
HTTP 請求走私
請求走私分頁測試伺服器如何處理含義不明確的 Content-Length 與 Transfer-Encoding 標頭,以偵測前端 / 後端不同步。
背景
當反向 Proxy 與後端伺服器對一個請求在哪裡結束、下一個請求在哪裡開始的判斷不一致時,請求 A 中走私的前置內容可能被加到請求 B 前面。影響涵蓋快取投毒、驗證繞過與任意請求注入。
不同步變體
| 變體 | 說明 |
|---|---|
| CL.TE | 前端使用 Content-Length;後端使用 Transfer-Encoding |
| TE.CL | 前端使用 Transfer-Encoding;後端使用 Content-Length |
| TE.TE | 兩者皆使用 Transfer-Encoding,但對混淆後的標頭有不同反應 |
執行請求走私探測
- 在請求走私分頁選取目標端點。
- 選擇要測試的不同步變體。
- 點選執行請求走私探測。工具會傳送特製請求並測量回應。
- 序列中第二個請求逾時或出現非預期回應,表示可能存在不同步。
- 建立檢測發現前請手動確認;若網路狀況造成與探測無關的逾時,也可能產生誤判。