Convertir archivo tipo JSP a WAR

Recientemente obtuve credenciales de acceso de un servidor Weblogic, por lo que intenté subir un archivo que me permitiera ejecutar comandos en su sistema operativo. En consecuencia, procedí a generar archivos tipo WAR mediante msfvenom.

Sin embargo, el acceso a los puertos del servidor Weblogic estaba filtrado mediante un firewall limitandome el meterpreter, por lo que solo podía lograr la ejecución de comandos sobre el puerto 7001/TCP.

No tenía mucho tiempo disponible para generar un archivo WAR desde cero, por lo que busqué webshells dentro de los archivos que vienen precargados en Kali. No tuve éxito al buscar un archivo tipo WAR, sin embargo al buscar por otros archivos identifique una webshell tipo JSP.

Búsqueda de webshells

Este tipo de archivos se usa para ejecutar comandos en servidores de aplicaciones como Tomcat, por lo que opte por tratar de cargarlo en el servidor. Sobra decir que weblogic no lo reconoció, ya que solo acepta archivos tipo WAR (corríjanme si me equivoco). Entonces busqué herramientas para transformar el archivo JSP a WAR tampoco tuve éxito. Sin embargo, tras una larga búsqueda, encontré la forma y te la comparto.

Primero copie el archivo cmdjsp.jsp a mi carpeta de trabajo. Dónde ajuste el archivo cmdjsp.jsp acorde al sistema operativo objetivo, linux.

El programa original está diseñado para funcionar sobre Windows por lo que hay que especificar el programa “sh” en lugar de “cmd.exe”.

Adaptación de la webshell JSP para funcionar en sistemas linux

 Luego cree el directorio WEB-INF. Posteriormente dentro esa carpeta, cree un archivo llamado web.xml, con el siguiente contenido:

<?xml
version=”1.0” ?>
<web-app
xmlns=”http://java.sun.com/xml/ns/j2ee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”
version=”2.4”>
<servlet>
<servlet-name>Command</servlet-name>
<jsp-file>/cmd.jsp</jsp-file>
</servlet>
</web-app>

En este archivo, realice otro ajuste, adapte el nombre de cmd.jsp al nombre de la webshell de kali, cmdjsp.jsp. Una vez con los archivos generados obtuve la siguiente estructura:

Estructura de archivos para generar archivo tipo WAR

Ahora que ya tenemos los archivos mínimos necesarios de un archivo WAR, generamos el archivo empaquetado mediante jar.

Generación de archivo WAR

Ahora con la webshell tipo WAR generada en el navegador, regresamos a la consola de Weblogic para desplegar la webshell , cmdjsp.war.

Instalación del archivo tipo WAR en Weblogic
Activación del archivo tipo WAR

Ahora ingresamos a la webshell recién cargada en el servidor, especificando el comando a ejecutar en el parámetro “cmd”.

Ejecución de comandos en el servidor Weblogic

Dato adicional, esta webshell tiene limitaciones en cuanto a los espacios en blanco, que puede ser subsanada mediante la secuencia “${IFS}” que debes sustituir por cada espacio en blanco que contenga tu comando.

Ejecución de comandos con espacios en el servidor Weblogic

Finalmente, sería injusto decir que este hack lo logré yo solo, por lo que te dejo el link al post de Scott Sutherland de NetSPI quién hizo un excelente trabajo acerca de cómo ejecutar comandos a partir de archivos tipo JSP. 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *