Phím tắt chuyển request sang Intruder là CTRL + I

Trong giao diện của Burp Suite có các sub-tab như sau:

  • Positions: cấu hình những vị trí cần chèn payload ở trong request template.
  • Payloads: quản lý payloads.
  • Resource pool: quản lý tài nguyên khi chạy Intruder.
  • Options: thiết lập các Burp handle requests và responses.

Positions

Ta tạm gọi những vị trí cần chèn payload là “positions”. Các positions ở trong request template được tô màu xanh và nằm bên trong cặp dấu §.

Minh họa một request template:

Screenshot of the positions sub-tab

Các thao tác:

  • Add: thêm một position.
  • Clear: xóa tất cả các positions.
  • Auto: khôi phục các positions có sẵn.

Minh họa các thao tác:

GIF showing how to select positions

Attack Types

Có bốn loại tấn công ở trong tab “Positions” như sau:

  • Sniper
  • Battering ram
  • Pitchfork
  • Cluster bomb

Sniper

Là loại phổ biến nhất. Khi thực hiện tấn công sniper, ta sử dụng một tập các payloads. Ví dụ, các payloads này có thể là một file wordlist hoặc là một khoảng giá trị các số.

Ví dụ:

POST /support/login/ HTTP/1.1
Host: MACHINE_IP
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 37
Origin: http://MACHINE_IP
Connection: close
Referer: http://MACHINE_IP/support/login/
Upgrade-Insecure-Requests: 1
 
username=§pentester§&password=§Expl01ted§

Có hai positions được định nghĩa ở trong ví dụ này: usernamepassword.

Trong một cuộc tấn công sniper, Intruder sẽ thay thế từng payload vào các positions.

Lấy ví dụ, nếu wordlist của chúng ta có ba từ là burpsuite, and intruder thì sẽ có 6 requests như sau:

Request NumberRequest Body
1username=burp&password=Expl01ted
2username=suite&password=Expl01ted
3username=intruder&password=Expl01ted
4username=pentester&password=burp
5username=pentester&password=suite
6username=pentester&password=intruder

Có thể thấy, sniper sẽ thế tất cả các payloads vào username trước rồi mới thế vào password.

Ta có thể tính số lượng requests của sniper như sau: requests = numberOfPayloads * numberOfPositions.

Info

Sniper khá tốt đối với các loại tấn công single-position, chẳng hạn như fuzzing API endpoints hoặc password bruteforcing nếu như ta đã biết username.

Battering Ram

Cũng sử dụng một tập các payloads (cụ thể là wordlist) giống sniper. Tuy nhiên, battering ram thay thế cùng một payload vào tất cả các positions thay vì thế vào từng position như sniper.

Sử dụng lại request và wordlist ở trong phần sniper, battering ram sẽ có tổng cộng 3 requests là:

Request NumberRequest Body
1username=burp&password=burp
2username=suite&password=suite
3username=intruder&password=intruder

Pitchfork

Có thể xem pitchfork như là chạy nhiều sniper cùng lúc. Thay vì dùng một wordlist cho nhiều positions như sniper, pitchfork dùng nhiều wordlist cho nhiều positions, mỗi position tương ứng với một wordlist.

Info

Số wordlist tối đa có thể sử dụng là 20.

Giả sử wordlist đầu tiên của chính ta là các usernames: joelharriet và alex. Wordlist thứ hai là passwords của các usernames, lần lượt là J03l, Emma1815Sk1ll.

Khi sử dụng pitchfork, các requests có thể sẽ có dạng như sau:

Request NumberRequest Body
1username=joel&password=J03l
2username=harriet&password=Emma1815
3username=alex&password=Sk1ll

Có thể thấy, các payloads thứ i ở trong từng wordlist sẽ được thế vào các positions và tạo thành một request. pitchfork sẽ lặp lại quá trình này đến khi một trong hai wordlists không còn giá trị để thay thế.

Info

Loại tấn công này cực kỳ hữu ích khi thực hiện các cuộc tấn công credential stuffing.

Cluster Bomb

Tương tự như pitchfork, cluster bomb cho phép chúng ta sử dụng nhiều wordlist, tối đa 20 cái. Tuy nhiên, trong khi pitchfork lặp qua từng payload thứ i ở trong các wordlist, cluster bomb sẽ lặp qua tất cả các combination của các wordlists.

Lấy ví dụ hai wordlists sau:

  • Usernames: joelharrietalex.
  • Passwords: J03lEmma1815Sk1ll.

Lần này, ta không biết password nào ứng với username nào. Trong trường hợp này, ta nên dùng cluster bomb.

Các requests có thể có là:

Request NumberRequest Body
1username=joel&password=J03l
2username=harriet&password=J03l
3username=alex&password=J03l
4username=joel&password=Emma1815
5username=harriet&password=Emma1815
6username=alex&password=Emma1815
7username=joel&password=Sk1ll
8username=harriet&password=Sk1ll
9username=alex&password=Sk1ll

Burp phiên bản Community giới hạn tốc độ gửi request, do đó cần cân nhắc khi thực hiện tấn công cluster bomb.

Payloads

Nếu sử dụng các loại tấn công cần nhiều wordlists, thứ tự của các wordlists ở trong “Payload set” sẽ tương ứng với các positions ở trong request. Ví dụ, hai positions như bên dưới:

username=§pentester§&password=§Expl01ted§

Thì sẽ lần lượt tương ứng với wordlist 1 và wordlist 2.

”Payload processing” giúp định nghĩa các rules sẽ được áp dụng cho từng payload trước khi nó được gửi cho target. Ví dụ, chúng ta có thể in hoa payload hoặc skip payload nếu nó match với một regex.

”Payload encoding” giúp URL-encode các ký tự mà ta cần.

Tip

Khi chạy Intruder cho trang đăng nhập, để biết được request thành công hay thất bại ta có thể nhìn vào:

  • Status code: 200 là thành công, 401 là thất bại. Các status code còn lại thì tùy.
  • Length: response nào có càng ít byte thì càng cho biết đó là một response thành công.

Challenge

Description

Có một số ticket bị lỗi IDOR và chứa flag.

Gửi request đến http://10.10.91.24/support/ticket/6, capture request và chuyển sang Intruder. Sau đó chọn chế độ Sniper và chọn payload type là Numbers. Thiết lập number range từ 1-100, step là 1 và thực hiện tấn công.

Trong danh sách kết quả chọn ra những request có status code là 200, thấy được tron response của ticket số 83 có chứa flag.

Success

THM{MTMxNTg5NTUzMWM0OWRlYzUzMDVjMzJl}

CSRF Token Bypass

Form đăng nhập có thêm trường ẩn với parameter name là loginToken chứa anti-CSRF token. Ngoài ra ở trong trường cookie còn chứa trường session. Mỗi lần thực hiện request là hai trường này thay đổi. Do đó, cần setup macro để lấy hai giá trị này cho vào từng request khi thực hiện tấn công.

Làm theo hướng dẫn của room để setup macro. Các position là username và password, attack type sử dụng là pitchfork với hai payload list của room là usernames.txtpasswords.txt.

Sau khi thực hiện tấn công thì có được tên tài khoản và password của admin lần lượt là: o.bennetbella1.

Resources