Burp Suite Intruder Tool
Comprehensive guide to using Burp Suite's Intruder tool for automated request manipulation and testing
The Intruder tool is Burp Suite's automated request manipulation engine. It allows you to perform customized attacks against web applications by sending multiple variations of requests and analyzing the responses.
Overview
Purpose and Functionality
Intruder serves as Burp Suite's primary automation tool for:
- Fuzzing parameters and inputs
- Brute-forcing credentials
- Enumerating identifiers and resources
- Testing for injection vulnerabilities
- Harvesting useful data from responses
- Performing custom, targeted attacks
It works by taking a base request, defining positions where payloads should be inserted, and then automatically sending multiple requests with different payload values.
Community vs. Professional Edition
The Intruder tool has significant differences between editions:
Community Edition:
- Severely rate-limited - approximately 1 request per second
- Only Sniper and Battering Ram attack types
- Basic payload options
- Limited results analysis
Professional Edition:
- No rate limiting - maximum speed
- All four attack types - including Cluster Bomb and Pitchfork
- Advanced payload types and processing
- Enhanced results analysis
- Resource pool management
Warning: The rate limitation in the Community Edition makes it impractical for many real-world testing scenarios that require processing numerous requests.
Attack Types
Sniper Attack
The Sniper attack targets each position one at a time:
- Uses a single payload set
- Places each payload in each position in turn
- Total requests = number of positions × number of payloads
- Available in both Community and Professional editions
Example:
- Base request with 3 positions
- Payload set with 10 values
- Total requests: 3 × 10 = 30
Best for:
- Testing individual parameters
- Finding vulnerabilities in specific inputs
- Initial fuzzing of multiple parameters
Battering Ram Attack
The Battering Ram attack uses the same payload in all positions simultaneously:
- Uses a single payload set
- Places the same payload in all positions at once
- Total requests = number of payloads
- Available in both Community and Professional editions
Example:
- Base request with 3 positions
- Payload set with 10 values
- Total requests: 10
Best for:
- Testing for vulnerabilities that span multiple parameters
- When the same value needs to be in multiple places
- Testing duplicate parameter submissions
Pitchfork Attack - Professional Only
The Pitchfork attack uses multiple payload sets in lockstep:
- Uses one payload set per position
- Iterates through all payload sets simultaneously
- Total requests = number of payloads in smallest set
- Only available in Professional Edition
Example:
- Base request with 2 positions
- Payload set 1: 10 usernames
- Payload set 2: 10 matching passwords
- Total requests: 10
Best for:
- Testing related pairs of values - username/password
- When payloads need to be coordinated across parameters
- Testing with lists of known valid combinations
Cluster Bomb Attack - Professional Only
The Cluster Bomb attack tries all combinations of payloads:
- Uses one payload set per position
- Tests every possible combination of payloads
- Total requests = product of all payload set sizes
- Only available in Professional Edition
Example:
- Base request with 2 positions
- Payload set 1: 10 usernames
- Payload set 2: 100 passwords
- Total requests: 10 × 100 = 1,000
Best for:
- Brute-force attacks
- Testing all possible combinations
- Comprehensive parameter testing
Warning: Cluster Bomb attacks can generate a very large number of requests. Calculate the total before starting to avoid unintentional denial of service.
Getting Started
Setting Up an Attack
Basic Attack Configuration
-
Select a base request
- Intercept a request in Proxy
- Right-click and select "Send to Intruder"
- Or select from Proxy history or Site map
-
Configure positions
- Go to the Positions tab
- Clear all automatically selected positions if needed
- Add positions manually by selecting text and clicking "Add §"
- Positions are marked with § symbols
-
Select attack type
- Choose from Sniper, Battering Ram, Pitchfork, or Cluster Bomb
- Consider the number of positions and required payloads
-
Configure payloads
- Go to the Payloads tab
- Select or create payload sets
- Add payload values
- Configure payload processing rules if needed
-
Launch the attack
- Click "Start attack"
- A new window opens showing the attack progress
Payload Types
Simple List
The most basic payload type:
- Manually entered or pasted values
- One payload per line
- Can be loaded from a file
- Supports adding prefixes and suffixes
Common uses:
- Wordlists for brute-forcing
- Known values for enumeration
- Test strings for input validation
Example values:
- Usernames: admin, user, test, root
- Passwords: password123, admin123, qwerty
- Injection tests: ' OR 1=1 --, script-alert-script
Numbers
Generates numeric sequences:
- Define start and end values
- Set step size
- Format options - padding, etc.
Common uses:
- User ID enumeration
- Pagination testing
- Sequential resource access
- Numeric boundary testing
Example configuration:
- From: 1
- To: 100
- Step: 1
- Result: 1, 2, 3, ..., 100
Advanced Payload Types - Professional
The Professional Edition includes additional payload types:
Character substitution:
- Replace characters in base strings
- Test character encoding issues
Case modification:
- Generate variations with different case patterns
- Test case sensitivity
Recursive grep:
- Extract values from previous responses
- Use in subsequent requests
Custom iterators:
- Generate complex sequences
- Combine multiple payload sets
Username generator:
- Create username variations from names
Dates:
- Generate date sequences
- Test date-based functionality
These advanced types significantly enhance testing capabilities for specific scenarios.
Payload Processing
Payload Processing Rules
Modify payloads before they're sent:
-
Encoding
- URL encode
- HTML encode
- Base64 encode
- ASCII hex encode
-
String Transformations
- Add prefix/suffix
- Match/replace
- Case modification
- Trim
-
Custom Rules
- Hash functions - MD5, SHA-1, etc.
- Boundary transformations
- Multiple rules can be chained
Processing rules allow you to adapt payloads for specific testing scenarios without modifying the original payload list.
Payload Options
Additional settings for payload handling:
- Payload Encoding: Control how special characters are encoded
- Payload Positions: Define which positions use which payload sets
- Match/Replace: Perform global replacements on payloads
- Grep Extract: Extract values from responses for use in subsequent requests
- Grep Payloads: Filter payloads based on response patterns
These options provide fine-grained control over how payloads are generated and processed during attacks.
Attack Configuration
Positions Tab
Defining Payload Positions
The Positions tab is where you define where payloads will be inserted:
-
Automatic position detection
- Burp automatically identifies common parameters
- Click "Clear §" to remove all positions
- Click "Auto §" to automatically detect positions
-
Manual position selection
- Select text in the request
- Click "Add §" to mark as a position
- Click "Remove §" to unmark a position
-
Position types
- URL parameters
- Body parameters
- Cookies
- Headers
- Request path components
- JSON values
- XML values
-
Position refinement
- Be precise about position boundaries
- Consider encoding requirements
- Think about how the application processes the input
Proper position selection is crucial for effective testing and avoiding application errors.
Advanced Position Techniques
Beyond basic parameter targeting:
-
Nested data structures
- JSON objects and arrays
- XML elements and attributes
- Nested form parameters
-
Multiple positions in one parameter
- Partial parameter replacement
- Testing specific parts of complex values
-
Non-standard positions
- URL path components
- Fragment identifiers
- WebSocket messages
- Custom headers
-
Recursive insertion
- Testing for second-order vulnerabilities
- Payloads that contain payload markers
Advanced positioning allows for more precise and creative testing scenarios.
Payloads Tab
Configuring Payload Sets
The Payloads tab is where you define what values will be inserted:
-
Payload set selection
- For Sniper and Battering Ram: only one set
- For Pitchfork and Cluster Bomb: one set per position
-
Payload type selection
- Simple list
- Numbers
- Custom/advanced types - Professional
-
Adding payload items
- Manual entry
- Paste from clipboard
- Load from file
- Generate from rules
-
Payload options
- Case modification
- Encoding options
- Prefix/suffix settings
Effective payload selection is key to discovering vulnerabilities and avoiding false negatives.
Working with Wordlists
Wordlists are essential for many types of attacks:
-
Common wordlist sources
- SecLists - https://github.com/danielmiessler/SecLists
- Built-in Burp wordlists
- Custom wordlists for specific applications
-
Wordlist types
- Usernames and passwords
- Directory and file names
- Parameter names
- Injection payloads
- Fuzzing strings
-
Wordlist optimization
- Remove irrelevant entries
- Sort by likelihood
- Deduplicate entries
- Customize for the target application
-
Managing large wordlists
- Split into smaller chunks
- Use resource pools - Professional
- Consider runtime and server impact
The right wordlist can significantly improve the effectiveness of your testing.
Options Tab
Request Options
Configure how requests are processed:
-
Request headers
- Update Content-Length header
- Set Connection: close
- Follow redirections
-
Request engine
- Number of threads - Professional
- Throttling settings
- Pause before requests
-
Grep options
- Extract data from responses
- Match patterns for classification
- Define custom extraction rules
-
Redirections
- Follow redirections automatically
- Set maximum redirection depth
Proper request options ensure accurate testing and efficient resource usage.
Grep and Extract
Extract and analyze data from responses:
-
Grep - Match
- Define strings to highlight in results
- Quickly identify interesting responses
- Flag potential vulnerabilities
-
Grep - Extract
- Define patterns to extract data
- Use regular expressions with capture groups
- Extract tokens, IDs, or other values
-
Recursive grep (Professional)
- Use extracted values as payloads
- Chain attacks together
- Follow application logic
-
Common use cases
- Extract CSRF tokens
- Harvest user information
- Identify success/failure indicators
- Extract hidden values for subsequent requests
Grep functionality transforms Intruder from a simple request generator into a powerful data harvesting tool.
Analyzing Results
Results Table
The results table displays all attack requests and responses:
-
Columns
- Request number
- Payload(s) used
- Status code
- Length
- Response time
- Custom extracted values
- Grep matches
-
Sorting and filtering
- Click column headers to sort
- Filter by any column value
- Hide uninteresting results
-
Color coding
- Highlight interesting responses
- Identify patterns and anomalies
- Quickly spot potential vulnerabilities
-
Response inspection
- View full requests and responses
- Analyze headers, body, and rendering
- Compare with other responses
Effective results analysis is crucial for identifying vulnerabilities and understanding application behavior.
Analysis Techniques
Strategies for identifying interesting results:
-
Length-based analysis
- Look for responses with unusual lengths
- Group responses by length
- Identify patterns and outliers
-
Status code analysis
- Group by status code
- Look for unexpected codes (e.g., 200 instead of 403)
- Identify error conditions
-
Time-based analysis
- Look for unusually slow responses
- May indicate successful time-based attacks
- Identify performance issues
-
Content analysis
- Search for specific strings
- Look for error messages
- Identify information disclosure
-
Comparison techniques
- Compare similar requests with different outcomes
- Identify what triggered different behavior
- Understand application logic
Combining multiple analysis techniques provides the most comprehensive view of application behavior and vulnerabilities.
Common Attack Scenarios
Authentication Testing
Brute Force Attacks
Testing authentication mechanisms:
-
Username enumeration
- Target login or registration forms
- Look for different responses for valid vs. invalid usernames
- Use Cluster Bomb with username and password lists
-
Password brute-forcing
- Use Pitchfork for known username/password pairs
- Use Cluster Bomb for trying all combinations
- Look for successful login indicators
-
Multi-factor authentication
- Test for bypasses
- Brute-force verification codes
- Look for implementation flaws
-
Rate limiting detection
- Monitor for account lockouts
- Look for CAPTCHA triggers
- Test IP-based vs. account-based limits
Warning: Always ensure you have proper authorization before performing brute force attacks. Many jurisdictions consider unauthorized brute forcing illegal.
Injection Testing
SQL Injection
Testing for SQL injection vulnerabilities:
-
Detection payloads
' OR 1=1 --
" OR 1=1 --
1' OR '1'='1
1 OR 1=1
-
Error-based detection
- Look for database error messages
- Different responses to malformed queries
-
Boolean-based testing
' AND 1=1 --
vs.' AND 1=2 --
- Look for different responses
-
Time-based testing
' WAITFOR DELAY '0:0:5' --
' SLEEP(5) --
- Monitor response times
-
Analysis techniques
- Group by response length
- Look for error messages
- Compare response times
SQL injection testing with Intruder allows for systematic testing of multiple parameters and payloads.
Cross-Site Scripting (XSS)
Testing for XSS vulnerabilities:
-
Detection payloads
<script>alert(1)</script>
"><script>alert(1)</script>
'><script>alert(1)</script>
javascript:alert(1)
-
Context-specific payloads
- HTML attribute context:
" onmouseover="alert(1)
- JavaScript context:
';alert(1);//
- CSS context:
</style><script>alert(1)</script>
- HTML attribute context:
-
Evasion techniques
- Case variation:
<ScRiPt>alert(1)</sCrIpT>
- Encoding:
%3Cscript%3Ealert(1)%3C/script%3E
- Alternative syntax:
<img src="x" onerror="alert(1)">
- Case variation:
-
Analysis techniques
- Look for unfiltered payloads in responses
- Check for partial filtering
- Test browser rendering of responses
XSS testing requires careful analysis of how the application processes and outputs user input in different contexts.
Enumeration and Discovery
Directory and Resource Enumeration
Discovering hidden resources:
-
Directory enumeration
- Target URL path
- Use wordlists of common directory names
- Look for 200, 301, 302 responses
-
File enumeration
- Target URL path + filename
- Use extensions relevant to the application (.php, .aspx, etc.)
- Look for different response sizes and status codes
-
API endpoint discovery
- Enumerate API paths
- Test different HTTP methods
- Look for JSON/XML responses
-
Analysis techniques
- Filter out 404 responses
- Group by response length
- Look for interesting content in responses
Resource enumeration can reveal hidden functionality, backup files, or development resources that may contain vulnerabilities.
Parameter Discovery and Fuzzing
Discovering hidden parameters:
-
Parameter name fuzzing
- Add parameters to requests
- Use wordlists of common parameter names
- Look for changes in response
-
Parameter value fuzzing
- Test different values for known parameters
- Look for interesting behavior
- Identify validation patterns
-
HTTP method fuzzing
- Test different HTTP methods (GET, POST, PUT, DELETE)
- Look for supported but undocumented methods
-
Analysis techniques
- Group by response length
- Look for error messages
- Identify changes in application behavior
Parameter discovery can reveal hidden functionality or parameters that may not be properly validated.
Advanced Techniques
Resource Pool Management (Professional)
Optimize attack performance and resource usage:
-
Creating resource pools
- Go to Project options → Misc → Resource pools
- Create pools with different settings
-
Pool settings
- Maximum concurrent requests
- Throttling (requests per second)
- Scope (hosts and URLs)
-
Assigning pools to attacks
- Select pool in Intruder options
- Different attacks can use different pools
-
Use cases
- Aggressive testing for robust applications
- Gentle testing for sensitive applications
- Balancing multiple simultaneous attacks
Resource pools help prevent accidental denial of service while maximizing testing efficiency.
Session Handling with Macros (Professional)
Maintain authentication during attacks:
-
Creating session handling rules
- Go to Project options → Sessions
- Create rules that apply to Intruder
-
Recording macros
- Record login sequences
- Extract session tokens
- Configure token reuse
-
Rule application
- Apply before requests are sent
- Maintain valid session state
- Handle anti-CSRF tokens
-
Use cases
- Testing authenticated functionality
- Handling complex session mechanisms
- Bypassing anti-automation controls
Session handling rules allow Intruder to test protected functionality that requires authentication.
Intruder Extensions (Professional)
Extend Intruder functionality with extensions:
-
Turbo Intruder
- High-performance custom attacks
- Python-based attack scripting
- Advanced payload generation
-
Custom payload generators
- Create specialized payload types
- Implement complex generation logic
- Integrate with external tools
-
Results processors
- Custom analysis of responses
- Automated vulnerability detection
- Integration with reporting tools
-
Popular extensions
- Turbo Intruder
- Intruder Payload Generator
- Custom Parameter Handler
- JWT Editor
Extensions can significantly enhance Intruder's capabilities for specialized testing scenarios.
Best Practices
Optimizing Attack Efficiency
Maximize effectiveness while minimizing resource usage:
-
Target selection
- Focus on high-value parameters
- Test one functionality at a time
- Prioritize sensitive operations
-
Payload optimization
- Use focused, relevant payloads
- Start with smaller payload sets
- Expand based on initial results
-
Attack configuration
- Use appropriate attack type
- Configure proper thread count
- Set reasonable timeouts
-
Response handling
- Define clear success/failure criteria
- Use grep extract for important data
- Filter uninteresting results
Efficient attacks save time, reduce server load, and produce more manageable results.
Ethical Considerations
Responsible use of Intruder:
-
Authorization
- Only test applications you own or have permission to test
- Respect scope limitations
- Adhere to responsible disclosure policies
-
Impact awareness
- Consider server load and performance
- Be cautious with sensitive functionality
- Avoid disrupting production systems
-
Data handling
- Respect privacy of discovered data
- Secure and properly dispose of findings
- Report sensitive data exposure responsibly
-
Legal compliance
- Understand relevant laws and regulations
- Document authorization
- Stay within agreed boundaries
Warning: Unauthorized use of Intruder may violate computer crime laws and could result in civil or criminal penalties.
Troubleshooting
Common Issues and Solutions
Solutions to frequently encountered problems:
-
Attack not starting
- Check payload configuration
- Verify positions are correctly set
- Ensure sufficient system resources
-
Slow performance
- Reduce concurrent threads
- Use smaller payload sets
- Check for network latency
- Consider upgrading to Professional Edition
-
Application errors
- Verify payload encoding is appropriate
- Check for application-specific formatting
- Consider session handling requirements
-
False negatives
- Try different payload variations
- Check for defensive mechanisms
- Verify response analysis criteria
-
Memory issues
- Reduce payload set size
- Split large attacks into smaller ones
- Increase JVM memory allocation
Warning: Always use Burp Suite Intruder ethically and legally. Only test applications you own or have explicit permission to test. Unauthorized testing may violate laws and regulations.