Vulnhub-CORROSION:2 Walkthrough


Descripción
Máquina de nivel fácil, el objetivo de este CTF es encontrar la bandera root (flag root).
Comencemos con la primera fase del Pentesting la enumeración y reconocimiento de nuestro objetivo de análisis. Utilizaremos la herramienta Netdiscover.

La dirección IP de nuestro objetivo es 192.168.50.84. Ahora con la herramienta Nmap descubriremos los servicios y versión que se están ejecutando en la máquina objetivo.

Los puertos abiertos y en ejecución en la maquina objetivo son el puerto 22 SSH, puerto 80 http y el puerto 8080 http-proxy. Ahora debemos descubrir las versiones de estos servicios en ejecución. Para esto utilizaremos nuevamente la herramienta Nmap.
Ahora descubriremos que tecnología se está utilizando en los servicios web, es decir, puerto 80, 8080.
El puerto 80 se está ejecutando el servidor apache.
y en el puerto 8080 se está ejecutando apache tomcat.

Ahora debemos analizar algunas cosas con respecto a apache y apache tomcat. apache generalmente se utiliza para servir páginas web en PHP y apache tomcat se utiliza para servir páginas web en JSP. Entonces, toca descubrir directorios respectivamente para estos servicios.

Utilizaremos La herramienta dirb para enumerar directorios. Comenzaremos con el servicio apache.
No hemos encontraron mucha información sobre que nos permita realizar alguna acción. Ahora probaré con otras extensiones de archivo, para este caso extensión .zip. En ocasiones se suelen encontrar estos tipos de archivos.
Al parecer no nada de importancia en el servicio apache. Ahora haré el mismo proceso con el servidor apache tomcat.
Aquí encontramos algo más interesante, encontramos un archivo backup.zip. Lo descargaré y analizare.

Para realizar la descarga utilizaré la herramienta wget.
Ahora descomprimiremos el archivo.
Como se observa en la imagen el archivo backup.zip está protegido por contraseña. Utilizaremos la herramienta zip2john para obtener el hash de contraseña del archivo.
Con la herramienta John the ripper intentare descifrar la contraseña.
Bien!!! Obtuvimos la contraseña para el archivo backup.zip. Ahora descomprimiremos el archivo backup.zip.

Al descomprimir el archivo backup.zip su contenido es el siguiente:
El archivo que nos importa es tomcat-users.xml, este archivo tiene la configuración de usuarios y password.
Ahora pasaré a la segunda fase del Pentesting análisis de vulnerabilidades ejecutaré la herramienta Nikto que es un escáner de vulnerabilidades para servicios web.
La herramienta nos advierte que posiblemente (recordar los falsos positivos / falsos negativos) el servidor es vulnerable al cve:2004-2104. Este tipo de vulnerabilidad permite a un atacante  llevar a cabo un ataque de secuencias de comandos que divulga información confidencial y potencialmente permite la carga de archivo malicioso en un servidor vulnerable.

Ahora ejecutaré la herramienta Metasploit para explotar esta vulnerabilidad, es decir, pasamos a la tercera fase del Pentesting Explotación.
En este caso usaré el exploit que se muestra en la imagen.
El exploit debemos configurarlo con los parámetros password y nombre de usuario (no requerido) y los parámetros RHOSTS y RPORT.
Nuestro exploit está configurado solo falta ejecutarlo.
Bien!!! la explotación fue exitosa y obtuvimos una consola meterpreter.
Lo primero que hice fue comprobar en el directorio estaba ubicado comando pwd, después con el comando cd / realice un cambio de directorio al directorio /home y por último liste los directorios. El directorio jaye como se muestra en la imagen no tiene permiso de lectura (r), pero el directorio randy si tiene permiso de lectura. Por lo tanto, me cambiaré de directorio y listaré su contenido.
No encontré nada interesante, así que sabiendo que se encuentran tres usuario para iniciar sesión en el sistema y teniendo las contraseñas de tomcat-users.xml y del archivo backup.zip. Probare esas contraseñas para el usuario randy y jaye.
Primero probaré con el usuario randy.
Falló la autenticación con el usuario randy. Ahora probaré con el usuario jaye.
Bien!!! el usuario jaye tenía misma contraseña que el usuario tomcat. Ahora probaré conectarme por SSH.
Bien!!! obtuvimos una conexión SSH.
Lo primero que haré es listar los archivos del directorio actual de jaye.
Ahora listaré los archivos de manera recursiva.
al listar los archivos llamo mi atención el directorio Files y su archivo look. Lo analizaré para saber de qué trata.
Utilice la utilidad file de Linux para identificar el tipo y formato del archivo look. La utilidad file realiza un conjunto de pruebas para identificar el tipo y formato de un archivo. En este caso el resultado indica que es un archivo ejecutable sin permiso de lectura. Por lo tanto, lo ejecutaré para saber de qué se trata.
Al parecer los parámetros del archivo reciben un string y una ruta de archivo, haré algunas pruebas.
Bien!!! el archivo look recibe como parámetro un string y una ruta de archivo. En este caso proporcione el archivo shadow del directorio /etc/ en él se encuentran los hash de contraseña de usuario. El hash de usuario que me interesa es randy, es el único usuario que falta saber su contraseña. Para esto copiaré el hash del usuario randy y con la herramienta John the ripper intentaré obtener la contraseña.  
Les advierto que la herramienta se demoró un par de horas en mi caso, pero obtuvimos la contraseña del usuario randy. Intentaré de realizar una conexión SSH.
Obtuvimos una conexión SSH con el usuario randy.
Lo primero que hice fue listar las carpetas de formar recursiva.
No encontré algo muy interesante, entonces listé los permisos de root que el usuario randy puede ejecutar.
Como se observa en la imagen el usuario randy puede ejecutar como root el intérprete Python y el archivo randombase64.py. Por lo tanto, modificaré el archivo randombase64.py para obtener una consola como root.

El archivo randombase64.py no es editable.
Por lo tanto, como puedo ejecutar /usr/bin/python3.8 como root, podemos modificar el módulo base64 de Python que es el módulo que utiliza el archivo randombase64.py.
Este módulo de Python permite codificar y decodificar en Base64. Así que lo que haré será modificar este archivo agregando la siguiente instrucción.
Ahora lo único que falta es ejecutar el archivo randombase64.py como root de la siguiente manera.
Ya escalamos privilegio como root y encontramos el flag (Bandera).

Happy Hack!!!

Comentarios