🟠Chaos
Write-up de la máquina Chaos de Proving Grounds #writeup #walkthrough
Last updated
Write-up de la máquina Chaos de Proving Grounds #writeup #walkthrough
Last updated
Comenzamos la resolución de la máquina Chaos, realizando una enumeración rápida de los servicios que se están ejecutando en el objetivo.
Una vez conocemos los servicios disponibles, vamos a realizar una nueva enumeración más detallada para conocer más información de estos servicios.
VERSIONES
Puerto 80 -> HTTP ->Apache httpd 2.4.34
Puerto 110 -> pop3 -> Dovecot pop3d
Puerto 143 -> imap -> Dovecot imapd
Puerto 993 -> imap / ssl -> Dovecot imapd
Puerto 995 -> pop3 / ssl -> Dovecot pop3d
Puerto 10000 -> http -> MiniServ 1.89
En el puerto 80, se está ejecutando en servicio Web. Vamos a enumerar su contenido.
Enumeramos directorios y archivos.
Durante la enumeración con dirsearch, encontramos la siguiente publicación protegida por contraseña.
Haciendo una enumeración tradicional de usuarios, encontramos el nombre de author: human, que utilizaremos como contraseña para desproteger la publicación.
Encontramos las credenciales para el servicio Webmail. Vamos a comprobar si existe un subdominio o directorio con este nombre.
Encontramos un posible inicio de sesión. Vamos a comprobar si las credenciales son válidas. Utilizando las credenciales localizadas anteriormente, podemos acceder al servicio Webmail.
Una vez hemos accedido, encontramos este email en Drafts. Contiene una serie de claves interesantes y dos archivos adjuntos que vamos a descargar en nuestra máquina de ataque.
Parece que tenemos una password.
Y un mensaje cifrado. Y lo que parece el archivo utilizado para cifrar el mensaje.
Vamos a tratar de buscar un descifrador para este mensaje.
Encontramos un posible descifrador para el archivo cifrado que tenemos.
Vamos a tratar de descifrar nuestro archivo.
La ejecución del script decrypt.py genera un archivo txt que contiene un cifrado en base64. Vamos a descifrarlo.
Encontramos un URL en el mensaje cifrado. Vamos a ver el contenido de la dirección encontrada.
Vamos a interceptar una petición, para comprobar que funciones tiene el endpoint encontrado.
Lo interesante es ver que \write18 está habilitado. Según esta entrada de blog, podemos suponer que pdflatex se ejecuta con el flag --shell-escape, lo que nos permite ejecutar cualquier comando.
Podemos ejecutar comandos aprovechando una vulnerabilidad de LaTeX.
Vamos a ejecutar el siguiente payload:
Convertimos a URL encoded:
En nuestra máquina de ataque configuramos un oyente nc en el puerto 1234.
Tenemos acceso a la máquina objetivo. Convertimos la terminal en interactiva.
Vamos al directorio de usuarios, para tratar de localizar primero la flag de usuario y segundo, posibles vectores de elevación de privilegios.
Cuando nos dirigimos al directorio de usuarios, encontramos dos nombres sahay y ayush.
Para el usuario ayush, encontramos unas credenciales durante la enumeración de WP. Vamos a comprobar si estas credenciales son válidas en este momento.
Las credenciales son válidas pero accedemos con una terminal restricted. Vamos a tratar de saltar esta shell para obtener una completamente funcional. Guía interesante para esto. Buscamos diferentes binarios que podemos ejecutar desde restricted shell y el comando tar es uno de ellos.
Volvemos a www-data y vamos al directorio /tmp. En este directorio creamos un archivo securiters. El siguiente paso será añadir este archivo creado a un archivo securiters.tar. Una vez completado este proceso, volvemos a acceder al sistema con las credenciales del usuario ayush, donde ejecutaremos el archivo creado anteriormente para omitir el shell. Finalmente, arreglamos la ruta para obtener una shell funcional.
Una vez obtenemos la shell completamente funcional, vamos a localizar la flag de usuario.
Dentro del directorio del usuario ayush, encontramos otro directorio .mozilla. Veamos su contenido.
Dentro del firefox, encontramos un perfil.
Vamos a transferir toda la información contenida en este perfil a nuestra máquina de ataque de la siguiente manera. En la máquina objetivo, configuramos en servidor Python en el puerto 1337.
En nuestra máquina de ataque creamos un directorio firefox donde descargaremos todos los archivos y ejecutamos el siguiente comando para descargar todos los archivos.
Una vez descargados todos los archivos, vamos a utilizar la herramienta firefox_decrypt.py para descifrar información interesante de los archivos descargados. Se pide una contraseña, probamos con la credencial del usuario ayush:jiujitsu y es correcta.
Después de descifrar, obtenemos unas credenciales y un nuevo endpoint donde pueden ser válidas.
Accedemos al Área de Administración del Servidor Web. Webmin tiene una funcionalidad de terminal que vamos a analizar.
Ya tenemos privilegios pero vamos a acceder desde nuestra terminal de ataque. El payload utilizado es el siguiente:
Solo quedará buscar la flag root para completar la resolución de la máquina Chaos.