Tony The Tiger - Java serialisation attack

Datos Generales

  • URL: https://tryhackme.com/r/room/tonythetiger
  • Dificultad: Fácil
  • Flags: Usuario y Root
  • Aprendizaje: Explotación con metasploit, criptografía y esteganografía

Conocimientos iniciales

Serialización

La serialización, en sentido abstracto, es el proceso de convertir objetos en bytes, para luego transmitirlos por la red. Posteriormente este flujo de bytes se convierten nuevamente en objeto. Esta conversión final se conoce como desserialización. Información ampliada en el siguiente enlace: Serialización de objetos en java

Serialización de objetos en Java.

El CTF

Reconocimiento

Al iniciar el proceso de reconocimiento es común realizar la enumeración de puertos, el scaneo de directorios y de subdominios, entre otras pruebas según presente la aplicación web obejtivo. En el caso de este ctf se obtuvo resultados de ínteres mediante el scaneo de puertos. La herramienta utilizada para ello fue nmap. El resultado muestra que el puerto 8080 se encuentra habilitado para desplegar un servicio http. El mismo funciona utilizando la tecnología Apache / Coyote JSP.

nmap -Pn -sC -sV ip.

Ingresando por el puerto 8080 se reconoce que la aplicación JBoss se utiliza para el front-end.

Posible vulnerabilidad, aplicación JBoss para el front end.

Primera Flag

Además, se pudo identificar que existe una imagen en la web, la misma se encuentra almacenada en imgur y se puede observar que contiene un mensaje oculto utilizando la herramienta strings.

Imagen de la web y hallazgo del mensaje oculto.

Segunda Flag

Luego de obtener la primera flag, realizamos la explotación de la vulnerabilidad jboss reconocida anteriormente. Para ello descargamos el exploit desde github: https://github.com/joaomatosf/jexboss. fijamos la ip atacante (nuestra ip) y el puerto por el cual nos conectaremos.

Ejecución del exploit.

Para mantener funcional el exploit utilizaremos netcat escuchando por el puerto 4444

Ejecución del puerto en escucha.

Hallando la flag del usuario jboss

Una vez realizado la conexión con el servidor, es posible navegar en los ficheros del usuario cmnatic. Mediante una inspección simple de los ficheros se observo la carpeta jboss. utilizando el comando ls -la se puede observar el archivo .jboss.txt el mismo que es posible desplegar utilizando el comando cat.

Visualización de la flag del usuario jboss.

Escalamiento

Además, en el mismo fichero encontramos el archivo note, que contiene información útil para el escalamiento

Contenido del archivo note.

Posteriormente hacemos más amigable la terminal y logeamos con el usuario jboss

Estabilización de la tty y acceso a la cuenta jboss.

Obteniendo la flag de root

Dentro la cuenta de jboss podemos intentar acceder a la carpeta root, a la cual no tenemos permiso para acceder. Explotando una vulnerabilidad de comandos en linux es posible acceder como usuario root. El payload se encuentra en https://gtfobins.github.io/gtfobins/find/#sudo Accediendo al fichero root, se puede observar el documento root.txt el cual contiene un mensaje en base64

Escalamiento vertical a la cuenta del usuario root.

Utilizando ciberchef.org se pudo determinar el valor del mensaje, el cual es un hash que es posible determinar mediante uso de bibliotecas.

Determinación del mensaje utilizando cyberchef.

Finalmente obtenemos el valor de la flag

Obtención del valor de la flag de root.