# Loly

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

## Enumeración

### Puertos abiertos

Comenzamos enumerando que servicios tiene abiertos la máquina Loly. Primero, un escaneo rápido de estos servicios.

```
nmap -p- --open --min-rate 1000 -Pn -n -vvv 192.168.239.121
```

<figure><img src="/files/2s25CLVQNHkuhgK7D7lp" alt=""><figcaption></figcaption></figure>

Solo está abierto el puerto 80 (HTTP). El siguiente paso, será el escaneo profundo de este servicio.

```
nmap -p80 -Pn -n -sVC -vvv 192.168.239.121
```

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

Servicios abiertos:

* Puerto 80 -> HTTP -> nginx 1.10.3

### Enumeración Web

El CTF Loly está ejecutando un servidor Web en el puerto 80. Vamos a enumerar su contenido.

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

Vemos una página por defecto de un servidor nginx. Vamos a continuar con una enumeración de directorios y archivos.

```
dirsearch -u http://192.168.239.121 -i200,301 -e txt,html,php
dirsearch -u http://192.168.239.121/wordpress/ -i200,301 -e txt,html,php
```

<figure><img src="/files/93HyPjKJqEn67kjZuhEQ" alt=""><figcaption></figcaption></figure>

Parece que estamos ante un sitio Web que ejecuta un CMS Wordpress. Vamos a acceder a /wordpress.

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

Vemos que los accesos direccionan al dominio "loly.lc", así que vamos a añadirlo al archivo "/etc/hosts".

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

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

Estamos evaluando un CMS WordPress, vamos a tratar de enumerar más información con la herramienta wpscan.

```
wpscan --url http://loly.lc/wordpress 
wpscan --url http://loly.lc/wordpress -U loly -P /home/elhackeretico/rockyou.txt
```

Encontramos unas credenciales para iniciar sesión en el panel de administrador de WordPress.

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

## Explotación

### Acceso al sistema

Vamos a probar las credenciales encontradas para iniciar sesión en WP.

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

Vamos a enumerar posibles vectores vulnerables que nos permitan acceder al servidor. Durante la enumeración hemos encontrado un plugin "llamativo" llamado "AdRotate". Veamos que podemos hacer.&#x20;

<figure><img src="/files/2aoT2eM4PQNHKAuEnglU" alt=""><figcaption></figcaption></figure>

En "Manage Media" encontramos una utilidad para cargar archivos. Hay que tener en cuenta que están limitados los archivos que se pueden cargar. Vamos a tratar de cargar una reverse shell pero comprimida como archivo .zip.

Configuramos la reverse shell.&#x20;

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

Ahora la comprimimos y cargamos.&#x20;

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

Vamos a la URL: <http://loly.lc/wordpress/wp-content/banners/php-reverse-shell.php> para ejecutar el archivo cargado.

Levantamos un oyente nc en el puerto 1337.&#x20;

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

Y ya tendriamos acceso al sistema.&#x20;

Buscamos la flag local.txt

```
find / -name local.txt 2>/dev/null
```

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

## Pivotando de "www-data" a "loly"

Estamos tratando de vulnerar un sitio Web que ejecuta un CMS WordPress. Para su funcionamiento, requiere de una serie de archivos donde podemos encontrar información muy interesante. Estos archivos suelen encontrarse en /var/www/html/wordpress.

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

Dentro de un archivo wp-config.php encontramos una posible contraseña.

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

La posible contraseña es "lolyisabeautifulgirl". ¿Podría ser la contraseña del usuario "loly"? ¿La puede estar reutilizando? Vamos a comprobarlo.&#x20;

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

## Elevación de privilegios

Vamos a comenzar enumerando que puede ejecutar este usuario como "root" sin contraseñas.

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

Este usuario no puede ejecutar comandos como "sudo"

Vamos a continuar enumerando los archivos con permisos SUID.

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

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

Pero no hay ninguno que ejecutable interesante que nos permita elevar privilegios.

Otra cosa que podemos hacer es enumerar los servicios que se están ejecutando de forma interna.&#x20;

```
netstat -tuln
```

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

Se está ejecutando de forma interna un servicio MySQL del cual tenemos las credenciales. Vamos a enuemerar sus usuarios.&#x20;

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

Nada interesante. Ya conocemos las credenciales de ese usuario.&#x20;

Vamos a enumerar información sobre kernel y sistema operativo.

```
uname -a
```

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

Vamos a buscar si existen vulnerabilidades para esa versión.&#x20;

```
searchsploit ubuntu 4.4.0
```

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

Encontramos un posible exploit interesante. Vamos a descargarlo y compilarlo, para posteriormente enviarlo a la máquina víctima haciendo uso de un servidor http Python.

```
search -m 45010.c
python3 -m http.server 80
```

Enviamos el exploit a la máquina víctima, compilamos y damos permisos de ejecución

```
gcc 45010.c -o exploit (compilar)
chmod +x exploit (dar permisos de ejecución)
./exploit (ejecución)
```

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

* Si a alguien le devuelve al compilar, un error relacionado con cc1, también esta la forma  de solucionarlo.&#x20;

Ya estaría la máquina resuelta.

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


---

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