Terminal GuideTerminal Guide

Burp Suite: Web Application Security Testing Guide

Master Burp Suite for web application security testing. Learn proxy interception, vulnerability scanning, intruder attacks, CLI automation, and REST API integration for professional penetration testing workflows.

24 min readLast updated: February 20, 2026
Dai Aoki

Dai Aoki

CEO at init, Inc. / CTO at US & JP startups / Creator of WebTerm

Ethical Use Only
Burp Suite is a powerful web application security testing tool. Only use it against systems you own or have explicit written authorization to test. Unauthorized testing is illegal and unethical. Always obtain proper permission and follow responsible disclosure practices when reporting vulnerabilities.

Quick Reference

Launch & Config

java -jar burpsuite_pro.jarStart Burp Suite Professional
java -jar burpsuite_community.jarStart Burp Suite Community
--project-file=project.burpOpen existing project
--config-file=config.jsonLoad configuration file

Headless & CLI

--unpause-spider-and-scannerAuto-start scanning
-Djava.awt.headless=trueRun in headless mode
-Xmx2gAllocate 2GB heap memory
--diagnosticsRun diagnostics check

Proxy Setup

localhost:8080Default proxy listener
curl -x http://127.0.0.1:8080Route curl through Burp
export http_proxy=127.0.0.1:8080Set system proxy (Linux)
export https_proxy=127.0.0.1:8080Set HTTPS proxy (Linux)

REST API

GET /v0.1/scanList active scans
POST /v0.1/scanLaunch new scan
GET /v0.1/scan/{id}Get scan status
DELETE /v0.1/scan/{id}Cancel a scan

Intruder Attacks

SniperSingle payload, one position at a time
Battering RamSame payload in all positions
PitchforkParallel payload sets per position
Cluster BombAll payload combinations

Useful Extensions

Logger++Advanced HTTP logging
AutorizeAuthorization testing
Active Scan++Enhanced scanning checks
JSON BeautifierFormat JSON responses

Downloadable Image Preview

Failed to generate preview

Overview

Burp Suite, developed by PortSwigger, is the industry-standard platform for web application security testing. It provides an integrated set of tools for mapping attack surfaces, analyzing requests and responses, discovering vulnerabilities, and exploiting them. Used by security professionals, bug bounty hunters, and development teams worldwide, Burp Suite sits between a browser and the target application as an intercepting proxy, giving you full control over HTTP/HTTPS traffic.

While Burp Suite is primarily a GUI application, it offers significant CLI capabilities including command-line launch options, a REST API for programmatic control, headless scanning for CI/CD pipelines, and extensibility through its API. This guide focuses on leveraging those capabilities for automated and repeatable security testing workflows.

Community vs Professional

FeatureCommunity (Free)Professional
Intercepting ProxyFullFull
Repeater & DecoderFullFull
IntruderThrottledFull speed
ScannerNot availableFull (active + passive)
REST APINot availableFull
Project FilesTemporary onlySave & restore
Extensions (BApp Store)LimitedFull access
CI/CD IntegrationNot availableFull (via REST API)
Info
PortSwigger also offers Burp Suite Enterprise Edition for large-scale, automated web vulnerability scanning across entire application portfolios, with features like scheduled scans, role-based access, and integration with CI/CD and issue tracking systems.

Installation & Setup

Burp Suite is a Java-based application that runs on Windows, macOS, and Linux. PortSwigger provides standalone installers that bundle a private JRE, but you can also run the JAR file directly with your own Java installation for greater control from the command line.

bash
# Download from the official website
# https://portswigger.net/burp/releases

# On Linux - install using the standalone installer
chmod +x burpsuite_pro_linux_v2024_x.sh
./burpsuite_pro_linux_v2024_x.sh

# On macOS - use the .dmg installer or Homebrew
brew install --cask burp-suite
# Or for Community Edition:
brew install --cask burp-suite-community

# On Kali Linux (pre-installed)
burpsuite

Java Environment Setup

When running the JAR file directly, you need Java 17 or later. This approach gives you full control over JVM arguments and is essential for headless and automated operation.

bash
# Check Java version
java -version

# Install Java 17+ on Ubuntu/Debian
sudo apt update
sudo apt install openjdk-17-jdk -y

# Install Java on macOS
brew install openjdk@17

# Install Java on Fedora/RHEL
sudo dnf install java-17-openjdk -y

# Verify Java is properly configured
java -version
# openjdk version "17.0.x" ...

# Run Burp Suite JAR directly
java -jar /opt/burpsuite/burpsuite_pro.jar

# Run with increased memory allocation (recommended for large projects)
java -Xmx4g -jar burpsuite_pro.jar

# Run with custom temp directory (for large scan data)
java -Djava.io.tmpdir=/tmp/burp -Xmx4g -jar burpsuite_pro.jar

CLI Launch Options

Burp Suite accepts various command-line arguments that control startup behavior, project loading, and configuration. These options are critical for automation and scripted workflows.

bash
# Launch with a specific project file
java -jar burpsuite_pro.jar --project-file=webapp-audit.burp

# Launch with a configuration file
java -jar burpsuite_pro.jar --config-file=scan-config.json

# Launch with both project and configuration
java -jar burpsuite_pro.jar \
  --project-file=webapp-audit.burp \
  --config-file=scan-config.json

# Create a new project with a specific name
java -jar burpsuite_pro.jar \
  --project-file=new-project.burp \
  --unpause-spider-and-scanner

# Launch with user-level configuration
java -jar burpsuite_pro.jar \
  --user-config-file=user-settings.json

# Run diagnostics to check for issues
java -jar burpsuite_pro.jar --diagnostics

# Disable extensions on startup (troubleshooting)
java -jar burpsuite_pro.jar --disable-extensions

Core Components

Burp Suite is organized into several core tools that work together as an integrated testing platform. Understanding each component and how they interconnect is essential for effective web application testing.

Proxy

The Proxy is the heart of Burp Suite. It operates as an intercepting HTTP/HTTPS proxy between your browser and the target application, allowing you to inspect, modify, and replay every request and response. All traffic flowing through the proxy is logged in the HTTP history, building a comprehensive map of the application.

bash
# Test proxy connectivity with curl
curl -x http://127.0.0.1:8080 http://example.com

# Send HTTPS traffic through Burp (after installing CA certificate)
curl -x http://127.0.0.1:8080 --cacert burp-ca.pem https://target.example.com

# Download Burp's CA certificate
curl -o burp-ca.der http://127.0.0.1:8080/cert
# Convert DER to PEM format
openssl x509 -inform DER -in burp-ca.der -out burp-ca.pem

# Install CA certificate on Linux (system-wide)
sudo cp burp-ca.pem /usr/local/share/ca-certificates/burp-ca.crt
sudo update-ca-certificates

# Use wget through Burp proxy
wget --proxy=on -e http_proxy=127.0.0.1:8080 http://target.example.com

# Set proxy for an entire terminal session
export http_proxy=http://127.0.0.1:8080
export https_proxy=http://127.0.0.1:8080
export no_proxy=localhost,127.0.0.1

Scanner

The Scanner (Professional edition only) automatically discovers security vulnerabilities through both passive and active techniques. Passive scanning analyzes traffic that flows through the proxy without sending additional requests. Active scanning probes the application with crafted payloads to detect vulnerabilities like SQL injection, cross-site scripting (XSS), and command injection.

bash
# Export scan configuration for automation
# In Burp: Burp menu > Configuration Library > Export

# Example scan configuration JSON
cat > scan-config.json << 'EOF'
{
  "scanner": {
    "active_scanning_optimization": {
      "scan_speed": "normal",
      "scan_accuracy": "normal"
    },
    "active_scanning_areas": {
      "sql_injection": true,
      "xss_reflected": true,
      "xss_stored": true,
      "command_injection": true,
      "path_traversal": true,
      "file_upload": true
    },
    "passive_scanning_areas": {
      "headers": true,
      "cookies": true,
      "forms": true,
      "links": true,
      "content": true
    }
  }
}
EOF

