Skip to content
Skillpedia
Security48k · #3296

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-xss/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-xss/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
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-xss

Or 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.md
Technical 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:

  1. Ask the user to state the exact target URL, IP, account, or resource.
  2. Ask the user to confirm written authorization and the permitted scope.
  3. Show the exact command(s) and explain their expected effect.
  4. 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. &lt;script&gt; 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:

  1. 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.

  2. Attribute event injection (when < is filtered but attributes are injectable):

    " onmouseover="alert(CANARY)
    " onerror="alert(CANARY)
    " onload="alert(CANARY)
    
  3. URL/href context:

    javascript:alert(CANARY)
    

Distinguishing success from failure:

  • Vulnerable: response contains <script>alert( unescaped — browser would execute it
  • Filtered/safe: response contains &lt;script&gt; or &#x3C;script&#x3E; — 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.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#3296
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills