> 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

✍️ Autor: El Pingüino de Mario🔍 Dificultad: Fácil  📅 Fecha de creación: 30/06/2024

### 🔍 **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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FJgD0rDN4Y4khYTAiw0pu%2Fimage.png?alt=media&amp;token=2d557418-8823-4cba-911a-e0874c68efd0" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F1r5e47tZmxwc8M6WdpXz%2Fimage.png?alt=media&amp;token=2732448c-6e11-4d60-8118-0cf73dad78e7" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FhLM2yF4cV3MAridxGK2z%2Fimage.png?alt=media&amp;token=d2b689ba-e553-4800-b700-f2d77ba0f7a8" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fu8nfi52Ilv6oGBkOHsc5%2Fimage.png?alt=media&amp;token=d8025e4f-09da-4675-be87-0af96eb3c29b" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FiqBOxqNmnTehZi08fLY2%2Fimage.png?alt=media&amp;token=7bfcea7e-40cb-4ee3-8399-5cbcd747cbf5" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FryeZoz9M4IVVioNbUK9C%2Fimage.png?alt=media&amp;token=fc9033f1-9619-4158-86c5-f6d2144f7c8c" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FxA8WxDUKqBWjm7EzRs2D%2Fimage.png?alt=media&amp;token=5b08924b-4bce-4882-a469-75ad016e78ca" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FAvieZMCp1Dwfzq4dVa1U%2Fimage.png?alt=media&amp;token=4d136c76-92f5-4f99-bc67-dac0eb5ee278" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FkNwQxnFXQTKg94wsP2tl%2Fimage.png?alt=media&amp;token=2dc24e42-6838-4e46-aae1-7cf0df9cc2ad" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FDDMbFPgsQr50Zp66UyzN%2Fimage.png?alt=media&amp;token=3c17d894-27e1-45a6-b056-ddc9ba322f30" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FVanXAGcLUPS3uiKbVzLv%2Fimage.png?alt=media&amp;token=4271e3e0-2a48-4837-a8c3-1fc7cde7c5f9" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FLCkYLSB4sru8K19ec4Xr%2Fimage.png?alt=media&amp;token=56a74b16-f120-4a90-85dc-db704645b547" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FTbKlZr5gDE8k3iLFdgcZ%2Fimage.png?alt=media&amp;token=053aea2a-38ed-4d6d-a255-d6044702afea" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FuIrcSETwQQD3YjPIKX6b%2Fimage.png?alt=media&amp;token=85f7c1aa-091f-47ba-ae5b-475a3c262991" 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="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FQ42hCS63Cr13iFAKlsTJ%2Fimage.png?alt=media&amp;token=6465e357-9d52-4f25-861e-8f11c98e2970" alt=""><figcaption></figcaption></figure>
