Ejecución remota de código (RCE) a través de la carga de archivos war en Tomcat.

Recientemente el investigador de Defmax encontrado una ejecución remota de código a través de la carga de archivos en una aplicación java donde he utilizado un path traversal y un archivo war. El tomcat despliega automáticamente los archivos war cuando se cargan en la carpeta webapps. Así que vamos a ver cómo funciona el tomcat en realidad.

¿Qué es Tomcat?

Apache Tomcat es un contenedor de servlets Java de larga duración y de código abierto que implementa varias especificaciones empresariales fundamentales de Java, a saber, las API de Java Servlet, JavaServer Pages (JSP) y WebSockets.

Para abreviar la descripción, significa que podemos desplegar aplicaciones java en Tomcat.

¿Cuál es la estructura de Tomcat?

Una vez que Tomcat ha sido instalado, verá una estructura de directorios algo así:

Image for post

La jerarquía de directorios típica de una instalación de Tomcat consiste en lo siguiente:

  • bin – scripts y ejecutables de arranque, apagado y otros
  • common – clases comunes que Catalina y las aplicaciones web pueden utilizar
  • conf – archivos XML y DTDs relacionados para configurar Tomcat
  • logs – registros de Catalina y de las aplicaciones
  • server – clases utilizadas sólo por Catalina
  • shared – clases compartidas por todas las aplicaciones web
  • webapps – directorio que contiene las aplicaciones web
  • work – almacenamiento temporal de archivos y directorios

La carpeta webapps contiene el archivo war y su carpeta extraída.

Image for post

La vulnerabilidad

La aplicación que estaba Defmax tiene una función para subir un archivo. No sabía la ruta del archivo subido. Así que estaba tratando de atravesar la ruta en el nombre del archivo para llevarlo al directorio principal.

Image for post

Aquí, en el parámetro de carga, ha utilizado ../check404.exe para verificar el recorrido de la ruta. Después de visitar http://example.com/check404.exe, esto funcionó.

Image for post

Así que ahora intenté adivinar los nombres de los archivos JSP y sobrescribirlos pero no funcionó. Así que estaba navegando por las formas alternativas de conseguir cualquier vulnerabilidad crítica.

Image for post

Dice que tomcat desplegará automáticamente un archivo war cuando se coloque en el directorio tomcat webapps.

Así que he creado un archivo war utilizando el siguiente comando.

godofwar -p cmd_get
Image for post

Como sabemos, al atravesar un directorio antes era la carpeta raíz del sitio web. Si atravesáramos dos directorios ese sería el directorio de las webapps. Ahora subimos el archivo war con nombre de archivo «../../cmd_get.war»

Image for post

Como puede ver, se ha cargado. Ahora se desplegará automáticamente. Ahora navegar a la siguiente URL, le daría shell.

http://example.com/cmd_get/cmd_get.jsp

Image for post

Fuente: defmax.io

Comments are closed.