CTF ForbiddenHack Easy
URL Download CTF = https://drive.google.com/file/d/1FyUwl6_mT8zVZv3zRTTLMUWTg8TK-Pb8/view?usp=sharing
Instalación
Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzip forbiddenhack.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_run.sh forbiddenhack.tarInfo:
██████╗ ██╗ ██╗███╗ ██╗██████╗ ██████╗ ██╗
██╔══██╗██║ ██║████╗ ██║╚════██╗██╔══██╗██║
██████╔╝██║ █╗ ██║██╔██╗ ██║ █████╔╝██║ ██║██║
██╔═══╝ ██║███╗██║██║╚██╗██║ ╚═══██╗██║ ██║╚═╝
██║ ╚███╔███╔╝██║ ╚████║██████╔╝██████╔╝██╗
╚═╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═╝
==
@+:@ @##@
@++:-----+@ @@#+:----:+#
#-+-----:+:---------:
*::-----++-----::::#
::------+:--------:
#-+------+:-::-----#@
*::+=@@#++-------::@
@+= @++::+#@@@#*#
#-@
*+#++@
+-:::+-@
:-:+:::+
@+::*::::
*::++-::*
=:--:-:++ @-#
#*:---:--++@ @@
@::-:--++*
@::-:++#
*++*
:: Plataforma de máquinas vulnerables ::
:: Desarrollado por Pwn3d! y Dockerlabs - creado por @d1se0 ::
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ FLAG{Pwn3d!_is_awesome!} █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
[✔] bc ya está instalado.
[✔] Docker ya está instalado
[!] Limpiando previos contenedores e imágenes
[✔] Cargando la máquina virtual
[✔] Activando máquina virtual
[✔] Máquina activa. Dirección IP: 172.17.0.2
[!] Presiona Ctrl+C para limpiar y salirPor lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Veremos que hay un puerto 80 en el que aloja una pagina web, si entramos dentro de la misma veremos una pagina normal de apache2 pero con un toque diferente en esta parte de aqui:
Vemos que hay un dominio por lo que vamos añadirlo en nuestro archivo hosts de esta forma:
Lo guardamos y entraremos en dicho dominio a ver que nos encontramos.
Cuando entremos dentro veremos directamente un 403 Forbidden:

Vamos a probar a realizar un bypass simple del mismo a ver si nos funciona, vamos abrir BurpSuite y capturar la peticion quedando algo asi:
Ahora le tendremos que añadir debajo del Host: la palabra Referer: para que se piense el servidor que se esta realizando la peticion desde el mismo servidor y nos permita visualizar el contenido.
Vamos a enviar esta peticion el Repeater de BurpSuite haciendo Ctrl+R, una vez enviado le daremos a send y veremos que nos devuelve una respuesta de 200 OK por lo que ha funcionado:

Ahora vamos a realizar un poco de fuzzing poniendo en la cabecera de la peticion el Referer y con el recurso web llamado index.php que es el que hemos visto antes, como tiene .php vamos a comprobar si tuviera algun parametro vulnerable.
FFUF
Info:
Veremos que efectivamente hay un parametro llamado pages, vamos a comprobar que realmente esta leyendo el archivo passwd.
En la peticion de BurpSuite vamos a realizar lo siguiente:
Info:

Por lo que vemos esta funcionando, por lo que vamos a utilizar en este LFI unos wrappers paar poder ejecutar un RCE a ver si nos funciona.
Wrapper con LFI
URL_Script = https://github.com/synacktiv/php_filter_chains_oracle_exploit/blob/main/filters_chain_oracle_exploit.py
Si queremos por ejemplo crear un parametro llamado cmd que ejecute cualquier comando que le pongamos, seria de la siguiente forma...
Copiamos lo que empieza con php://... y lo pegaremos despues del = en el parametro pages=.
Info:

Vemos que esta funcionando, esta ejecutando codigo de forma remota en el servidor, vamos a realizar una reverse shell de esta forma:
Antes de enviarlo nos pondremos a la escucha:
Ahora si enviamos ese anterior comando y volvemos a donde tenemos la escucha veremos lo siguiente:
Vemos que ha funcionado, por lo que sanitizaremos la shell.
Sanitización de shell (TTY)
Escalate user bambi
Si listamos la /home del usuario bambi veremos una carpeta oculta llamada .secret que dentro contendra un archivo llamado interestingSecret.txt, si leemos dicho archivo veremos lo siguiente:
Vemos que son las credenciales de bambi pero la contraseña esta codificada en Base64, si la decodificamos veremos lo siguiente:
Info:
Ahora vamos a probarla con dicho usuario de esta forma:
Metemos como contraseña supersecretpassword123 y veremos que estaremos dentro, por lo que leeremos la flag del usuario.
user.txt
Escalate Privileges
Si listamos los archivos o binarios que root a creado de forma reciente veremos lo siguiente:
Info:
Vemos 2 archivos muy interesantes que son los siguiente:
Vamos a ver que hace el binario furb con strings.
Info:
Vemos esa linea muy interesante con un parametro -r ya que si ejecutamos el binario directamente vemos esto:
Info:
Pero si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario furb como el usuario root y tambien hemos visto antes que con el parametro -r faltaba el argumento de un archivo, vamos a probar lo siguiente:
Info:
Vemos que esta funcionando, pero antes hemos visto el archivo llamado furbRead.txt vamos a ver que contiene:
Info:
Vemos que nos esta dando una pista bastante interesante, puede ser que este mismo archivo este en la carpeta de root, vamos a probar lo siguiente:
Info:
Vemos que ha funcionado por lo que vamos a probar la contraseña con el usuario root a ver si funciona.
Metemos como contraseña StrongPasswordRootSuperSecret123 y veremos que seremos root, por lo que leeremos la flag de root.
root.txt
Last updated