Turbo Intruder là tiện ích mở rộng trong Burp Suite cho phép bạn tạo và xử lý hàng triệu Request bằng Python. Đảm bảo cho việc tối ưu về bộ nhớ RAM, và giảm hiện tượng lag của Burp Suite.
Intruder là công cụ mặc định trong Burp Suite giúp bạn tạo ra hàng triệu Request phục vụ việc test các lỗ hổng như IDOR, Race Condition, Brute-Force.
Tuy nhiên hiệu năng của Intruder không thực sự tốt. Thường xuyên xảy ra hiện tượng Memory Leak, Crash và Burp Suite trở nên ì ạch nếu bạn thực hiện fuzzing ứng dụng trong nhiều ngày. Nó cũng không cho bạn tuỳ biến nhiều trường hợp tấn công phức tạp.
Chúng phụ thuộc rất nhiều vào Attack Type (Sniper, Battering Ram, Pitfork hoặc Cluster Bomb) và Payload Type. Có lẽ nó chỉ phù hợp với người dùng phổ thông.
Ngay cả James Kettle (Tác giả của Burp Suite) cũng cảm thấy Intruder không được ngon lành cho lắm. Nên ông ý đã viết ra một thứ tốt hơn mang tên Turbo Intruder. Những ưu điểm mà nó đem lại bao gồm:
- Tùy biến được rất nhiều kiểu tấn công vì lúc bạn sẽ tự code luồng tạo request và xử lý kết quả bằng python
- Nó có khả năng Scalable vì có thể chạy ở giao diện dòng lệnh, tốn ít bộ nhớ hơn Burp Suite là điều chắc chắn.
Mục lục
Cài đặt Turbo Intruder
Truy cập vào Extensions -> BApp -> Turbo Intruder. Extension này dùng được ở cả hai phiên bản Pro và Community
Sử dụng Turbo Intruder
- Nếu bạn muốn thực hiện gửi nhiều Request tới Endpoint nào, hãy chọn Request đó trong HTTP Proxy -> Chuột phải chọn Extension -> Turbo Intruder -> Send to turbo Intruder
- Tham số nào cần test (thay đổi giá trị liên tục) thì đưa ký tự %s vào chỗ đó.
- Viết code python hoặc sửa lại các đoạn mã trong kho example của Turbo Intruder
- Nhấn nút Attack để test
Khi sử dụng Turbo Intruder, kết quả của hàng triệu Request sẽ không tự động lưu vào trong Table Results. Để lưu lại các kết quả và loại bỏ những dữ liệu không cần thiết, bạn nên sử dụng handleResponse() trong API của Turbo Intruder. Như ví dụ dưới đây, Turbo Intruder chỉ lưu lại các Request mà req.response (HTTP Response) của nó là “200 OK”. Xem thêm tài liệu API của Turbo Intruder ở đây
def handleResponse(req, interesting):
if '200 OK' in req.response:
table.add(req)
Case Study Turbo Intruder
Trong bài viết này, mình sử dụng Turbo Intruder để mô phỏng tấn công Brute Force Pin Code hoặc OTP. Với thử thách Baby Logic Pincode từ nền tảng Cookie Arena, các bạn có thể thực tập làm quen với extension này.
Tham số trong Request được đổi thành pin=%s. Vì pin code chỉ có 4 ký tự, nên mình sẽ lấy một dictionary từ 0000-9999 lưu trong file pin.txt. Turbo sẽ tự động lấy các giá trị và chạy nó ở dạng multi thread
Kinh nghiệm sử dụng Turbo Intruder
- Nếu bạn chưa quen viết code python cho Turbo Intruder, có thể tham khảo kho mã nguồn ví dụ ở đây
- Kinh nghiệm để chạy Tool scan hoặc Brute-force cho hiệu quả, thì việc đầu tiên các cậu cần xác định được ngưỡng Base Line Request của mục tiêu. Ví dụ họ thiết lập tối đa 5requests/s, bạn gửi 10req/s thì toàn bộ quá trình test của bạn sẽ bị chặn lại và không đạt được hiệu quả.
CX5
Mong a chia sẻ thêm về 2 tham số concurrentConnections, requestsPerConnection và pipeline. Làm sao để thiết lập 3 tham số này với mục tiêu là đạt tốc độ gửi request nhanh nhất ạ. Em cảm ơn anh