🟠Tre

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

Enumeración

Servicios abiertos

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

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

Tres puertos abiertos: 22, 80 y 8082. El siguiente paso será la enumeración profunda de estos servicios. Esto lo hacemos de la siguiente forma:

nmap -p22,80,8082 -Pn -n -sVC -vvv 192.168.84.84 

Servicios abiertos:

  • Puerto 22 -> SSH -> OpenSSH 7.9

  • Puerto 80 -> HTTP -> Apache httpd 2.4.38

  • Puerto 8082 -> HTTP -> nginx 1.14.2

Enumeración Web

La máquina Tre ejecuta dos servicios http, en el puerto 80 y 8082. Vamos a comenzar enumerando el puerto 80.

Consultando el contenido del puerto 8082, vemos la misma imagen.

Vamos a continuar enumerando directorios y archivos. Esto vamos a hacerlo con la herramienta feroxbuster.

feroxbuster -u http://192.168.84.84:80 -s200,301 -x html,txt,php -w /usr/share/wordlists/dirb/big.txt

Después de un momento, encontramos dos resultados que pueden ser interesantes.

En adminer.php, encontramos un formulario de inicio de sesión para lo que parece una base de datos.

Vamos a volver a enumerar para el directorio "/mantisbt".

feroxbuster -u http://192.168.84.84/mantisbt -s200,301 -x html,txt,php -w /usr/share/wordlists/dirb/big.txt

Encontramos un directorio /config, que puede contener información interesante.

Encontramos unas credenciales en el archivo "a.txt". Vamos a probarlas en el formulario que encontramos anteriormente.

Estas credenciales nos permiten acceder a la base de datos del sitio Web.

Vamos a buscar credenciales de usuarios en la base de datos.

Explotación

Encontramos credenciales para el usuario administrator y tre. Probamos estas credenciales en el formulario de inicio de sesión http://192.168.84.84/mantisbt/login_page.php pero no son válidas. Recordamos que encontramos el puerto 22 abierto durante la enumeración inicial de puertos.

Las credenciales del usuario "tre" son válidas para iniciar sesión a través de SSH.

El siguiente paso será la búsqueda de la flag local.txt

Elevación de privilegios

Comenzamos enumerando que puede ejecutar el usuario "tre" con privilegios elevados sin necesidad de contraseña.

El usuario tre puede ejecutar /sbin/shutdown en la máquina sin contraseña pero si lo ejecutamos, mataremos la sesión así que no es buena idea.

Vamos a enumerar vectores posibles de elevación de privilegios utilizando la herramienta LinPeas.

Encontramos el siguiente ejecutable que puede ser interesante. Veamos su contenido.

El usuario "root" es el propietario del archivo con permiso de lectura y escritura para todos.

Este script realiza una verificación del sistema en cada reinicio. Podemos tratar de añadir contenido a este archivo que queramos que se ejecute al inicio del sistema. Debido a que se ejecuta como root y podemos reiniciar la máquina, podemos agregar permisos SUID a un binario arbitrario, como /usr/bin/find. Podemos agregar la siguiente instrucción al archivo.

chmod +s /usr/bin/find 

El siguiente paso será reiniciar el sistema.

sudo shutdown -r now

Una vez reiniciada la máquina, vamos a consultar que archivos tiene activo el bit SUID.

find / -perm -u=s -type f 2>/dev/null

Ahora consultamos en GTFOBins como elevar privilegios utilizando este binario.

./find . -exec /bin/sh -p \; -quit

Y obtenemos privilegios máximos dentro de la máquina objetivo. Solo quedará buscar la fla proof.txt.

Last updated