Burp Suite is the most widely adopted web application security testing platform, used by security professionals and QA engineers in over 47,000 organizations worldwide. According to the 2024 Invicti AppSec Indicator Report, 68% of web applications contain at least one critical vulnerability, making security testing an essential QA practice. The global application security market reached $8.7 billion in 2024 and is projected to grow at 18.3% CAGR through 2030, according to MarketsandMarkets. For QA teams, Burp Suite bridges the gap between functional testing and security validation — providing tools to intercept traffic, scan for OWASP Top 10 vulnerabilities, test authentication flows, and automate security checks in CI/CD. Whether you are using the free Community Edition for manual traffic inspection or the Professional scanner for systematic vulnerability discovery, this guide covers proxy setup, scanning, the Intruder and Repeater tools, extensions, and CI/CD integration patterns.

“Security testing used to be something we handed off to a separate team at the end of the sprint. Once I introduced Burp Suite into our QA workflow, we started catching authentication issues and IDOR vulnerabilities during regular regression testing. It completely changed how our team thinks about quality.” — Yuri Kan, Senior QA Lead

For QA professionals expanding into security testing, understanding Burp Suite alongside complementary tools and methodologies creates a robust security testing practice. Explore foundational concepts in API Security Testing for endpoint protection strategies, learn about Security Test Documentation for proper vulnerability reporting, and understand how to integrate security checks into Continuous Testing DevOps workflows.

TL;DR — Burp Suite is the industry-standard web security testing platform, used in 47,000+ organizations. Community Edition is free; Professional adds automated scanning ($449/year). Covers all OWASP Top 10 vulnerabilities. Extensible via BApp Store. Enterprise enables CI/CD integration via REST API.

What is Burp Suite?

Burp Suite is the industry-leading web application security testing platform used by 82% of security professionals according to the PortSwigger annual survey. For QA engineers, Burp provides a comprehensive toolkit for manual and automated security testing, including intercepting proxies, scanners, and specialized tools for vulnerability discovery. See also OWASP ZAP Automation: Security Scanning in CI/CD for an open-source alternative, and Penetration Testing Basics for QA Testers for foundational concepts.

Burp Suite Editions

  • Community Edition - Free, limited automated scanning
  • Professional - Full scanner, advanced tools ($449/year)
  • Enterprise - CI/CD integration, team collaboration ($3,999/year)

Core Components

1. Proxy - Intercept and Modify Traffic

# Configure browser to use Burp proxy
# Proxy settings: localhost:8080

# Install Burp CA certificate
# Navigate to: http://burp
# Download cacert.der and install in browser

Intercepting Requests:

1. Turn on "Intercept is on" in Proxy tab
2. Navigate to target in browser
3. View/modify request in Burp
4. Click "Forward" to send or "Drop" to block

Useful Proxy Features:

  • Match and Replace - Auto-modify requests/responses
  • HTTP History - Review all traffic
  • WebSocket History - Monitor WebSocket communications

2. Scanner - Automated Vulnerability Detection

// Burp Suite Professional API
import burp.*;

public class CustomScanner implements IScannerCheck {
    @Override
    public List<IScanIssue> doPassiveScan(IHttpRequestResponse baseRequestResponse) {
        List<IScanIssue> issues = new ArrayList<>();

        // Check for sensitive data in responses
        String response = helpers.bytesToString(baseRequestResponse.getResponse());

        if (response.contains("password") || response.contains("api_key")) {
            issues.add(new CustomScanIssue(
                baseRequestResponse.getHttpService(),
                helpers.analyzeRequest(baseRequestResponse).getUrl(),
                "Sensitive data in response",
                "High",
                "Certain"
            ));
        }

        return issues;
    }

    @Override
    public List<IScanIssue> doActiveScan(
        IHttpRequestResponse baseRequestResponse,
        IScannerInsertionPoint insertionPoint
    ) {
        // Custom active scanning logic
        return Collections.emptyList();
    }
}

Scanner Configuration:

1. Right-click target in Proxy/Target
2. Select "Scan" or "Actively scan this host"
3. Configure scan settings:

   - Crawl limits
   - Scan speed
   - Issue types to detect

3. Intruder - Automated Attacks

Fuzzing Example:

1. Send request to Intruder (Right-click → "Send to Intruder")
2. Set payload positions:
   POST /api/users HTTP/1.1
   {"user_id": §1§, "role": "§admin§"}

3. Configure payload types:

   - Position 1: Numbers (1-1000)
   - Position 2: Simple list (admin, user, guest)

4. Start attack and analyze responses

Attack Types:

  • Sniper - Single payload position
  • Battering Ram - Same payload in all positions
  • Pitchfork - Iterate multiple payload sets in parallel
  • Cluster Bomb - All permutations of payload sets

Detecting Vulnerabilities:

# Extract results programmatically
import json

