Resolución del CTF CRYPTOLABERITH
💢Plataforma:. TheHackersLabs 💢
❌Nombre: CRYPTOLABYRINTH
📈Nivel: Principiante
💻OS: Linux
🙋🏽♂️Creador: @beafn28
https://thehackerslabs.com/cryptolabyrinth/
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.
Vemos que nos en la parte web nos encontramos con un apache por defecto.

Pero viendo el código fuente obtenemos lo que parece ser una credencial sin terminar.

Como no tenemos la credenciales terminada fuzzearemos para ver que nos encontramos dándonos como resultado el directorio hidden repleto de hashes.

Nos descargaremos todo lo que hay en ese directorio.


Y en una de los archivos encontramos lo que parece ser una clave.

Con la información obtenido descifrásemos el archivo alice_aes.enc utilizando AES-256-CBC con la clave supercomplexkey!
,y guarda el resultado en el archivo alice_password.txt
. La opción de iteración asegura que el proceso de derivación de la clave sea más seguro al hacerlo más difícil de atacar por fuerza bruta.

Nos aseguramos de tener todos los hashes de las contraseñas de Bob en un solo archivo. Combinamos los hashes en un único archivo de texto usando el siguiente comando:

Utilizamos John the Ripper para intentar crackear las contraseñas. Pero no nos acaba todos.

Recordemos que teníamos una clave sin acabar, por lo que crearemos un script que nos complete esos tres caracteres con caracteres alfanuméricos en mayúscula y minúscula.
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Uso: $0 <palabra>"
exit 1
fi
palabra="$1"
palabra_sin_asteriscos="${palabra//\*/}"
caracteres=$(echo {A..Z} {a..z} {0..9})
archivo_salida="combinaciones.txt"
> "$archivo_salida" # Vaciar el archivo si ya existe
for c1 in $caracteres; do
for c2 in $caracteres; do
# Crear la combinación
combinacion="${palabra_sin_asteriscos}${c1}${c2}"
# Escribir en el archivo
echo "$combinacion" >> "$archivo_salida"
done
done
echo "Combinaciones generadas y guardadas en $archivo_salida"
Consiguiéndolos un diccionario.


En este caso usando nuevamente john tenemos la ultima clave.

Haciendo fuerza bruta con el usuario Bob podemos acceder por ssh.

Lo primero que vemos es que a nivel sudoers podemos ejecutar env como Alice sin proporcionar contraseña.

consiguiendo ser Alice.

Y vemos nuevamente otra contraseña la cual vemos nuevamente que nos faltan dos caracteres.

Así que creeremos otro script para cambiar los asteriscos por dos caracteres alfanuméricos en mayúscula y minúscula.
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Uso: $0 <palabra>"
exit 1
fi
palabra="$1"
palabra_sin_asteriscos="${palabra//\*/}"
caracteres=$(echo {A..Z} {a..z} {0..9})
archivo_salida="combinaciones.txt"
> "$archivo_salida" # Vaciar el archivo si ya existe
# Generar todas las combinaciones de 2 caracteres
for c1 in $caracteres; do
for c2 in $caracteres; do
# Crear la combinación
combinacion="${palabra_sin_asteriscos:0:4}${c1}${palabra_sin_asteriscos:4:5}${c2}"
# Escribir en el archivo
echo "$combinacion" >> "$archivo_salida"
done
done
echo "Combinaciones generadas y guardadas en $archivo_salida"
De esta manera lo ejecutamos obteniendo otro diccionario.

Y al no tener mas usuarios haremos fuerza bruta a root consiguiente entrar.
