Hoy toca contar una historia, que por desgracia cada vez es más frecuente. Estaba yo el día uno de noviembre en mi casa, sentado en mi mesa de estudio peleándome con las particiones FAT32 con sus “directory root” y los “longs entry” (a quién se le ocurre empezar por el final), cuando a las cinco de la tarde decidí darme una vuelta por la web, y en concreto por las de noticias, a ver que había ocurrido.
Dentro de las noticias que vi me encontré con una muy interesante que indicaba que había habido un socavón en un estado de Alemania (me pareció curiosa), pero al pinchar sobre esa noticia el no-script me grito, algo bastante raro ya que lo tengo bastante bien configurado. Cuando mire a ver que ocurría me encontré con esto:
Antes de continuar se habrán dado cuenta que tanto he eliminado cualquier referencia de la página web donde ocurrió, como he eliminado el supuesto atacante que lo produzco, por razones muy distintas, un fallo lo puede cometer cualquiera, y el que esté libre de culpa que tire la primera piedra. Por otro lado, me he negado a hacer publicidad de los supuestos atacantes, que no son más que un par de irresponsables, por no emplear calificativos de otro tipo.
Bueno, ya podemos seguir. Al ver el mensaje “alert” lo vi claro, sabía donde estaba el fallo puesto que siempre que visitaba la web veía esa zona y pensaba: “esto es vulnerable sí o sí”. No hubo duda, fui directo a la zonas de comentario en busca del alert, y claramente “one more time” esto era un XSS:
<span class="fechaHora">01.11.2010 - 16.55 h - </span>Dice ser <strong><a href="mailto:XXX%3C"><script>alert("Hacked By: XXXXXXXX")</script>@gmail.com" >XXXX</a></strong> - <span class="ordinal">#1</span>
Por tanto la zona vulnerable era la parte donde se mostraba el nombre del usuario registrado que había publicado el comentario. Lo peligroso de esto, es que, como todo comentario, este es permanente y por tanto el XSS se ejecutaba cada vez que un usuario visitaba la noticia. Como se podrán imaginar el atacante fue aumentado la calidad del ataque, dejando inservible la noticia.
Como ven, esto es lo que tendría que haber en un usuario registrado:
<span class="fechaHora">01.11.2010 - 14.28 h -</span><strong><a href="direccion web" onclick="window.open(this.href); return false; ">Nombre usuario</a></strong> - <span class="ordinal">#1</span>
A raíz de esto me surgieron varias dudas que quiero compartir con ustedes.
Si como técnico de seguridad detecto que una web es posiblemente vulnerable, ¿debo informar a la web? ¿Si informo me podrían acusar de asaltante? ¿Me harían caso? Antes de contestar piensen: ¿en que web hay un enlace para poder notificar posibles fallos de seguridad detectados?
Otra duda que me surgió fue, ¿porqué si cada vez más se están realizando ataques de tipo XSS que permiten, entre otras, modificar la imagen de la web, robar sesiones de los usuarios y redireccionar a servidores con malware, cuando se informa de una vulnerabilidad XSS en una auditoría no se le da el valor que corresponde?
¿Pero saben cuál fue la mayor pregunta que me hice después? Que ocurrió en Alemania con el socavón, que era lo que realmente me interesaba.
¿Cualquier referencia a la web? si es 20.minutos (:
Estoy de acuerdo contigo, todos podemos cometer errores pero yo ya, visto lo visto, casi nunca informo de los XSS ya que los administradores suelen pasar del tema por considerarlos poco peligrosos y que encima no les afectan a ellos (a sus servidores) sino al pobre usuario :( En fin, allá ellos con sus políticas de seguridad.
Realmente si informas la primera impresión es que te tomen por un asaltante (me ha pasado) pero si tienen paciencia y hay intercambio de correos podrán ver que no es así.
NOTA: Los XSS persistentes si son más peligrosos que los típicos XSS que se pasan en un enlace.
La verdad Ximo es que como bien comentas los XSS aún no se le dan la importancia que les corresponde. Pese a que llevan muchos años entre nosotros siguen estando en los top 10 de clasificaciones de vulnerabilidades Web (OWASP Top 10 2010). Bajo mi punto de vista no se llega a entender el alcance de estos ataques y su potencia.
De todos modos, tengo que decirte @fossie que creo que por mucho que no se lo tomen en serio se debe informar, ya que NO informar NO es ni mucho menos una postura aceptable. Quizá, lo que debamos hacer es plantearnos si realmente estamos trasladando de manera adecuada este tipo de vulnerabilidades, su criticidad, su impacto, etc. ¿lo estamos haciendo?.
Hace un tiempo tuve que hacer una presentación y cree un video donde su principal objetivo era mostrar el impacto de un XSS:
http://www.youtube.com/watch?v=Q9pQ3NlJtFE
La verdad es que no se si consigue en el video, pero creo que BeEF es una herramienta que puede ayudarnos a crear demostraciones del impacto de un “simple” XSS.