Hacemos el reconocimiento de puertos con nmap, donde vemos abiertos los puertos 22 y 80:

Si inspeccionamos el servidor web, vemos que nos encontramos con una plantilla de apache por defecto:

Realizamos fuzzing para detectar directorios o archivos dentro de la web; y si utilizamos la extensión -x de gobuster podemos encontrar un archivo llamado penguin.html:

Accedemos al directorio penguin.html y tenemos esta página web:

La imagen que vemos en la web vamos a descargarla para examinarla más en profundidad:

Si intentamos comprobar la existencia de archivos ocultos dentro de esta imagen, vemos que nos pide un salvo conducto, el cual no tenemos:

Por lo que tenemos que hacer un ataque de fuerza bruta para tratar de descubrir cual es esta contraseña y así poder ver los archivos dentro de la imagen, por lo que haremos el siguiente script de bash:

#!/bin/bash
 
imagen="$1"
diccionario="$2"
 
while IFS= read -r password; do
    echo "Probando contraseña: $password"
    steghide extract -sf "$imagen" -p "$password" &>/dev/null
    if [ $? -eq 0 ]; then
        echo "Extracción exitosa con contraseña: $password"
        exit 0
    fi
done < "$diccionario"
 
echo "No se pudo extraer el archivo oculto. Se probaron todas las contraseñas."
exit 1

Ejecutamos el script y le pasamos como argumentos tanto la imagen como el diccionario rockyou, donde vemos que nos encuentra la contraseña chocolate:

Extraemos el contenido de la imagen con steghide proporcionando la contraseña:

Y vemos que nos devuelve un keepass, por lo que tenemos que hacerle otro ataque de fuerza bruta con keepass2john de la siguiente forma, donde nos encuentra la contraseña password1:

Entramos en la base de datos del keepass proporcionando esta contraseña y vemos que funciona:

El nombre de usuario no nos coincide por ssh, pero podemos probar el mismo nombre de la máquina hackpenguin; y en este caso vemos que funciona:

Una vez dentro, además de la flag de user podemos ver un script y un archivo de texto:

Vemos que root es el propietario de este script y además tenemos permisos sobre él:

Revisamos si este script se ejecuta de forma recurrente con pspy:

Y vemos que el script se ejecuta cada cierto tiempo:

Editamos el script y añadimos un comando para que nos cambie permisos a la bash:

Lanzamos una bash con privilegios y vemos que se han cambiado los permisos a la bash: