Tranh chấp và Smuggling
Tranh chấp / Smuggling cung cấp hai công cụ chuyên dụng cho các cuộc tấn công HTTP nhạy cảm về thời gian và ở cấp giao thức.
Điều kiện tranh chấp
Tab Race gửi đồng thời nhiều bản sao của một yêu cầu đến cùng endpoint, cho phép bạn so sánh phản hồi và thời gian giữa các lần thực thi song song.
Khi nào nên sử dụng
- TOCTOU (thời điểm kiểm tra/thời điểm sử dụng): kiểm thử xem các yêu cầu đồng thời có thể xen vào giữa bước kiểm tra và thao tác thay đổi trạng thái hay không.
- Thao tác tài khoản: gửi đồng thời các thay đổi số dư, yêu cầu sử dụng mã giảm giá hoặc thao tác có giới hạn để kiểm thử chi tiêu kép hoặc sử dụng vượt mức cho phép.
- Vượt giới hạn bỏ phiếu hoặc tốc độ: xác nhận giới hạn theo từng người dùng có được thực thi một cách nguyên tử hay không.
Chạy kiểm thử tranh chấp
- Tạo hoặc gửi yêu cầu mục tiêu đến tab Race.
- Đặt giá trị mức đồng thời, tức số bản sao gửi song song.
- Nhấp Gửi {count} yêu cầu. Các bản sao được gửi gần như đồng thời nhất có thể.
- Xem bảng phản hồi: mã trạng thái, nội dung và thời gian đã trôi qua cho từng bản sao.
- Khác biệt giữa các phản hồi (mã trạng thái khác nhau, nội dung khác nhau, thành công ngoài dự kiến ở các bản sao 2+) cho thấy có cửa sổ tranh chấp.
Kiểm thử tranh chấp bằng một gói tin HTTP/2
Khi mục tiêu hỗ trợ HTTP/2, bật Chế độ HTTP/2. HTTP/2 ghép tất cả yêu cầu song song trên một kết nối, giúp loại bỏ dao động độ trễ mạng và khiến các yêu cầu đến máy chủ đồng thời đáng tin cậy hơn.
HTTP request smuggling
Tab Smuggling kiểm thử cách máy chủ xử lý các header Content-Length và Transfer-Encoding mơ hồ để phát hiện mất đồng bộ giữa frontend và backend.
Kiến thức nền
Khi proxy ngược và máy chủ backend không thống nhất về điểm kết thúc của một yêu cầu và điểm bắt đầu của yêu cầu tiếp theo, một tiền tố được lén chèn từ yêu cầu A có thể được thêm vào đầu yêu cầu B. Tác động có thể từ đầu độc bộ nhớ đệm đến vượt xác thực và chèn yêu cầu tùy ý.
Các biến thể mất đồng bộ
| Biến thể | Mô tả |
|---|---|
| CL.TE | Frontend dùng Content-Length; backend dùng Transfer-Encoding |
| TE.CL | Frontend dùng Transfer-Encoding; backend dùng Content-Length |
| TE.TE | Cả hai dùng Transfer-Encoding nhưng phản ứng khác nhau với header bị làm rối |
Chạy thăm dò smuggling
- Chọn endpoint mục tiêu trong tab Smuggling.
- Chọn biến thể mất đồng bộ cần kiểm thử.
- Nhấp Chạy thăm dò Smuggling. Công cụ gửi yêu cầu được tạo có chủ đích và đo phản hồi.
- Hết thời gian chờ hoặc phản hồi ngoài dự kiến ở yêu cầu thứ hai trong chuỗi cho thấy khả năng mất đồng bộ.
- Xác nhận thủ công trước khi tạo phát hiện bảo mật; có thể xuất hiện dương tính giả khi điều kiện mạng gây hết thời gian chờ không liên quan đến yêu cầu thăm dò.