hunt-xss
Teaches your AI agent to protect apps against attacks.
What it does
This tool helps find security flaws called XSS (Cross-Site Scripting) on websites. It checks if malicious code can be inserted and run in a browser.
When to use it
- ✓When testing a website's security with permission.
- ✓To learn how XSS flaws work.
- ✓When checking if a site protects well against code injection.
Example of what to ask your AI
“I want to check if the website 'example.com' is vulnerable to XSS. What is the exact URL, and do I have written permission to test?”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool tries to inject small pieces of code into different parts of a website. If the code appears unmodified in the website's response, it indicates a vulnerability.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill hunt-xssOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-xss/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
⚠️ AUTHORIZED USE ONLY This skill is for educational purposes or authorized security assessments only. You must have explicit, written permission from the system owner before using this tool. Misuse of this tool is illegal and strictly prohibited.
Mandatory confirmation gate Before running any command that probes, exploits, changes, persists on, extracts data from, or attempts credential access against a target:
- Ask the user to state the exact target URL, IP, account, or resource.
- Ask the user to confirm written authorization and the permitted scope.
- Show the exact command(s) and explain their expected effect.
- Wait for explicit confirmation in the current conversation.
Without that confirmation, remain read-only and provide defensive guidance only. Prefer a sandbox, disposable VM, or controlled lab.
Autonomous Testing Priority
Verify reflection before claiming XSS — encoding is everything.
Your payload must appear in the response body with angle brackets UNESCAPED. <script> is XSS. <script> is safe encoding — not vulnerable.
Use a UNIQUE NUMERIC CANARY in your proof payload — e.g. <script>alert(91234)</script> or "><img src=x onerror=alert(91234)>. Pick a distinctive 4+ digit number, not alert(1). Practice pages are full of example payloads like alert(1)/alert('XSS') in their hint text; a unique number is how you tell YOUR reflected payload apart from the page's decoy examples. Proof = your alert(<canary>) shows up in the response with raw, unescaped angle brackets.
Try these contexts in order:
Inline script injection (works when HTML context allows new tags):
<script>alert(CANARY)</script>Use whatever canary string your proof contract specifies. Confirmed when
<script>alert(CANARY)appears literally (not HTML-encoded) in the response.Attribute event injection (when
<is filtered but attributes are injectable):" onmouseover="alert(CANARY) " onerror="alert(CANARY) " onload="alert(CANARY)URL/href context:
javascript:alert(CANARY)
Distinguishing success from failure:
- Vulnerable: response contains
<script>alert(unescaped — browser would execute it - Filtered/safe: response contains
<script>or<script>— properly encoded - Blocked: response is an error, or the reflected value is absent entirely
For stored XSS: inject into a field that other pages display (comments, usernames, ticket titles). Then fetch the rendering page and check for unescaped payload. The payload executes when any user views that page — higher severity than reflected.
Crown Jewel Targets
XSS is high-value when it combines privileged context + persistent delivery + scope escalation. The highest payouts come from:
- Admin panels and authenticated dashboards (e.g.,
*/admin,*/settings) — attacker can hijack sessions with elevated privileges, exfiltrate tokens, or pivot to account takeover - Payment/financial flows (
paypal.com, checkout pages, currency converters) — XSS here enables credential harvesting and financial fraud at scale - Stored XSS in collaborative features (wikis, markdown renderers, issue trackers, RDoc, labels, tags) — one payload infects every viewer, multiplying impact
- SSO/signin pages (e.g.,
paypal.com/signin) — XSS here is critical because it can steal auth tokens across the entire platform - Shared SaaS tenant surfaces (
*.myshopify.com,api.collabs.*) — XSS in one tenant's context can bleed across tenant boundaries - Help/documentation sites (
help.shopify.com) — lower severity individually, but often have looser sanitization and trusted user perception - SVG/file upload endpoints — frequently bypasses CSP and sanitization simultaneously
Asset types that pay most: Main product domains > Admin subdomains > API endpoints > Marketing/help sites
OOB-Or-It-Didn't-Happen Gate (Blind / Stored XSS)
For blind and stored XSS — claims require an out-of-band confirmation, the same as blind SSRF. The OOB receiver fires when the payload actually executes in a browser somewhere (an admin reviewing logs, a SOC analyst opening a ticket, an email rendering a stored payload).
What is NOT confirmation
- ASP.NET request validator rejected your
<and returned a different status code → not XSS, that's WAF noise.
…
FAQ
What is XSS?
XSS is a security flaw where an attacker can make a website execute malicious code in another person's browser, like stealing information.
Why do I need permission?
Testing websites for security without permission is illegal. This tool should only be used on places where you have explicit authorization to test.
How do I know if I found a flaw?
The tool looks for a specific code (like `<script>alert(1234)</script>`) that appears exactly as sent in the website's response, without being 'encoded' or changed.
Details
Original description by the author
Hunting skill for xss vulnerabilities.
Popularity
- GitHub stars
- 48k
- Ranking position
- #3296
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
django-security
Helps your agent implement security practices in Django applications. It focuses on authentication, authorization, and prevention against common attacks, ensuring more secure code.
affaan-m/ECC
laravel-security
Helps your agent secure Laravel applications against threats. Implements security practices for authentication, authorization, and common attack prevention.
affaan-m/ECC
module-regression
Helps your agent manage changes in large projects. Ensures code changes in one part don't break other parts.
affaan-m/ECC