# Library

### 🔍 **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/6MVmyvYkucmOuo3kNgCN" 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/bYg3xCqB9jc1yAKiIbzv" 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/D6UfgqWBmZ37zqMobW2D" 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 la página por defecto Apache2.

<figure><img src="/files/0G8irHTU0XW2Oh4EZwJz" alt=""><figcaption></figcaption></figure>

De primeras, no se nos muestra nada, por lo que revisamos el código fuente por si hay alguna información oculta relevante pero no vemos nada.

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

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/WfzRiedfc1VdDlnXMC7X" alt=""><figcaption></figcaption></figure>

Hemos identificado un archivo `index.php` en el sistema. Vamos a examinar su contenido para obtener más información.

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

Al revisar el archivo `index.php`, encontramos una cadena que parece ser una posible contraseña. Dado que el puerto **22** (SSH) está abierto, y no hemos encontrado otros elementos de interés, procederemos a realizar un ataque de fuerza bruta para intentar encontrar un usuario que esté utilizando esta contraseña para acceder por **SSH**.

### 🚀 **EXPLOTACIÓN**

Con la información obtenida anteriormente, realizamos el comando:

```bash
hydra -L /opt/SecLists/Usernames/xato-net-10-million-usernames.txt -p JIFGHDS87GYDFIGD ssh://172.17.0.2 -t 64
```

que utiliza la herramienta **Hydra** para realizar un ataque de fuerza bruta contra el servicio **SSH** de una máquina con la IP **172.17.0.2** para obtener el usuario con esa contraseña.

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

Al realizar el ataque de fuerza bruta, hemos descubierto el **usuario** de esa contraseña. Sabiendo esto, nos conectamos a través de **SSH** al usuario con el comando:

```bash
ssh carlos@172.17.0.2
```

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

Carlos tiene permisos para ejecutar un script con privilegios de **root** utilizando el comando `sudo`. Vamos a investigar cómo funciona este script con el objetivo de identificar una posible manera de escalar nuestros privilegios en el sistema.

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

Contamos con un script que se encarga de copiar archivos a una ruta específica. Lo interesante es que este script depende de una librería particular. Dado que la máquina se llama *Library*, podemos inferir que es posible llevar a cabo un ataque de ***Library Hijacking***. Esto implica que, si logramos crear una librería maliciosa, podríamos hacer que el script ejecute nuestras órdenes al intentar acceder a ella.

Además, como tenemos la capacidad de ejecutar el script con privilegios de **root**, podemos utilizar esta técnica para realizar cualquier cambio en el sistema. En este caso, emplearemos el ataque para otorgar permisos **SUID** al binario `bash`, lo que nos permitirá escalar privilegios de manera efectiva.

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

Hemos identificado que tenemos permisos de escritura en el directorio `/opt`. Aprovecharemos esta situación creando una librería maliciosa con el mismo nombre que la librería requerida por el script. Dentro de esta librería, incluiremos las instrucciones que deseamos ejecutar.

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

Con todo listo, simplemente necesitamos ejecutar el script con `sudo`. Cuando el script intente acceder a la librería, buscará primero en el directorio actual, lo que activará nuestra carga maliciosa.

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


---

# 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/library.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.
