miércoles, 30 de mayo de 2012

Reto 3: Encontrar un XSS

Para superar este reto hay que encontrar uns XSS en esta página

Para encontrar el XSS es necesario utilizar un conversor, como por ejemplo el del blog.

El php que recibe los datos del usuario realiza estos pasos para filtrar los datos y asegurarlos:

$nombre = urldecode($nombre);
$nombre = str_replace('script','',$nombre);
$nombre = str_replace('<','',$nombre);
$nombre = str_replace('>','',$nombre);
$nombre = htmlspecialchars($nombre);
$nombre = addslashes($nombre);

En principio parece que se filtra bien la entrada del usuario y que no existe peligro de una vulnerabilidad XSS.
La clave para encontrar el XSS es utilizar la codificacion hexadecimal ya que es interpretada correctamente por los navegadores.
Si codificamos \alert(1)\ obtendremos %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E
Si introducimos esto en el formulario y pulsamos en el enlace obtendremos un html con el codigo alert(1)/,
Como podemos decucir del html nos están eliminando los caracteres < , > y script,
Para conseguir saltarnos esto lo que podemos hacer es codificar dos veces \alert(1)\ lo que nos daría %25%33%43%25%37%33%25%36%33%25%37%32%25%36%39%25%37%30%25%37%34%25%33%45%25%36%31%25%36%43%25%36%35%25%37%32%25%37%34%25%32%38%25%33%31%25%32%39%25%33%43%25%32%46%25%37%33%25%36%33%25%37%32%25%36%39%25%37%30%25%37%34%25%33%45
Si introducimos esto último conseguimos ejecutar nuestro pequeño script.

No hay comentarios:

Publicar un comentario