Install any skill in seconds. Free to start, no credit card required.
Get Started Free →elementalsouls/hunt-dom
Hunt client-side DOM vulnerabilities — DOM Clobbering (overwrite JS globals via HTML injection), PostMessage hijacking (missing origin check), Service Worker abuse (intercept requests from same-origin script), CSS Injection/Exfiltration (attribute selectors → token char-by-char via OOB), client-side template injection, dangerouslySetInnerHTML. Grounded in named public research: Gareth Heyes / PortSwigger DOM-clobbering + DOM-Invader, Michał Bentkowski DOMPurify clobbering bypasses, jQuery htmlPr
Passed 19 of 24 test cases with the skill, and 19 of 24 without it.
1 fixed18 passed either way4 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
A test case the skill fixed. Same model, same prompt, with and without the skill.
To demonstrate the critical severity of a Service Worker persistent backdoor, what specific steps must be executed to prove persistence beyond single-tab session execution?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies closing all active target browser tabs to test persistence. | Passed | Passed |
| Requires observing a fresh out-of-band callback after reopening without re-executing XSS. | Missed | Passed |
The instructions your model reads when the skill loads.
DOM-based attacks execute in the victim's browser — the server often never sees the payload, so WAFs and server-side input filters do not apply. PostMessage missing-origin-check = cross-origin token theft with no XSS needed.
Highest-value chains:
<script>) overwrites a JS global like window.config or shadows document.getElementById, and the app later treats that value as a URL/code → sink fires under a markup-only injection where script is filtered.message handler that trusts event.data without validating event.origin lets an attacker iframe/opener drive privileged actions or feed a sink.fetch → persistent credential capture.input[value^="a"]) leak a CSRF token / API key / nonce char-by-char to an OOB host with zero JS.htmlPrefilter self-closing-tag XSS — CVE-2020-11022 and CVE-2020-11023 (jQuery < 3.5.0). Passing attacker HTML to .html() / .append() mutates into executing markup. Grep bundled jQuery version; this is one of the most common real-world DOM-XSS roots.@import recursion to drop the per-char-position constraint).Cite only what you reproduce. Do not paste these as "proof" in a report — your PoC against the live target is the evidence. Named research here is for technique provenance, not severity inflation.
# Injection points that allow MARKUP but may strip <script>:
user bio / display name / comment / markdown preview / SVG upload / CMS rich-text
# postMessage endpoints (iframes, SSO widgets, payment frames, chat widgets):
*/sso/* */embed/* */widget/* */oauth/* /sdk.js pay/checkout iframes
# Service worker presence:
/sw.js /service-worker.js /firebase-messaging-sw.js /ngsw-worker.js (Angular)
# CSS injection points:
?theme= custom-css profile field email-template editor style= passthrough
test cases passed, vs 19 / 24 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.