Blog

Vulnerabilidad XSS en tecnoempleo.com

Vulnerabilidad XSS en tecnoempleo.com

Hace poco descubrí una vulnerabilidad XSS en tecnoempleo. Veamos:

El problema está en una sección del formulario «Mi Cuenta» del candidato, llamada «Tu Identidad Digital». Sirve para enlazar a páginas personales (blog, Twitter…). Veamos su uso:

identidad_digital_tecnoempleo.com_3

Se genera un enlace a www.dominio.tld con el título «Mis proyectos». No está mal, pero no llama mucho la atención entre todo el texto del CV. Si pudiésemos insertar una imagen, sería mucho más visible. Sin embargo, el formulario sólo deja insertar URLs, nada más… ¿o sí?

Después de unos cuantos intentos, comprobé que cerrando la URL con unas comillas en la caja de texto, podía «inyectar» estilos a continuación. Veamos:

http://www.riru.re/trabajos/" style="display: block; height: 233px; width: 359px; font: 32px Cambria, Georgia, serif; color:red; background: Cornsilk url(http://www.riru.re/wp-content/uploads/konata31xd4lc4.gif) bottom left no-repeat;

En varias líneas, para que se vea mejor:

http://www.riru.re/trabajos/"
style="
display: block;
height: 233px;
width: 359px;
font: 32px Cambria, Georgia, serif;
color:red;
background: Cornsilk url(http://www.riru.re/wp-content/uploads/konata31xd4lc4.gif) bottom left no-repeat;

Observemos que el atributo style abre comillas, pero no las cierra. Las cierra el servidor al procesar el formulario. Comprobemos el resultado:

identidad_digital_tecnoempleo.com_7

¡Mucho mejor! Una imagen que enlaza a nuestra página web y no pasará desapercibida. El estilo consiste en aplicarla como fondo a la URL, por lo que se puede hacer click en toda su superficie.

¿Cuál es el problema del formulario? Sencillamente, que no se escapan las comillas. ¿Qué riesgo supone esta vulnerabilidad? Diría que alto. Lo que he mostrado aquí es una inocente inserción de imagen, pero se pueden hacer cosas más peligrosas. De la misma manera que hemos metido un atributo style, podemos hacer los mismo con un onmouseover, con código JavaScript. Ese código JavaScript podría robar cookies, con las que podríamos acceder a la cuenta del reclutador. ¡Magia!