# Launch Burp with scanner auto-start
java -jar burpsuite_pro.jar \
  --project-file=scan-project.burp \
  --config-file=scan-config.json \
  --unpause-spider-and-scanner

Intruder

Intruder is a tool for automating customized attacks against web applications. It allows you to define payload positions within HTTP requests and run various attack types such as brute-forcing, fuzzing, and parameter enumeration. In the Professional edition, Intruder runs at full speed; the Community edition throttles request rates.

Repeater

Repeater is a manual tool for crafting and reissuing individual HTTP requests. It provides a simple interface where you can modify any part of a request, send it to the server, and analyze the response side by side. Repeater is invaluable for testing individual parameters, verifying vulnerabilities, and crafting proof-of-concept exploits. You can send any request from the proxy history or other tools to Repeater for further investigation.

Proxy Configuration

Proper proxy configuration is the first step in any Burp Suite testing session. You need to configure both Burp Suite's listener and your browser or client application to route traffic through the proxy.

Browser Setup

Burp Suite includes a built-in Chromium browser (Burp's Browser) that is pre-configured to route traffic through the proxy and trust Burp's CA certificate. For external browsers, you need to configure the proxy settings manually or use a browser extension.

bash
# Launch Chrome with Burp proxy settings
google-chrome --proxy-server="http://127.0.0.1:8080" \
  --ignore-certificate-errors \
  --user-data-dir=/tmp/burp-chrome

# Launch Firefox with proxy (use FoxyProxy extension for easier management)
firefox -P burp-profile

# Configure proxy with environment variables (for CLI tools)
export http_proxy="http://127.0.0.1:8080"
export https_proxy="http://127.0.0.1:8080"

# Use Python requests through Burp proxy
python3 -c "
import requests
proxies = {'http': 'http://127.0.0.1:8080', 'https': 'http://127.0.0.1:8080'}
r = requests.get('https://target.example.com', proxies=proxies, verify=False)
print(r.status_code)
"

# Route Node.js HTTP traffic through Burp
HTTP_PROXY=http://127.0.0.1:8080 \
HTTPS_PROXY=http://127.0.0.1:8080 \
NODE_TLS_REJECT_UNAUTHORIZED=0 \
node app.js

Intercept Rules

Intercept rules control which requests and responses Burp Suite pauses for manual inspection. By default, Burp intercepts all requests, but you can configure rules to focus on specific domains, file types, or request parameters. Well-configured rules reduce noise and let you concentrate on the traffic that matters.

bash
# Export proxy configuration with intercept rules
cat > proxy-config.json << 'EOF'
{
  "proxy": {
    "intercept_client_requests": {
      "do_intercept": true,
      "rules": [
        {
          "enabled": true,
          "match_type": "domain_name",
          "match_relationship": "matches",
          "match_condition": "target\.example\.com"
        },
        {
          "enabled": true,
          "match_type": "url",
          "match_relationship": "does_not_match",
          "match_condition": "\.(css|js|png|jpg|gif|ico|woff2?)$"
        }
      ]
    },
    "intercept_server_responses": {
      "do_intercept": false,
      "rules": [
        {
          "enabled": true,
          "match_type": "content_type",
          "match_relationship": "matches",
          "match_condition": "HTML"
        }
      ]
    }
  }
}
EOF

# Launch Burp with this proxy configuration
java -jar burpsuite_pro.jar \
  --config-file=proxy-config.json

Scanner Usage

The Burp Scanner uses a combination of passive analysis and active probing to discover vulnerabilities. Understanding the difference between passive and active scanning, and knowing how to tune scanner settings, is critical for efficient and thorough assessments.

Passive Scanning analyzes HTTP traffic that has already been captured without sending any additional requests. It detects issues like missing security headers, insecure cookies, information disclosure in responses, and sensitive data exposure. Passive scanning is safe to run against any target since it generates no additional traffic.

Active Scanning sends crafted requests to detect server-side vulnerabilities like SQL injection, XSS, command injection, path traversal, and more. Active scanning generates significant additional traffic and may modify application state, so it should only be performed with proper authorization.

bash
# Configure scanner via REST API (Professional edition)
# Start a scan against a specific URL
curl -s -X POST "http://127.0.0.1:1337/v0.1/scan" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://target.example.com"],
    "scope": {
      "include": [
        {"rule": "https://target.example.com/"}
      ],
      "exclude": [
        {"rule": "https://target.example.com/logout"}
      ]
    }
  }'

