Este es un código de JavaScript vulnerable:
$(document).ready(function(){
var payload = unescape(document.location.hash.substr(1));
$(payload);
document.body.innerText = "The payload is: " + payload;
});
Cuando intenté explotarlo con esta entrada
http://localhost/xss.html#<img src=x onerror=alert(0)>
funcionó bien, apareciendo la alerta. Mi caso es ligeramente diferente, hay un pequeño filtro que impide la explotación:
$(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;
});
Trunca todo después del carácter "=", lo que significa que no puedo inyectar atributos. Ya probé lo siguiente, pero no funcionó:
- HTML codifica el carácter igual (
onerror&equal;alert()
) -
<script>alert(0);</script>
¿Alguien tiene una idea de lo que puedo hacer para omitir este filtro?