# Can You Hack Me?

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FViNsgIhkFIQlxnQRBMUC%2Fcanyouhackme.png?alt=media&#x26;token=c9a11842-6dff-4bd9-98ab-abbc9b3f8b14" alt=""><figcaption></figcaption></figure>

Buenas hacker, bienvenido a un nuevo post!

En esta ocasión, vamos a estar resolviendo la máquina [Can You Hack Me?](https://thehackerslabs.com/canyouhackme/) de la plataforma [The Hackers Labs](https://thehackerslabs.com/).

## Reconocimiento <a href="#reconocimiento" id="reconocimiento"></a>

Comenzamos lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FLOO1bFclCVEa5fV8u7T8%2FPasted%20image%2020240908154926.png?alt=media&#x26;token=c81fd38a-1b63-48fd-837f-17075ef1a102" alt=""><figcaption></figcaption></figure>

Vemos que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Linux basandonos en el TTL (Time To Live) 64.

## Enumeración inicial

Realizamos un escaneo con `nmap` para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.

```bash
nmap -sS -p- --open --min-rate 5000 -Pn -n 192.168.1.18 -oG open_ports -vvv
```

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2Fg2ATbvA5RR54GfTjWYGy%2FPasted%20image%2020240908155133.png?alt=media&#x26;token=aa16e635-d8ef-421e-b52b-91141e56a982" alt=""><figcaption></figcaption></figure>

Lanzamos una serie de script básicos de enumeración propios de `nmap`, para conocer la versión y servicio que esta corriendo bajo los puertos.

```bash
nmap -sCV -p 192.168.1.18 -oN services_scan -vvv
```

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FwOoq2XzMo2UniAUlGIZK%2FPasted%20image%2020240908155205.png?alt=media&#x26;token=84f9ead9-0cec-4692-a72c-e691cc8b5db5" alt=""><figcaption></figcaption></figure>

## Explotación <a href="#enumeracion-de-servicios" id="enumeracion-de-servicios"></a>

Agregamos el dominio `canyouhackme.thl` a nuestro archivo hosts.

```
echo '192.168.1.18 canyouhackme.thl' >> /etc/hosts
```

Antes de visualizar el sitio desde el navegador, hacemos un reconocimiento con la herramienta whatweb para conocer que tencnologías esta utilizando el sitio web.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FHxxx1Q4aOi8foulWxnaw%2FPasted%20image%2020240908155330.png?alt=media&#x26;token=7ebea86d-dc89-4929-85d8-4a3c0ea1e96d" alt=""><figcaption></figcaption></figure>

Vemos que esta corriendo un sistema operativo Ubuntu y el servidor web Apache en su versión 2.4.58.

Si accemos desde nuestro navegador al sitio web, nos encontramos con lo siguiente:

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FVTCU3DR7tbmz4JEAw1B6%2FPasted%20image%2020240908155345.png?alt=media&#x26;token=b9221024-eedc-42fb-ade2-fb21a7513503" alt=""><figcaption></figcaption></figure>

Mirando el código fuente del sitio web, nos encontramos un comentario en el código Javascript que hace mención a un posible nombre de usuario `juan`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FR1rIpgnBWXEy78ZkZy4t%2FPasted%20image%2020240908155552.png?alt=media&#x26;token=88343caa-90c6-498a-89f2-406ab0f4085f" alt=""><figcaption></figcaption></figure>

Teniendo un posible nombre de usuario y conociendo en base a nuestro escaneo que el puerto 22 (SSH) esta abierto, podemos intentar realizar un ataque de fuerza bruta utilizando la herramienta hydra.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FAZwNqtNYBaD7pqHNlFIu%2FPasted%20image%2020240908161757.png?alt=media&#x26;token=c2278e11-2bf0-4054-8916-0ec9a6b67f39" alt=""><figcaption></figcaption></figure>

Genial, tenemos las credenciales del usuario `juan`.

Nos conectamos por ssh y obtenemos la flag.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2F7lLkNmlYx75KKp3e7Vtv%2FPasted%20image%2020240908161853.png?alt=media&#x26;token=17462e4d-62dd-461e-92a9-c0f3e8c34166" alt=""><figcaption></figcaption></figure>

## Escalación de privilegios <a href="#escalacion-de-privilegios" id="escalacion-de-privilegios"></a>

Si realizamos una enumeración básica del sistema, encontramos que el usuario pertenece al grupo docker. Haciendo una busqueda rápida en [GTFOBins](https://gtfobins.github.io/gtfobins/docker/) encontramos que existe una forma de escalar nuestros privilegios.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FSzIdX0daP1cj6hBCUed6%2FPasted%20image%2020240908161925.png?alt=media&#x26;token=35ec49d6-7607-4a76-bfd5-fd4ae68751b6" alt=""><figcaption></figcaption></figure>

```
docker run -v /:/mnt --rm -it alpine chroot /mnt bash
```

* `docker run`: Lanza un nuevo contenedor basado en una imagen de Docker.
* `-v /:/mnt`: Monta el sistema de archivos raíz del host (`/`) dentro del contenedor en el directorio `/mnt`. Esto permite al contenedor acceder al sistema de archivos del host.
* `--rm`: Elimina automáticamente el contenedor cuando finaliza su ejecución, limpiando los recursos usados.
* `-it`: Ejecuta el contenedor de manera interactiva (`-i` mantiene el flujo de entrada abierto, y `-t` asigna una pseudo-terminal).
* `alpine`: Usa la imagen ligera de Alpine Linux para crear el contenedor.
* `chroot /mnt`: Cambia la raíz del sistema de archivos dentro del contenedor al directorio `/mnt`, que está montado en el sistema de archivos del host.
* `bash`: Inicia el shell `bash` dentro del nuevo entorno del contenedor.

En pocas palabras, este comando monta el sistema de archivos del host dentro de un contenedor de Alpine y cambia el entorno raíz del contenedor a ese sistema de archivos, permitiendo ejecutar el shell `bash` con acceso al host.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FSl662HPqopFZceg6nFwq%2FPasted%20image%2020240908161944.png?alt=media&#x26;token=fc68b7bf-f6ce-4665-84c6-74880e59ac0a" alt=""><figcaption></figcaption></figure>

Vemos que al conectarnos al contenedor ya nos otorga la flag de root.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FX5g8fN1ZLcbyKhkFjo4k%2FPasted%20image%2020240908170146.png?alt=media&#x26;token=038d39ef-635e-4cd4-8068-802de1b035e1" alt=""><figcaption></figcaption></figure>

Pero aún podemos ganar acceso como root al sistema principal. Para ello, agregamos nuestra clave publica ssh de nuestro Kali a el archivo `authorized_keys`.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FbzEp584a8j6ZPi2C3wNJ%2FPasted%20image%2020240908163017.png?alt=media&#x26;token=6aa068d7-f2cf-49e1-b71f-18979e309c0d" alt=""><figcaption></figcaption></figure>

Accedemos por ssh al sistema principal.

<figure><img src="https://971679690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSE6WyLrlovog90Rtcp7K%2Fuploads%2FVfh3tiPgpGt40POmKidl%2FPasted%20image%2020240908162959.png?alt=media&#x26;token=f0b9d12c-a374-4bc4-8ad1-74d8468ce8b7" alt=""><figcaption></figcaption></figure>

De esta forma, concluimos la resolución de la máquina Can You Hack Me.

Espero que los conceptos hayan quedado claros. Como siempre, en caso de tener alguna duda te invito a realizar nuevamente la máquina para afianzar tus conocimientos.

¡Gracias por leer!

Happy Hacking!