# Check scan progress
curl -s "http://127.0.0.1:1337/v0.1/scan/1" | python3 -m json.tool

# List all active scans
curl -s "http://127.0.0.1:1337/v0.1/scan" | python3 -m json.tool

# Export scanner results
# In Burp: Target > Site map > right-click > Issues > Report issues
# Supports HTML, XML, and custom formats
Active Scanning Warning
Active scanning sends potentially malicious payloads to the target application. This can cause data modification, denial of service, or trigger security alerts. Always ensure you have explicit authorization before running active scans, and avoid scanning production systems when possible.

Intruder Attacks

Intruder supports four attack types, each suited to different testing scenarios. Understanding when to use each type is key to efficient fuzzing and brute-force testing.

Attack TypePositionsBehaviorUse Case
SniperMultipleInserts each payload into one position at a time, others stay defaultTesting each parameter individually
Battering RamMultipleInserts the same payload into all positions simultaneouslyCSRF tokens, same value in multiple fields
PitchforkMultipleUses parallel payload lists, iterating through them in lockstepUsername/password pairs from credential lists
Cluster BombMultipleTests all permutations of payload lists across all positionsFull brute-force of username + password combinations
bash
# Prepare payload lists for Intruder
# Common usernames
cat > usernames.txt << 'EOF'
admin
administrator
root
user
test
guest
EOF

# Common passwords
cat > passwords.txt << 'EOF'
password
123456
admin
Password1
letmein
welcome
EOF

# Common XSS payloads for fuzzing
cat > xss-payloads.txt << 'EOF'
<script>alert(1)</script>
"><script>alert(1)</script>
'><script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg/onload=alert(1)>
javascript:alert(1)
EOF

# Common SQL injection test payloads
cat > sqli-payloads.txt << 'EOF'
' OR '1'='1
' OR '1'='1'--
" OR "1"="1
1' ORDER BY 1--
1 UNION SELECT NULL--
'; DROP TABLE users--
EOF

# Directory brute-force wordlist
# Use with Intruder Sniper mode on path parameter
cat > dirs.txt << 'EOF'
admin
login
dashboard
api
config
backup
test
debug
EOF

CLI & Automation

Burp Suite Professional provides powerful automation capabilities through command-line options, a REST API, and headless operation mode. These features enable integration with CI/CD pipelines, scripted testing workflows, and programmatic scan management.

Command-Line Options

OptionDescription
--project-file=FILEOpen or create a project file
--config-file=FILELoad project-level configuration from JSON file
--user-config-file=FILELoad user-level configuration from JSON file
--unpause-spider-and-scannerAutomatically start the spider and scanner
--disable-extensionsStart without loading extensions
--diagnosticsRun startup diagnostics and exit
bash
# Full automated launch with project, config, and auto-scan
java -Xmx4g -jar burpsuite_pro.jar \
  --project-file=automated-scan.burp \
  --config-file=scan-config.json \
  --user-config-file=user-prefs.json \
  --unpause-spider-and-scanner

# Launch with custom proxy listener port
cat > custom-listener.json << 'EOF'
{
  "proxy": {
    "request_listeners": [
      {
        "listen_mode": "loopback_only",
        "listener_port": 9090,
        "running": true
      }
    ]
  }
}
EOF

java -jar burpsuite_pro.jar --config-file=custom-listener.json

REST API

Burp Suite Professional includes a REST API that allows you to manage scans programmatically. The API server runs on a configurable port (default 1337) and provides endpoints for launching, monitoring, and retrieving results from scans.

bash
# Enable the REST API in Burp:
# User options > Misc > REST API > Enable
# Configure the API port (default: 1337)
# Optionally set an API key for authentication