def analyze_intruder_results(results_file):
    """Analyze Intruder attack results"""
    with open(results_file) as f:
        results = json.load(f)

    vulnerabilities = []

    for item in results:
        # Check for SQL injection indicators
        if 'syntax error' in item['response'].lower():
            vulnerabilities.append({
                'type': 'SQL Injection',
                'payload': item['payload'],
                'evidence': 'SQL syntax error in response'
            })

        # Check for IDOR
        if item['status_code'] == 200 and item['payload'] != item['expected_id']:
            vulnerabilities.append({
                'type': 'IDOR',
                'payload': item['payload'],
                'evidence': 'Accessed resource with different user ID'
            })

    return vulnerabilities

4. Repeater - Manual Request Testing

1. Send interesting request to Repeater
2. Modify request parameters
3. Click "Send" to see response
4. Compare multiple responses side-by-side

Common Test Cases:

  • Authentication Bypass: Remove tokens, modify user IDs
  • Authorization Testing: Access resources with different user roles
  • Input Validation: Test boundaries, special characters, encoding

5. Decoder - Encode/Decode Data

Supported encodings:

  • URL encoding
  • HTML encoding
  • Base64
  • Hex
  • ASCII hex
  • Gzip

6. Comparer - Visual Diff Tool

1. Send two responses to Comparer
2. Select "Words" or "Bytes" comparison
3. Review highlighted differences

Use Cases:

  • Compare responses from different user roles
  • Identify timing differences (timing attacks)
  • Detect subtle changes in encrypted responses

Advanced Techniques

Session Handling

1. Project Options → Sessions
2. Add "Cookie jar"
3. Configure session handling rules:

   - Extract cookies from responses
   - Add cookies to requests
   - Handle CSRF tokens

CSRF Token Handling:

# Burp extension for CSRF token extraction
from burp import IBurpExtender, ISessionHandlingAction

class CsrfTokenHandler(IBurpExtender, ISessionHandlingAction):
    def registerExtenderCallbacks(self, callbacks):
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.registerSessionHandlingAction(self)

    def getActionName(self):
        return "Extract CSRF Token"

    def performAction(self, currentRequest, macroItems):
        # Extract CSRF token from macro response
        if len(macroItems) > 0:
            response = macroItems[0].getResponse()
            token = self.extract_csrf_token(response)

            # Update request with new token
            updated_request = self.update_csrf_token(currentRequest.getRequest(), token)
            currentRequest.setRequest(updated_request)

Testing APIs

GraphQL Testing:

# Introspection query
{
  __schema {
    types {
      name
      fields {
        name
        type {
          name
        }
      }
    }
  }
}

# Test for authorization issues
query {
  users {
    id
    email
    password_hash  # Should not be exposed
  }
}

JWT Testing:

// Burp extension to decode/modify JWTs
function decodeJWT(token) {
    const parts = token.split('.');
    const header = JSON.parse(atob(parts[0]));
    const payload = JSON.parse(atob(parts[1]));

    return { header, payload, signature: parts[2] };
}

// Test for algorithm confusion
header = { "alg": "none" }  // Remove signature requirement
header = { "alg": "HS256" }  // Change from RS256 to HS256

// Test for weak secrets
// Use Intruder with common secret wordlist

Burp Extensions

Must-Have Extensions

1. Autorize - Authorization testing

1. Install from BApp Store
2. Configure authorized and unauthorized sessions
3. Autorize automatically tests each request with both sessions
4. Identifies authorization bypasses

2. Logger++ - Advanced logging

Features:

- Custom filters
- Grep extraction
- Export to CSV/JSON
- Scripting support

3. Turbo Intruder - High-speed attacks

# turbo_intruder.py
def queueRequests(target, wordlists):
    engine = RequestEngine(
        endpoint=target.endpoint,
        concurrentConnections=50,
        requestsPerConnection=100
    )

    for word in open('/path/to/wordlist.txt'):
        engine.queue(target.req, word.rstrip())

def handleResponse(req, interesting):
    if '200 OK' in req.response:
        table.add(req)

4. JWT Editor - JWT manipulation 5. Retire.js - Detect vulnerable JavaScript libraries

Custom Extension Development

// Simple Burp extension
package burp;

import java.io.PrintWriter;

public class BurpExtender implements IBurpExtender, IHttpListener {
    private IBurpExtenderCallbacks callbacks;
    private PrintWriter stdout;

    @Override
    public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
        this.callbacks = callbacks;
        this.stdout = new PrintWriter(callbacks.getStdout(), true);

        callbacks.setExtensionName("Custom Security Checks");
        callbacks.registerHttpListener(this);

