🟠Tre
Write-up de la máquina Tre de Proving Grounds #writeup #walkthrough
Last updated
Write-up de la máquina Tre de Proving Grounds #writeup #walkthrough
Last updated
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.
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:
Servicios abiertos:
Puerto 22 -> SSH -> OpenSSH 7.9
Puerto 80 -> HTTP -> Apache httpd 2.4.38
Puerto 8082 -> HTTP -> nginx 1.14.2
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.
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".
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.
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
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.
El siguiente paso será reiniciar el sistema.
Una vez reiniciada la máquina, vamos a consultar que archivos tiene activo el bit SUID.
Ahora consultamos en GTFOBins como elevar privilegios utilizando este binario.
Y obtenemos privilegios máximos dentro de la máquina objetivo. Solo quedará buscar la fla proof.txt.