# Launch a new scan via the REST API
curl -s -X POST "http://127.0.0.1:1337/v0.1/scan" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://target.example.com/app"],
    "scope": {
      "include": [
        {"rule": "https://target.example.com/app/"}
      ]
    },
    "scan_configurations": [
      {"type": "NamedConfiguration", "name": "Crawl and Audit - Fast"}
    ]
  }'
# Returns: {"task_id": "1"}

# Check scan status and progress
curl -s "http://127.0.0.1:1337/v0.1/scan/1" | python3 -m json.tool

# Poll scan status in a script until complete
while true; do
  STATUS=$(curl -s "http://127.0.0.1:1337/v0.1/scan/1" | python3 -c "
import sys, json
data = json.load(sys.stdin)
print(data.get('scan_status', 'unknown'))
")
  echo "Scan status: $STATUS"
  if [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ]; then
    break
  fi
  sleep 30
done

# Retrieve scan issues (vulnerabilities found)
curl -s "http://127.0.0.1:1337/v0.1/scan/1" | python3 -c "
import sys, json
data = json.load(sys.stdin)
for issue in data.get('issue_events', []):
    i = issue.get('issue', {})
    print(f"[{i.get('severity', 'N/A')}] {i.get('name', 'Unknown')}")
    print(f"  URL: {i.get('origin', '')}{i.get('path', '')}")
    print()
"

# Cancel an active scan
curl -s -X DELETE "http://127.0.0.1:1337/v0.1/scan/1"

Headless Mode

Running Burp Suite in headless mode enables fully automated scanning without a graphical interface. This is essential for CI/CD integration, server-based scanning infrastructure, and batch processing of multiple targets.

bash
# Run Burp Suite in headless mode (no GUI)
java -Djava.awt.headless=true -Xmx4g \
  -jar burpsuite_pro.jar \
  --project-file=headless-scan.burp \
  --config-file=scan-config.json \
  --unpause-spider-and-scanner

# Headless scan with REST API polling script
#!/bin/bash
# headless-scan.sh - Automated headless Burp Suite scan

TARGET_URL="https://target.example.com"
BURP_JAR="/opt/burpsuite/burpsuite_pro.jar"
API_PORT=1337

# Start Burp in headless mode (background)
java -Djava.awt.headless=true -Xmx4g \
  -jar "$BURP_JAR" \
  --config-file=api-config.json &
BURP_PID=$!

# Wait for Burp to start
echo "Waiting for Burp Suite to initialize..."
sleep 30

# Wait for API to become available
until curl -s "http://127.0.0.1:$API_PORT/" > /dev/null 2>&1; do
  sleep 5
done
echo "Burp Suite REST API is ready"

# Launch scan
TASK_ID=$(curl -s -X POST "http://127.0.0.1:$API_PORT/v0.1/scan" \
  -H "Content-Type: application/json" \
  -d "{"urls": ["$TARGET_URL"]}" | python3 -c "
import sys, json
print(json.load(sys.stdin).get('task_id', ''))
")
echo "Scan started with task ID: $TASK_ID"

# Poll until complete
while true; do
  RESULT=$(curl -s "http://127.0.0.1:$API_PORT/v0.1/scan/$TASK_ID")
  STATUS=$(echo "$RESULT" | python3 -c "
import sys, json
print(json.load(sys.stdin).get('scan_status', 'unknown'))
")
  echo "Status: $STATUS"
  if [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ]; then
    echo "$RESULT" | python3 -m json.tool > scan-results.json
    break
  fi
  sleep 60
done

# Shutdown Burp
kill $BURP_PID
echo "Scan complete. Results saved to scan-results.json"

Practical Examples

Web App Assessment Workflow

A structured web application security assessment with Burp Suite follows a methodical process from reconnaissance through exploitation and reporting. Here is a typical workflow using both the GUI and CLI capabilities.

bash
# Step 1: Set up the project with scope
java -Xmx4g -jar burpsuite_pro.jar \
  --project-file=webapp-assessment.burp \
  --config-file=scope-config.json

# scope-config.json - Define target scope
cat > scope-config.json << 'EOF'
{
  "target": {
    "scope": {
      "advanced_mode": true,
      "include": [
        {
          "enabled": true,
          "protocol": "https",
          "host": "target.example.com",
          "port": "443",
          "file": "/"
        }
      ],
      "exclude": [
        {
          "enabled": true,
          "protocol": "any",
          "host": "target.example.com",
          "port": "any",
          "file": "/logout"
        }
      ]
    }
  }
}
EOF

# Step 2: Manual browsing to build site map
# Use Burp's browser or configure your browser with the proxy
# Browse through all application functionality

# Step 3: Review site map and identify attack surface
# In Burp: Target > Site map > review endpoints and parameters

# Step 4: Run passive scan on captured traffic
# Passive scanning happens automatically on all proxied traffic

# Step 5: Run active scan on specific areas
# Right-click items in site map > "Actively scan this host"

# Step 6: Export findings
# Target > Site map > right-click > Issues > Report issues
# Choose HTML format for client-ready reports

API Testing

Burp Suite is highly effective for API security testing. You can import API definitions, replay requests through Repeater, fuzz parameters with Intruder, and scan for API-specific vulnerabilities.

bash
# Import API requests by proxying CLI tools through Burp
# Test REST API endpoints through Burp proxy
curl -x http://127.0.0.1:8080 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  https://api.example.com/v1/users

# Send POST request through Burp
curl -x http://127.0.0.1:8080 \
  -X POST \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "test", "email": "test@example.com"}' \
  https://api.example.com/v1/users

# Import OpenAPI/Swagger definition
# In Burp: Target > Site map > right-click > "Import from file"
# Supports OpenAPI 2.0/3.0, WSDL, and WADL formats

# Fuzz API parameters with Intruder
# 1. Capture a request in Proxy history
# 2. Send to Intruder (Ctrl+I)
# 3. Mark payload positions in JSON body
# 4. Load appropriate payload list
# 5. Start attack

# Test for IDOR (Insecure Direct Object References)
# Use Intruder Sniper mode with numeric payloads
# on ID parameters: /api/v1/users/PAYLOAD
# Monitor response codes and body lengths for anomalies

# Test authentication endpoints
curl -x http://127.0.0.1:8080 \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "test"}' \
  https://api.example.com/v1/auth/login

CI/CD Integration

Integrating Burp Suite into CI/CD pipelines enables automated security testing as part of the development workflow. Using the REST API and headless mode, you can trigger scans on every deployment and fail builds when critical vulnerabilities are found.

bash
# GitLab CI example (.gitlab-ci.yml)
cat > .gitlab-ci.yml << 'EOF'
security-scan:
  stage: test
  image: openjdk:17-slim
  script:
    # Start Burp in headless mode
    - java -Djava.awt.headless=true -Xmx2g
        -jar /opt/burpsuite/burpsuite_pro.jar
        --config-file=ci-scan-config.json &
    - sleep 45

    # Launch scan via REST API
    - |
      TASK_ID=$(curl -s -X POST "http://127.0.0.1:1337/v0.1/scan"         -H "Content-Type: application/json"         -d "{"urls": ["$TARGET_URL"]}" |         python3 -c "import sys,json; print(json.load(sys.stdin)['task_id'])")

    # Wait for scan completion
    - |
      while true; do
        STATUS=$(curl -s "http://127.0.0.1:1337/v0.1/scan/$TASK_ID" |           python3 -c "import sys,json; print(json.load(sys.stdin)['scan_status'])")
        [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ] && break
        sleep 30
      done

    # Check for high/critical severity issues
    - |
      CRITICAL=$(curl -s "http://127.0.0.1:1337/v0.1/scan/$TASK_ID" |         python3 -c "
      import sys, json
      data = json.load(sys.stdin)
      issues = [e['issue'] for e in data.get('issue_events', [])
                if e['issue']['severity'] in ['high', 'critical']]
      print(len(issues))
      for i in issues:
          print(f"  [{i['severity']}] {i['name']}")
      ")
      echo "Critical/High issues found: $CRITICAL"
      [ "$CRITICAL" -gt "0" ] && exit 1
  artifacts:
    paths:
      - scan-results.json
    when: always
EOF

# GitHub Actions example
cat > .github/workflows/security-scan.yml << 'EOF'
name: Security Scan
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  burp-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Java
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: 17

      - name: Run Burp Suite scan
        env:
          TARGET_URL: ${{ secrets.TARGET_URL }}
        run: |
          java -Djava.awt.headless=true -Xmx2g \
            -jar burpsuite_pro.jar \
            --config-file=ci-config.json &
          sleep 45
          ./scripts/run-scan.sh "$TARGET_URL"

      - name: Upload scan results
        uses: actions/upload-artifact@v4
        with:
          name: burp-scan-results
          path: scan-results.json
EOF
CI/CD Tip
For CI/CD pipelines, consider using Burp Suite Enterprise Edition, which is specifically designed for automated, large-scale scanning with built-in CI/CD integrations for Jenkins, GitLab, GitHub Actions, and Azure DevOps.

Tips & Best Practices

Performance & Configuration

  • Allocate sufficient memory: Use -Xmx4g or higher for large applications. Insufficient memory causes scan failures and UI freezes.
  • Define scope early: Always configure the target scope before scanning to avoid testing out-of-scope systems and reduce noise.
  • Use project files: Save your work in project files to preserve proxy history, scan results, and configuration between sessions.
  • Tune scanner speed: For stable, production-adjacent environments, use "Thorough" mode. For development environments, "Fast" mode provides quicker results.
  • Exclude logout URLs: Always exclude logout endpoints from scope to prevent your session from being invalidated during scanning.

Testing Methodology

  • Start passive, then go active: Begin with manual browsing and passive scanning to understand the application before launching active scans.
  • Use Repeater for validation: Always verify scanner findings manually in Repeater to confirm true positives and eliminate false positives.
  • Leverage extensions: Install extensions like Logger++, Autorize, and Active Scan++ from the BApp Store to extend Burp's capabilities.
  • Test authentication thoroughly: Use Intruder to test login forms, session management, and access controls systematically.
  • Document as you go: Use Burp's built-in notes and comments on requests, and organize findings in the Target tab for clean reporting.

Security & Ethics

  • Always get written authorization: Never test systems without explicit, documented permission from the system owner.
  • Avoid production data exposure: Be cautious with scan results that may contain sensitive data. Store project files securely.
  • Monitor scan impact: Watch for signs that your scanning is affecting the target application's performance or availability.
  • Follow responsible disclosure: Report vulnerabilities through proper channels and give the organization time to fix issues before any public disclosure.
  • Protect your Burp project files: Project files contain full HTTP history including credentials and tokens. Encrypt and secure them appropriately.

Burp Suite works best as part of a broader security testing toolkit. These complementary tools are often used alongside Burp Suite in web application assessments:

ToolPurposeComplements Burp By
NmapNetwork discovery and port scanningIdentifying web servers and services before testing
NiktoWeb server vulnerability scanningQuick server-level checks and misconfigurations
sqlmapAutomated SQL injection testingDeep exploitation of SQL injection found by Burp Scanner
MetasploitExploitation frameworkExploiting vulnerabilities discovered during assessment
WiresharkNetwork protocol analysisLow-level traffic analysis beyond HTTP/HTTPS
bash
# Combine Burp Suite with other tools in a workflow

# 1. Discover web servers with Nmap
nmap -sV -p 80,443,8080,8443 target.example.com

# 2. Quick server scan with Nikto
nikto -h https://target.example.com -output nikto-results.txt

# 3. Route sqlmap through Burp for deeper SQL injection testing
# Export a request from Burp (right-click > Copy to file)
sqlmap -r burp-request.txt --proxy=http://127.0.0.1:8080 --batch

# 4. Use Burp Suite for comprehensive web app testing
java -Xmx4g -jar burpsuite_pro.jar \
  --project-file=full-assessment.burp

# 5. Combine Burp findings with Metasploit for exploitation
# Export Burp scan results and import relevant findings into Metasploit

Official Documentation

For authoritative information, refer to the official documentation:

Related Articles