Resolución del CTF BUDA
❌Nombre: Buda
📈Nivel: PROFESIONAL
💻OS: Linux
🙋🏽♂️Creador: H4ckgiver
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para saber cuáles están activos.

Los parámetros utilizados son:
- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear de manera rápida que puertos están abiertos.
- -sC : Realiz una escaneo con los scripts basicos de reconocimiento
- -sV : Realiza un escaneo en buqueda de los servicios
- –min-rate 5000: Especificamos que el escaneo de puertos no vaya más lento que 5000 paquetes por segundo, el parámetro anterior y este hacen que el escaneo se demore menos.
- -n: No realiza resolución de DNS, evitamos que el escaneo dure más tiempo del necesario.
- -Pn: Deshabilitamos el descubrimiento de host mediante ping.
En el puerto 80 nos encontramos un panel de apache por defecto.

Vemos que tenemos en el robots.txt un dominio, así que lo añadimos al /etc/hosts

Una vez dentro del dominio encontramos una pagina que parece en mantenimiento.

Así que vamos a fuzzear en busca de subdominios.

Encontramos un panel de login.

En el que vemos que el vulnerable a inyecciones SQL al inyectarle una comilla.


Vamos a utilizar sqlmap para dumpear toda la base de datos existentes.

Y nos encuentra la base de datos buda la cual tiene diferentes usuarios y contraseñas.

Asi que entramos por ftp y activamos el modo passive off para que el servidor abra un puerto aleatorio y se pueda comunicar con nosotros.

Listando nos encontramos con dos archivos interesantes, documens.zip y knock, así que nos los traemos.

Sacamos el hash del zip y lo rompemos para obtener la contraseña.

Descomprimimos el archivo.

Y vemos lo que parece un usuario y una contraseña.

Dentro del archivo knock encontramos diferentes puerto, ya que esas credenciales no son validas por ftp y no tenemos ssh, podemos pensar que hay que golpear(port knocking) los puertos, y tenemos una lista de ellos:

El port knocking implica enviar una serie específica de intentos de conexión (o «golpes«) a una secuencia predefinida de puertos cerrados. Estos intentos de conexión actúan como una «contraseña» o «código secreto«. Si la secuencia es correcta, el firewall detecta estos intentos y abre el puerto o los puertos necesarios para permitir el acceso al servicio deseado.
Para el port knocking utilizaremos la siguiente herramienta, Tras varias pruebas hay que ejecutarlo en una secuencia puesto que no podemos hacer fuerza bruta hasta que se abre.

Y como vemos tenemos abierto el puerto 22.

Así que entramos por ssh con las credenciales que obtuvimos anteriormente.

Vemos que este usuario pertenece al grupo docker y que tiene una imagen creada.

Si le echamos un vistazo a GtfoBins vemos que podemos ejecutarlo como root mediante una bash con permisos de root.

Primero vamos a correr la imagen en el directorio temporal /mnt y le damos permisos de root a una bash en el docker, el cual se va a sincronizar en el directorio, la lanzamos y somos root.

Especial agradecimiento a la compañera h4ckgiver por la creación y el conocimiento aportado en esta máquina.