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:
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:
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: username
và password
.
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à burp
, suite
, and intruder
thì sẽ có 6 requests như sau:
Request Number | Request Body |
---|---|
1 | username=burp&password=Expl01ted |
2 | username=suite&password=Expl01ted |
3 | username=intruder&password=Expl01ted |
4 | username=pentester&password=burp |
5 | username=pentester&password=suite |
6 | username=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 Number | Request Body |
---|---|
1 | username=burp&password=burp |
2 | username=suite&password=suite |
3 | username=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: joel
, harriet
và alex
. Wordlist thứ hai là passwords của các usernames, lần lượt là J03l
, Emma1815
và Sk1ll
.
Khi sử dụng pitchfork, các requests có thể sẽ có dạng như sau:
Request Number | Request Body |
---|---|
1 | username=joel&password=J03l |
2 | username=harriet&password=Emma1815 |
3 | username=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:
joel
,harriet
,alex
. - Passwords:
J03l
,Emma1815
,Sk1ll
.
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 Number | Request Body |
---|---|
1 | username=joel&password=J03l |
2 | username=harriet&password=J03l |
3 | username=alex&password=J03l |
4 | username=joel&password=Emma1815 |
5 | username=harriet&password=Emma1815 |
6 | username=alex&password=Emma1815 |
7 | username=joel&password=Sk1ll |
8 | username=harriet&password=Sk1ll |
9 | username=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.txt
và passwords.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.bennet
và bella1
.