4.4 DOM-Based XSS
Last updated
Last updated
DOM-based XSS vulnerabilities usually arise when JavaScript takes data from an attacker-controllable source, such as the URL, and passes it to a sink that supports dynamic code execution, such as eval()
or innerHTML
. This enables attackers to execute malicious JavaScript, which typically allows them to hijack other users' accounts.
To deliver a DOM-based XSS attack, you need to place data into a source so that it is propagated to a sink and causes execution of arbitrary JavaScript.
The most common source for DOM XSS is the URL, which is typically accessed with the window.location
object. An attacker can construct a link to send a victim to a vulnerable page with a payload in the query string and fragment portions of the URL. In certain circumstances, such as when targeting a 404 page or a website running PHP, the payload can also be placed in the path.
Executing JavaScript from a string is an enormous security risk. It is far too easy for a bad actor to run arbitrary code when you use eval()
. See Never use direct eval()!, below.
This piece of code is vulnerable, because there's not input sanitisation
Starting of this URL: https://pentesteracademylab.appspot.com/lab/webapp/jfp/dom?statement=
we can add code that will be executed using eval JS function with the document.getElementByID that will change the DOM HTML attribute value