Esta es una maquina de Clasificada como “intermedia” en VulnHub: VulnHub - Sunset Midnight. En esta maquina encontraremos una vulnerabilidad que explotaremos para poder ingresar al CMS el cual nos dara acceso a la maquina a través de un plugin.
1. Descubrimiento y Enumeración de la Red
Como primer paso debemos realizar el descubrimiento de la red para conocer los posibles host que utilizaremos en este momento

realizamos un escaneo de puertos con el siguiente comando:
sudo nmap -n -Pn -p- --open -sS -T 5 -O 192.168.56.107 -oX PuertosAbiertos.xml
sudo xsltproc PuertosAbiertos.xml -o puertosabiertos.html
y obtendremos un reporte fácil de leer en html:

Encontramos los puertos 22 (SSH), 80(HTTP) y 3306(mysql), por lo que procedemos a realizar una inspección rápida dentro del puerto 80.
El sitio tiene una redirección hacia el URL sunset-midnigth por lo que procederemos a agregarlo al archivo hosts del equipo para poder resolver el dominio de forma correcta:

sudo su
echo 192.168.56.107 sunset-midnight >> /etc/hosts
exit
Lo que nos permitirá abrir de forma correcta el sitio web alojado dentro del servidor victima:

para enumerar vulnerabilidades en la versión de wordpress utilizada utilizaremos la siguiente herramienta. WPSCAN utilizando el siguiente comando
wpscan --url http://sunset-midnight/ -e u -o datos_wordpress.txt --api-token xxxxxxxxxxxxxxxxxxxxxxxxxx -v
El cual nos generara un archivo de texto que podremos utilizar para hacer el reporte final, en este caso logramos validar que dentro de la aplicación de WordPress existe un usuario llamado admin.
2. Explotación y Análisis de Vulnerabilidades Web

El cual podemos intentar utilizar con un ataque de fuerza bruta con el siguiente comando:
wpscan --url http://sunset-midnight/ --passwords ../../OneDrive/Tools/rockyou.txt --usernames admin

Como podemos ver el ataque de fuerza bruta al password del usuario admin puede tardar varias horas, por lo que intentaremos mientras otro vector de ataque, en este caso intentaremos un bruteforce al puerto 3306 (mysql) con el usuario root.
hydra 192.168.56.107 -l root -P /home/milo/rockyou.txt -t 4 mysql

y encontramos un password que podemos usar para intentar explorar que información podemos obtener de esa base de datos.
mysql -h 192.168.56.107 -u root -p

Utilizaremos estos comandos dentro del sql para verificar si podemos explotar alguna base de datos o una tabla
show databases;
show tables;
select * from wp_users;
UPDATE wp_users SET user_pass = "e10adc3949ba59abbe56e057f20f883e" where ID=1;
select * from wp_users;



como podemos ver, existe la contraseña del usuario admin, generamos una clave nueva en md5 en cualquier pagina. como ejemplo podemos usar: md5hashgenerator.com
en mi caso generé un hash en md5 para el texto 123456

Ya con el hash generado podemos entonces editar el registro de pasword de la tabla para permitirnos ingresar al dashboard de Wordpress a travez de la pagina web.

3. Ganando Acceso Inicial al Servidor (Reverse Shell)

Usando las credenciales modificadas podemos ingresar directamente al panel de administración.

Existen varias técnicas para ganar acceso al servidor desde el panel de administración, en este caso trabajaremos 2, la primera y la mas fácil es modificar desde la interfaz de WordPress archivos PHP que podamos utilizar como pivote insertando código malicioso que nos permita acceder al servidor con una consola reversa. Debemos ingresar al la siguiente ruta en el menú de la izquierda:
Appearance > Theme Editor > 404 Template
Debido a una instalación defectuosa del WordPress al intentar modificar algún archivo PHP del tema no nos permite modificar archivos directamente desde el php

por lo que optaremos por ejecutar la segunda función, la cual es descargar un plugin desde la pagina oficial de WordPress (php-code-widget) que nos permite agregar código PHP y desde allí podremos insertar nuestro código malicioso para realizar la conexión reversa.
Ya que hemos descargado el plugin tendremos en la carpeta un archivo similar a este: php_code_widget.2.4.zip por lo que únicamente nos queda cargarlo dentro del sitio web, para esto iremos a la siguiente ruta dentro del menú que esta en el lateral izquierdo de la pagina de administración:
Plugins > Add New > Upload Plugin
cargamos el archivo .zip que acabamos de descargar y damos clic al botón Install Now

Activamos el plugin desde el botón azul, y luego nos dirigimos a la siguiente ruta dentro del menú que esta en el lateral izquierdo:
Appearance > Widgets

en esta pantalla debemos arrastrar el Widget PHP Code hacia la parte de Footer 1, mejor si es abajo del Widget existente

ahora procedemos a editar el widget con el código malicioso. únicamente copiando el contenido del script de PHP que podemos encontrar en el repositorio de Pentest Monkey y guardamos la configuración

Esto nos permitirá insertar la sección del footer de cada pagina el código de conexión. El cual podemos verificar al cargar la pagina obtenemos al final de todo este texto.

por lo que ahora únicamente nos resta colocar nuestra maquina de atacante en escucha para obtener la sesión de consola remota.

4. Escalada de Privilegios Local
Tal como hemos venido trabajando utilizaremos algunos scripts que pudieran ayudarnos a validar si tenemos algún vector conocido sobre el cual podamos trabajar un proceso de escalación de privilegios. Usaremos Linux Smart Enumeration, el cual lo podemos obtener desde el repositorio de https://github.com/diego-treitos/linux-smart-enumeration

encontramos que tenemos acceso a un binario que no es muy común llamado status, el cual cuando corremos vemos que corre internamente el comando service ssh status

Por lo que podemos hacer un ataque de suplantación de apps modificando el PATH del usuario. Para esto nos posicionaremos en la carpeta /tmp y a continuación crearemos un archivo llamado service el cual correrá una línea en bash que nos permitirá ejecutar una consola con privilegios de root. la forma mas simple de hacer esto es con el comando echo
echo "/bin/bash -p" > service
ahora debemos darle permisos de ejecución al archivo que acabamos de crear con
chmod +x service
agregamos una entrada al PATH para que coloque la carpeta donde esta el script malicioso que acabamos de crear.
export PATH=$(pwd):$PATH
Ya con esto únicamente nos queda correr nuevamente el script al cual el usuario tiene acceso, en este caso específicamente es /usr/bin/status y con esto tendremos acceso al root del equipo.


5. Conclusiones y Lecciones Aprendidas
Enumeraremos lo aprendido en este equipo.
- Aprendimos a solucionar problemas de re-direccionamiento por DNS
- Aprendimos a “utilizar” de forma basica la herramienta WPscan
- Aprendimos a hacer un ataque de brute-force a una base de datos
- Aprendimos a aprovechar acceso de editor en WordPress para ganar acceso al equipo
- Aprendimos a cargar plugins en WordPress
- Aprendimos a realizar un método de escalación de privilegios utilizando suplantación de binarios y modificación del PATH del usuario.