En este post voy a vulnerar la máquina Loly: 1 de Vulnhub. Es una máquina Linux, de nivel fácil para VulnHub y medio para Proving Grounds, basa en wordpress y CVE que es bastante fácil de resolver.
Enumeración
Comienzo averiguando la IP que ha tomado la máquina con netdiscover.
sudo netdiscover -i eth0

Ahora que ya tengo la IP en la que está alojada la máquina, escaneo los 65535 puertos del protocolo TCP, estableciendo un envío mínimo de 5000 paquetes por segundo.
nmap -p- --open -n --min-rate 5000 192.168.71.153

En la máquina hay un puerto abierto. Escaneo el puerto que he encontrado para ver la versión de los servicios que están corriendo en ellos y ejecuto una serie de scripts de enumeración básicos.
nmap -p80 -sC -sV 192.168.71.153

Accedo a la web y llego a una ventana de bienvenida de nginx.

Hago un fuzzing para buscar directorios ocultos y, rápidamente, encuentro uno llamado wordpress.
wfuzz -c -t 100 --hc 404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://192.168.71.153/FUZZ

Accedo a él y, abajo, me muestra un mensaje de que está aplicando virtual hosting en loly.lc.

Añado esta dirección al fichero /etc/hosts y entro en la web.

Dado que la web está utilizando wordpress, voy a utilizar wpscan para enumerar el CMS fácilmente. En primer lugar, busco usuarios y encuentro uno llamado loly.
wpscan --url http://loly.lc/wordpress --enumerate u

wpscan me permite aplicar fuerza bruta sobre los usuarios para buscar credenciales, así que voy a utilizar el diccionario rockyou.txt para intentar encontrar la contraseña de este usuario.
wpscan --url http://loly.lc/wordpress -U loly -P /usr/share/wordlists/rockyou.txt

Encuentro las credenciales loly:fernando. Me dirijo a http://loly.lc/wordpress/wp-admin y me autentico con las nuevas credenciales.


Explotación
El usuario está un poco limitado pero rápidamente encuentro instalado un plugin llamado AdRotate que en la sección Manage Media me permite subir ficheros.

Utilizo el binario para obtener una shell reversa por php que viene por defecto en kali (que es el mismo de pentestmonkey) y genero un fichero comprimido con él llamado shell.php.zip.
zip rshell.php.zip rshell.php
Lo subo a través del plugin.


Pongo un netcat a la escucha y ejecuto el binario dirijiendome a la ruta http://loly.lc/wordpress/wp-content/banners/rshell.php.

Escalada de privilegios
En primer lugar, para que la resolución sea válida para OSCP, es necesario conseguir una shell en tty.
tty
Como ya he dicho anteriormente en otros post, para que la máquina esté resuelta de modo OSCP Friendly, es necesario conseguir una shell tty. Con los siguientes comandos consigo convertir la shell en shell tty en fácilmente.
script /dev/null -c bash ^Z
CTRL + Z
Ahora sin cambiar de consola.
stty raw -echo; fg reset
Y con esto vuelvo a la shell reversa. Añado los siguientes comandos.
xterm export TERM=xterm export SHELL=bash
Y ya he conseguido una consola tty.
Para finalizar (esto es opcional) solo me faltaría adaptar las dimensiones de la shell de la consola a las de mi ventana de shell. En una shell de mi máquina atacante compruebo las dimensiones de la ventana.
stty size
Y las modifico en la shell reversa.
stty rows [X] columns [Y]
Escalada de privilegios
Ahora que ya tengo una consola en tty, voy a enumerar los usuarios del sistema.
cat /etc/passwd | grep 'sh$'

Como puedo ver en la imagen anterior, solamente existen los usuarios root y loly.
Enumero rápidamente todo el sistema utilizando Linux Smart Enumeration y descubro que se trata de una máquina Ubuntu 16.04.01 con el Kernel de Linux versión 4.4.0-31.

Busco en exploit-db y encuentro este exploit que explota una vulnerabilidad registrada como CVE-2017-16995 que me permite escalar privilegios para estas versiones de Linux y Ubuntu.
Simplemente compilo el exploit siguiendo las instrucciones.
gcc 45010.c -o pwn
Lo subo a la máquina víctima, le doy permisos de ejecución, lo ejecuto y ya me convierto en root.
chmod +x pwn ./pwn

La flag la encuentro en la ruta /root/root.txt.

