--- name: testing-for-xss-vulnerabilities-with-burpsuite description: Identifying and validating cross-site scripting vulnerabilities using Burp Suite's scanner, intruder, and repeater tools during authorized security assessments. domain: cybersecurity subdomain: web-application-security tags: - penetration-testing - xss - burpsuite - owasp - web-security - cross-site-scripting version: '1.0' author: mahipal license: Apache-2.0 nist_csf: - PR.PS-01 - ID.RA-01 - PR.DS-10 - DE.CM-01 --- # Testing for XSS Vulnerabilities with Burp Suite ## When to Use - During authorized web application penetration testing to find reflected, stored, and DOM-based XSS - When validating XSS findings reported by automated vulnerability scanners - For testing the effectiveness of Content Security Policy (CSP) and XSS filters - When assessing client-side security of single-page applications (SPAs) - During bug bounty programs targeting XSS vulnerabilities ## Prerequisites - **Authorization**: Written scope and rules of engagement for the target application - **Burp Suite Professional**: Licensed version with active scanner capabilities - **Browser**: Firefox or Chromium with Burp CA certificate installed - **FoxyProxy**: Browser extension configured to route traffic through Burp proxy (127.0.0.1:8080) - **Target application**: Authenticated access with valid test credentials - **XSS payloads list**: Custom wordlist or Burp's built-in XSS payload set ## Workflow ### Step 1: Configure Burp Suite and Map the Application Set up the proxy and crawl the application to discover all input vectors. ``` # Burp Suite Configuration 1. Proxy > Options > Proxy Listeners: 127.0.0.1:8080 2. Target > Scope: Add target domain (e.g., *.target.example.com) 3. Dashboard > New Scan > Crawl only > Select target URL 4. Enable "Passive scanning" in Dashboard settings # Browser Setup - Install Burp CA: http://burpsuite → CA Certificate - Import certificate into browser trust store - Configure proxy: 127.0.0.1:8080 - Browse the application manually to build the site map ``` ### Step 2: Identify Reflection Points with Burp Repeater Send requests to Repeater and inject unique canary strings to find where user input is reflected. ``` # In Burp Repeater, inject a unique canary string into each parameter: GET /search?q=xsscanary12345 HTTP/1.1 Host: target.example.com # Check the response for reflections of the canary: # Search response body for "xsscanary12345" # Note the context: HTML body, attribute, JavaScript, URL, etc. # Test multiple injection contexts: # HTML body:
Results for: xsscanary12345
# Attribute: # JavaScript: var search = "xsscanary12345"; # URL context: # Test with HTML special characters to check encoding: GET /search?q=xss<>"'&/ HTTP/1.1 Host: target.example.com # Check which characters are reflected unencoded ``` ### Step 3: Test Reflected XSS with Context-Specific Payloads Based on the reflection context, craft targeted XSS payloads. ``` # HTML Body Context - Basic payload GET /search?q= HTTP/1.1 Host: target.example.com # HTML Attribute Context - Break out of attribute GET /search?q=" onfocus=alert(document.domain) autofocus=" HTTP/1.1 Host: target.example.com # JavaScript String Context - Break out of string GET /search?q=';alert(document.domain)// HTTP/1.1 Host: target.example.com # Event Handler Context - Use alternative events GET /search?q=