Máquina Summer Vibes de la plataforma DockerLabs creada por El pingüino de Mario de nivel Difícil.
Reconocimiento
En primer lugar una vez que tenemos la máquina desplegada y activa es comprobar ante que sistema operativo nos enfrentamos y para ello uso la herramienta WhichSystem.py.
Como podemos ver la herramienta nos indica que estamos ante una máquina Linux ya que su ttl es de 64, en caso de ser una máquina Windows sería de 128.
Tras averiguar el S.O al que nos enfrentamos ahora toca comenzar con la enumeración, en concreto con el reconocimiento de puertos abiertos y servicios en la máquina víctima.
Para realizar el reconocimiento de puertos usaré la herramienta nmap.
nmap -p- -Pn -n --min-rate 5000 --open 172.17.0.2
Tenemos el puerto 22 (ssh) y el puerto 80 (http) abierto, pero voy a lanzar un escaneo más avanzado para averiguar algo más de información sobre ellos.
sudo nmap -p80,22 -sSCV -n 172.17.0.2
Aparentemente no hay nada relevante, solo un servicio OpenSSH 8.9p1 que no parece estar desactualizado y un servidor Apache httpd 2.4.52.
Por lo que lo primero que haré es conectarme desde el navegador y ver que tenemos a simple vista, así como revisar el código fuente.
A simple vista no hay nada... por lo que reviso el código fuente... y encuentro algo importante.
<!-- cms made simple is installed here - Access to it - cmsms -->
Parece que detrás hay un cms ubicado en la ruta /cmsms
.
Antes de nada fuzzeo rutas para ver que más podemos encontrar.
El fuzzeo lo realizaré con la herramienta wfuzz haciendo uso del típico wordlist de dirbuster.
Tras realizar el fuzzeo encontramos las siguientes rutas:
Parece que tenemos un panel de login ubicado en /admin
...
Pero no disponemos de credenciales, y las credenciales por defecto no funcionan...
Si nos fijamos bien en la página principal podemos obtener la versión del CMS.
This site is powered by CMS Made Simple version 2.2.19
Por lo que buscando un poco en internet encontramos una vulnerabilidad RCE, pero necesitamos estar autenticados, por lo que la única opción es intentar hacer un ataque de fuerza bruta al panel de login del CMS.
Explotación
Ataque Fuerza Bruta Login CMS - Burpsuite
Para cambiar un poco voy a realizar el ataque de fuerza bruta a través de Burpsuite usando el Intruder.
Lo haremos paso a paso:
- Interceptamos la petición del login en nuestro proxy de Burpsuite y la enviamos al intruder.
Recordar que como usuario estaremos usando admin.
- Nos dirigimos al apartado Payloads y añadimos el wordlist que usaremos para realizar el ataque y lanzamos el ataque.
- Una vez ejecutado el ataque debemos filtrar por el campo "Response received" y veremos que la contraseña es chocolate.
Ahora ya disponemos de credenciales para acceder al CMS y podemos realizar la explotación del RCE.
Remote Command Execution
Si seguimos los pasos que se nos indicaban en el recurso veremos que debemos dirigirnos a Extensions y User Define Tags.
Una vez ahí debemos editar el contenido de custom_copyright añadiendo un payload en php que nos devuelva una conexión inversa a nuestra máquina.
Guardamos el archivo, entramos de nuevo a custom_copyright y hacemos click en run.
Ya tenemos acceso a la máquina, por lo que ahora toca migrar al usuario root, ya que no hay otro usuario al que migrar antes.
Escalada de Privilegios
Lo primero que suelo hacer es lanzar sudo -l
, pero en este caso no existe el comando sudo.
Lo siguiente que reviso es el archivo de configuración del cms, ya que en ocasiones se puede encontrar algún tipo de hash o de información que pueda ayudarme.
Pero tampoco hay nada importante... asique se me ocurre probar la contraseña que obtuvimos tras el ataque de fuerza bruta para acceder al CMS por si se estuviera reutilizando, lo cual es una muy mala práctica.
Y efectivamente, se estaba reutilizando la contraseña.
Recordar, nunca reutilicéis las contraseñas :)