Burp Suite là công cụ không thể thiếu trong web pentesting. Hầu hết mọi người chỉ dùng Proxy và Repeater, nhưng Burp có rất nhiều tính năng nâng cao đáng để khám phá.
1. Match and Replace Rules
Tự động thay đổi request/response theo rule:
# Proxy → Options → Match and Replace
# Ví dụ: Tự động thêm header vào mọi request
Type: Request header
Match: ^$
Replace: X-Forwarded-For: 127.0.0.1
# Bypass IP restriction bằng cách giả mạo IP
# Hoặc inject custom header để test logic lỗi
2. Burp Collaborator — OAST Testing
# Out-of-band Application Security Testing
# Dùng để phát hiện blind SQLi, SSRF, XXE không có response trực tiếp
# Trong Repeater, click "Burp Collaborator client"
# Copy URL: https://xxxx.burpcollaborator.net
# Inject vào request
POST /api/webhook HTTP/1.1
{"url": "https://xxxx.burpcollaborator.net/test"}
# Burp sẽ notify khi server target gọi về Collaborator
# → Xác nhận SSRF dù không có response thấy được
3. Intruder — Cluster Bomb Attack
# Brute force login với nhiều wordlist đồng thời
# Attack type: Cluster Bomb
# Position markers
username=§admin§&password=§password§
# Payload set 1 (username): users.txt
# Payload set 2 (password): rockyou-top1000.txt
# Grep Match: "Welcome" hoặc "dashboard"
# → Tự động highlight response thành công
4. Logger Tab — Forensic Analysis
# Burp Suite 2022.8+ có Logger tab
# Log TOÀN BỘ HTTP traffic qua Burp, kể cả traffic từ extensions
# Filter:
# - Response code: 200, 302
# - Request method: POST
# - URL contains: /api/
# Export để phân tích sau với Python
5. DOM Invader — DOM XSS Hunter
# Built-in trong Burp browser (Chromium)
# Extensions → DOM Invader → Enable
# Tự động inject canary vào mọi source
# Alert khi canary xuất hiện trong DOM sink nguy hiểm:
# - innerHTML
# - document.write()
# - eval()
# - location.href
# Cực kỳ hiệu quả để tìm DOM XSS trong SPA (React, Vue, Angular)
6. Custom Extensions với Montoya API
// Java extension đơn giản — log JWT tokens
import burp.api.montoya.*;
import burp.api.montoya.http.handler.*;
public class JwtLogger implements BurpExtension {
@Override
public void initialize(MontoyaApi api) {
api.http().registerHttpHandler(new HttpHandler() {
@Override
public RequestToBeSentAction handleHttpRequestToBeSent(HttpRequestToBeSent req) {
String authHeader = req.headerValue("Authorization");
if (authHeader != null && authHeader.startsWith("Bearer ")) {
api.logging().logToOutput("JWT: " + authHeader.substring(7));
}
return RequestToBeSentAction.continueWith(req);
}
// ...
});
}
}
Tips thực chiến
- Dùng
Ctrl+Rtrong Proxy history để gửi thẳng sang Repeater - Right-click → “Scan” để chạy active scan trên request cụ thể
- Target → Site map → Filter để chỉ xem endpoint quan trọng
- Comparer tab để diff 2 response — tìm hidden data leak
- Decoder tab: Base64, URL encode, JWT decode inline