# Blogger

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

### Enumeración

#### Enumeración de puertos abiertos

Comenzamos realizando un escaneo rápido de los servicios abiertos.&#x20;

```
nmap -p- --open --min-rate 5000 -Pn -n -vvv 192.168.85.217
```

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

Puertos 22 y 80 abiertos. Vamos a escanear de manera profunda estos dos servicios.&#x20;

```
nmap -p22,80 -sVC -vvv 192.168.85.217
```

<figure><img src="/files/3cWwoRK8bflSspQakcKA" alt=""><figcaption></figcaption></figure>

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

#### Enumeración Web&#x20;

Existe un puerto 80 abierto. Vamos a ver el contenido en el navegador.&#x20;

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

Enumeramos directorios con dirsearch.&#x20;

```
dirsearch -u "http://192.168.85.217/" -i200,301
```

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

Solo encontramos un dato interesante. Parece un sitio WordPress.

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

Sabiendo que estamos antes un WordPress, vamos a utilizar wpscan para realizar una enumeración de este CMS.&#x20;

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

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

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

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

Existe una vulnerabilidad de carga de archivos no autenticada en un plugin.&#x20;

Para acceder a las entradas del blog, deberemos registrar el dominio "blogger.thm" en nuestro archivo /etc/hosts para poder acceder a estas entradas.

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

### Explotación

Si echamos un vistazo a una publicación del blog, hay una sección de comentarios que permite a los usuarios cargar imágenes.&#x20;

<figure><img src="/files/3juOHSakPhn7CilLmyA9" alt=""><figcaption></figcaption></figure>

Trataremos de subir una reverse shell aprovechando la carga de archivos. Primero, modificaremos la IP local y el puerto de escucha.&#x20;

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

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

Pero no funcionó. Debemos probar técnicas de omisión de filtros. Vamos a tratar de modificar los encabezados del archivo. Si una función acepta carga de imágenes, aceptará carga de archivos GIFs. Agregaremos GIF89a; en la primera línea de la shell para engañar al servidor.&#x20;

<figure><img src="/files/3UGkX36E5Bm0xF6JInjt" alt=""><figcaption></figcaption></figure>

Volvemos a cargar el archivo modificado. Al mismo tiempo debemos poner un oyente a la escucha en el puerto que hayamos seleccionado para la shell. En nuestro caso, 1234.&#x20;

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

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

Ya tenemos acceso a la máquina víctima con pero no somos un usuario del sistema. Vamos a actualizar la shell recibida a una shell interactiva.&#x20;

```
python3 -c 'import pty;pty.spawn("/bin/bash")'
```

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

En el directorio /home, encontramos a tres usuarios: james, ubuntu y vagrant. Después de enumerar cada uno de los directorios, encontramos la flag local.txt dentro del directorio del usuario "james".&#x20;

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

### Elevación de privilegios

Volviendo a la lista de usuarios, recordamos que existía un usuario "vagrant". Si password por defecto del usuario "vagrant" si no es cambiada, también es "vagrant". Vamos a comprobarlo.&#x20;

<figure><img src="/files/9ooyZ0iWhs9Kv6E91aLF" alt=""><figcaption></figcaption></figure>

¡Bingo! Vamos a ver a continuación, que comandos puede ejecutar como root.&#x20;

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

"vagrant" puede ejecutar todos los comandos, por lo que vamos a elevar a usuario "root".&#x20;

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

A continuación, buscamos la flag proof.txt.

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

Y ya estaría acabada la máquina.&#x20;

{% embed url="<https://www.youtube.com/watch?v=_rSWa0l61DY>" %}
Vídeo de la resolución de Blogger
{% endembed %}


---

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