XSS
Last updated
Check if any value you control is reflected in the HTML or used by JavaScript.
The values you can control include:
URL parameters
Path variables
Headers (if applicable)
Cookies
Locate where your input is being reflected or used:
Raw HTML
Inside an HTML tag
Inside JavaScript code
Inside a JavaScript function
Can you create new HTML tags?
Can you inject JavaScript execution using events or attributes (onerror, onmouseover, etc.)?
Can you bypass protection mechanisms (e.g., WAF, filtering)?
If a JavaScript framework (e.g., AngularJS, VueJS, Mavo) is in use, check for Client-Side Template Injection (CSTI).
If JavaScript execution is blocked, consider Dangling Markup Injection (HTML scriptless injection).
Can you escape the attribute and inject raw HTML?
Can you add new events/attributes that allow JavaScript execution?
Does the attribute where you are trapped support JavaScript execution (href="javascript:alert(1)")?
Can you bypass existing security protections?
Can you escape the <script> tag and inject custom JavaScript?
Can you break out of strings (", ', `) and execute arbitrary JavaScript?
Are you inside template literals (` `) where expressions (${}) can be evaluated?
Can you bypass security protections?
Is the application calling a function where you can control parameters?
Can you exploit a DOM XSS?
Check if your input reaches a sink (e.g., innerHTML, eval(), document.write()).
Can you control a function name (e.g., ?callback=alert(1)) to execute arbitrary JavaScript?
Last updated