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

# 🟩 ChocolateLovers

🧠Dificultad: Fácil | 🔓02/09/2025

## 🕵️ Reconocimiento

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2F89FNXStoBvcOZPREaqLA%2Fimage.png?alt=media&amp;token=c9333311-3f35-454c-b35d-045db7d021e8" alt=""><figcaption></figcaption></figure>

La máquina solo tiene el puerto 80 abierto con un servicio web. Si accedemos a él a través de un navegador, vemos la página por defecto de Apache. En los comentarios de la página se hace referencia a `nibbleblog`. Si accedemos al directorio `/nibbleblog`, vemos lo siguiente:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FvJ0o4oyMVCNw29AGpmmj%2Fimage.png?alt=media&amp;token=9382a584-9624-4363-b9c3-1f60878a1744" alt=""><figcaption></figcaption></figure>

Estamos en la página principal de Nibbleblog, una aplicación que permite crear y administrar blogs. En el post inicial nos dan un enlace a `/nibbleblog/admin.php`. Si accedemos a este sitio encontraremos un inicio de sesión al panel de administrador. Probando con las credenciales `admin:admin`, ganamos acceso al panel:

<div align="center" data-full-width="false"><figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FErsRUgmVa8MWqYDQlKqK%2Fimage.png?alt=media&amp;token=2dced134-689b-43db-b139-10ba7118f8b9" alt=""><figcaption></figcaption></figure></div>

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FeYlNwLXbD4L6lSOisTVJ%2Fimage.png?alt=media&amp;token=dae1ea15-2051-4611-b212-0cd552e5e3f0" alt=""><figcaption></figcaption></figure>

Si buscamos exploits para nibbleblog con `searchsploit`, vemos que hay uno para subir ficheros arbitrarios a través de `metasploit`:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FPE9DmCtZcG0dBPgHFND6%2Fimage.png?alt=media&amp;token=c90c41d2-0047-4ef1-817b-2cf15c2cf18a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fo9oDmlopFo46usVoz7SD%2Fimage.png?alt=media&amp;token=8a8e18ec-c0db-4eb7-8a75-b6cf597f1cdd" alt=""><figcaption></figcaption></figure>

## 🚪 Ganando acceso

Aunque el exploit es sencillo de llevar a cabo manualmente, uso metasploit para ganar una shell.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FMvE7cP9xqfIixNyVliPH%2Fimage.png?alt=media&amp;token=6ae2d77f-c841-4620-ae97-57688c784eee" alt=""><figcaption></figcaption></figure>

El exploit falló al principio, y es que para que funcione correctamente, debemos tener instalado el plugin `My image`. Para ello, nos vamos al panel de plugins y lo instalamos:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fiw0HCFEP6uGpbLLRuh0U%2Fimage.png?alt=media&amp;token=36a74d5c-f8bb-4d9f-9947-8ce723a18216" alt=""><figcaption></figcaption></figure>

Ahora si, ganamos una sesión con `meterpreter`:

<div align="left"><figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Flt46jE1Eeb5yGOmD42Y5%2Fimage.png?alt=media&amp;token=29868dd0-25af-461c-98ef-282530d41696" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FGcaNN38ZBP1mcQBkiok6%2Fimage.png?alt=media&amp;token=2dc628c1-a0a1-47fd-98e3-d080337377bf" alt=""><figcaption></figcaption></figure></div>

## 💥 Escalada de privilegios

<mark style="color:$warning;">Mejorar la shell desde meterpreter es bastante tedioso, por ello, recomiendo que ganéis acceso manualmente y no uséis metasploit.</mark>

Comprobamos los permisos que tenemos con `sudo`:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Fx3NzUelvm4tS0DStKdMj%2Fimage.png?alt=media&amp;token=b1cecbfe-df23-4b71-af91-8c4cb44bca4f" alt=""><figcaption></figcaption></figure>

Teniendo permisos para ejecutar php con `chocolate`, podemos ejecutar a través de la función `system()` el comando que queramos, por ejemplo, `/bin/bash`. De esta manera obtendremos una shell como el usuario `chocolate`:

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FKoltzvM7qwHQvH0VblEJ%2Fimage.png?alt=media&amp;token=6af9c876-0d79-4819-b32e-1316b4bbe78e" alt=""><figcaption></figcaption></figure>

Una vez obtenida la shell como usuario `chocolate`, listamos los procesos del sistema (`sudo -l` nos pide contraseña):

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FWEU5z8uhr2400F6zjzHm%2Fimage.png?alt=media&amp;token=67ab0f0e-5270-4231-a875-68534f43fbe3" alt=""><figcaption></figcaption></figure>

Existe un proceso de `root` que ejecuta el fichero `script.php` cada 0.5 segundos con `php`.

<figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2FnKSYLls62rOszlDxJ2vA%2Fimage.png?alt=media&amp;token=4b5d3aab-1bdb-47b3-8422-50b24eeff3ad" alt=""><figcaption></figcaption></figure>

El script no hace prácticamente nada. Vemos que tenemos permisos suficientes sobre el fichero, por lo que podemos cambiar el contenido de este para ponerle el bit suid a `/bin/bash`. Después, bastará con ejecutar `bash -p` para obtener una shell como `root`.

```bash
echo "<?php system('chmod +s /bin/bash'); ?>" > script.php
```

<div align="left"><figure><img src="https://3832202623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhaHYQaFsZAHOyVtSUS1x%2Fuploads%2Ftbvj8FhhVmzt3tmhiY58%2Fimage.png?alt=media&amp;token=d404b5f2-13e2-417e-958b-7b2d0c7cbf13" alt=""><figcaption></figcaption></figure></div>