        stdout.println("Extension loaded successfully");
    }

    @Override
    public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) {
        if (!messageIsRequest) {
            // Analyze response
            byte[] response = messageInfo.getResponse();
            String responseStr = new String(response);

            // Check for sensitive data
            if (responseStr.contains("ssn") || responseStr.contains("credit_card")) {
                stdout.println("WARNING: Sensitive data detected in response!");

                // Add issue to scanner
                callbacks.addScanIssue(new CustomScanIssue(
                    messageInfo.getHttpService(),
                    callbacks.getHelpers().analyzeRequest(messageInfo).getUrl(),
                    new IHttpRequestResponse[] { messageInfo },
                    "Sensitive Data Exposure",
                    "Response contains sensitive information",
                    "High"
                ));
            }
        }
    }
}

Collaboration Features (Enterprise)

Team Sharing

# Export site map
1. Right-click target → "Save selected items"
2. Choose "Burp state file" format
3. Share .burp file with team

# Import into another Burp instance
1. File → "Restore state"
2. Select .burp file

CI/CD Integration (Enterprise)

# Jenkins pipeline
pipeline {
    stages {
        stage('Security Scan') {
            steps {
                script {
                    // Start Burp Enterprise scan
                    sh '''
                        curl -X POST https://burp-enterprise.example.com/api/v1/scan \
                        -H "Authorization: Bearer ${BURP_API_KEY}" \
                        -d '{
                            "scope": {
                                "included": [{"rule": "https://app.example.com"}]
                            },
                            "scan_configurations": [{"type": "audit"}]
                        }'
                    '''
                }
            }
        }

        stage('Check Results') {
            steps {
                script {
                    def issues = sh(
                        script: 'curl https://burp-enterprise.example.com/api/v1/scan/${SCAN_ID}/issues',
                        returnStdout: true
                    )

                    def highSeverity = sh(
                        script: 'echo ${issues} | jq "[.issues[] | select(.severity == \\"high\\")] | length"',
                        returnStdout: true
                    ).toInteger()

                    if (highSeverity > 0) {
                        error("Found ${highSeverity} high-severity vulnerabilities")
                    }
                }
            }
        }
    }
}

Best Practices

Efficient Workflow

  1. Reconnaissance Phase:

    • Map application with Spider
    • Review Proxy history for interesting endpoints
    • Identify authentication/authorization mechanisms
  2. Manual Testing:

    • Use Repeater for targeted testing
    • Test authentication/authorization with different roles
    • Verify input validation on all parameters
  3. Automated Scanning:

    • Run passive scans continuously
    • Active scan specific areas of interest
    • Use Intruder for fuzzing and brute forcing
  4. Documentation:

    • Tag interesting requests
    • Add comments to explain findings
    • Export results for reporting

Security Testing Checklist

## Authentication & Session Management
- [ ] Test for SQL injection in login form
- [ ] Check password policy enforcement
- [ ] Verify session timeout
- [ ] Test for session fixation
- [ ] Check for concurrent session handling

## Authorization
- [ ] Test IDOR vulnerabilities
- [ ] Verify role-based access control
- [ ] Check for privilege escalation
- [ ] Test API endpoint authorization

## Input Validation
- [ ] XSS in all input fields
- [ ] SQL injection in parameters
- [ ] Command injection testing
- [ ] File upload validation
- [ ] XXE in XML parsers

## Configuration
- [ ] Check security headers
- [ ] Verify HTTPS enforcement
- [ ] Test CORS configuration
- [ ] Review error messages
- [ ] Check for sensitive data in responses

Frequently Asked Questions

What is Burp Suite used for in QA? Burp Suite is used by QA engineers to intercept and modify HTTP/HTTPS traffic, scan for vulnerabilities like SQL injection and XSS, test authentication and authorization, and validate that applications meet security requirements before production release.

Is Burp Suite Community Edition sufficient for QA testing? Burp Suite Community Edition is free and sufficient for manual testing tasks like intercepting traffic, using Repeater, and basic Intruder functionality. However, automated scanning requires Burp Suite Professional ($449/year).

What OWASP Top 10 vulnerabilities can Burp Suite detect? Burp Suite can help identify all OWASP Top 10 vulnerabilities including injection flaws, broken authentication, XSS, insecure deserialization, and security misconfigurations. The Professional scanner automates detection of many of these.

How do I integrate Burp Suite into a CI/CD pipeline? Burp Suite Enterprise edition provides REST API access for CI/CD integration. You can trigger scans via API, poll for results, and fail builds when high-severity issues are found.

Conclusion

Burp Suite is the Swiss Army knife of web security testing. From intercepting traffic to automated scanning and advanced exploitation, Burp empowers QA engineers to identify and validate security vulnerabilities comprehensively.

Key Takeaways:

  • Master the Proxy for traffic analysis
  • Use Scanner for automated vulnerability detection
  • Leverage Intruder for fuzzing and brute forcing
  • Employ Repeater for manual exploitation
  • Extend functionality with custom extensions
  • Integrate into CI/CD for continuous security testing

Security testing is a skill — practice regularly with Burp to build expertise.

Sources: PortSwigger Burp Suite Documentation · OWASP Top 10

See Also