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

# Move

### 🔍 **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/B9HzYuSnGZ3LNd5oQUS0" 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/zYTELETnJUJ2kENvcOIh" 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** y el **puerto 3000** 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,3000 -v 172.17.0.2
```

para obtener más información sobre ese puerto específicamente.

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

El puerto **80** y el **3000** podemos encontrar servicios web. Es curioso que en el 3000 nos aparece una redirección a un panel de **Login**. 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 la página por defecto **Apache2**.

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

Revisando el código fuente por si hay algo relevante tampoco hay información relevante pero no había nada.

Ahora buscaremos directorios con la herramienta **Gobuster** a través de:&#x20;

```bash
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,htm,php,txt,xml,js -u http://172.17.0.2
```

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

Encontramos un archivo que nos llama la atención que se llama `/maintenance.html` así que accederemos a él por si hay algo relevante.

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

Hemos encontrado un encabezado en **HTML** que revela la ruta de un archivo potencialmente interesante, aunque actualmente no tenemos acceso al sistema para explorarlo más a fondo. Guardaremos esta información para usarla en el futuro.

Dado que no encontramos nada más relevante en este momento, procederemos a realizar la enumeración del **puerto 3000** en la máquina objetivo.

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

Hemos encontrado un panel de inicio de sesión de **Grafana**. Lo más notable es que en la parte inferior del panel se muestra la **versión** específica del servicio. Investigaremos esta versión para determinar si existen vulnerabilidades conocidas que puedan facilitarnos el acceso inicial al sistema.

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

Hemos confirmado que la versión específica de **Grafana** que encontramos es vulnerable a un **exploit** que permite la lectura de archivos en el sistema. Procederemos a descargar este exploit en nuestra máquina atacante y comenzaremos el proceso de intrusión.

### 🚀 **EXPLOTACIÓN**

Con el **exploit** descargado y preparado en nuestra máquina atacante, procederemos a ejecutarlo para aprovechar la vulnerabilidad detectada en esta versión de **Grafana**.

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

Hemos logrado explotar la vulnerabilidad de manera exitosa, lo que nos permite leer cualquier archivo en el sistema que no requiera privilegios elevados. Por lo que leemos el archivo **/tmp/pass.txt**.

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

Teniendo en cuenta que el **puerto 22** está abierto y que hay un servicio **SSH** activo, procedemos a enumerar los usuarios presentes en el sistema, así como a inspeccionar el archivo mencionado en el **puerto 80**. Accederemos al usuario **freddy**.

<figure><img src="/files/e2WCBoHV0lWXF7r8paFq" 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/Q2BqRcC3eyNlAmj2cnDz" alt=""><figcaption></figcaption></figure>

Como podemos ver, el usuario tiene permisos para ejecutar un comando `sudo` asociado a un script sobre el cual tiene permisos de escritura. Esto nos permite realizar una escalada de privilegios modificando el script para que ejecute las acciones que deseemos. Al ser ejecutado como **root** mediante `sudo`, el script no enfrentará restricciones de privilegios. Con esto en mente, podríamos alterar el script para que inicie una **shell** interactiva con privilegios de **root**. En mi caso, opté por darle permisos **SUID** al binario de **bash**, lo que nos permitirá obtener una **shell** como **root** en cualquier momento, asegurando una alta persistencia en el sistema.

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

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

Hemos logrado modificar los permisos del binario `bash`. Ahora, solo queda utilizar el comando `bash -p` para iniciar una **shell** con privilegios de **root**.

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