# Icecream

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

## Fase de reconocimiento

Hacemos un escaneo de nmap y descubrimos los siguientes puertos abiertos:

`nmap -p- --min-rate 10000 -sSVC -Pn 192.168.8.105 -oG allPorts -vvv`

* 22 (SSH)
* 80 (HTTP) Hago fuzzing y no encuentro nada
* 139 (SAMBA)
* 445 (SAMBA)&#x20;
* 9000 (HTTP) Parece ser un rabbithole? Hice fuzzing y solo encuentro "/config" "/certificates" y "/status"

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

Con enum4linux encuentro en el smb "/icecream", y me llama la atención:

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

## Fase de intrusión

Inicio sesión y subo una revershell de pentesting monkey, me pongo a la escucha con netcat y abro el archivo, consiguiendo RCE. Lo primero antes de todo hay que hacer la[Depuración de tty](/burple/cheats/depuracion-de-tty.md):

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

Me muevo un poco por el servidor pero no encuentro nada, así que me paso pspy64 y linpeas abriéndome un servidor con python desde mi maquina atacante y haciendo un wget para descargarlo. Linpeas no me da nada util, pero en cambio en pspy veo una cosa que me llama la atención porque hace referencia al puerto :9000, el cual pensaba que no servía para nada, pero al parecer si, así que voy a investigar un poco sobre que es unitd:

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

Unit al parecer es una API la cual se puede controlar mediante HTTP, y curiosamente "/config" "/control" y "/status" son los directorios que encontré previamente con gobuster (No metí foto pensando que era un rabbithole) [Página](https://unit.nginx.org/controlapi/):

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

Estos son los archivos que hay en el puerto 9000:

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

Bien, la idea aquí seria subir otra revershell pero está vez mediante la API de unit, ya que si os fijais bien, en el pspy se puede apreciar que se ejecuta como ice:

La estructura es de la siguiente manera, así que de esa manera vamos a crear el .json mandando solicitudes curl con PUT

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

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

Añadimos en "/tmp" la revershell y hacemos un curl y nos llega a nuestro netcat:

<figure><img src="/files/6TMvAOENB6dvYdrJdkzV" alt=""><figcaption></figcaption></figure>

Como siempre, lo primero hay que hacer la [Depuración de tty](/burple/cheats/depuracion-de-tty.md)

## Escalada de privilegios

Revisamos los SUID y encontramos que todos los usuarios pueden ejecutar ums2net:

<figure><img src="/files/5mG21Elq4K9q30WB7MRB" alt=""><figcaption></figcaption></figure>

\*Dato curioso, me equivoque con un comando y jodi el /etc/sudoers de la maquina y la tuve que volver a importar 🤦‍♂️\*

Hacemos un "echo "5555 of=/etc/sudoers" > config" de está manera podremos hacer una solicitud al puerto 5555 y editar el /etc/sudoers

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

Inicializamos el comando y desde nuestra máquina atacante ahora tendremos que hacer una solicitud para editar el /etc/sudoers, así conseguiremos editarlo y hacer que cualquier usuario pueda ser root sin proporcionar contraseñas

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

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

Parece que ha funcionado finalmente...

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

Y conseguimos ser root 😎👌

## Conclusión

En esta máquina, logramos la intrusión y escalada de privilegios aprovechando varias debilidades:

* Obtuvimos acceso inicial cargando una reverse shell en un recurso compartido SMB mal configurado, lo que permitió ejecutar comandos en el sistema.
* Descubrimos actividad interesante en el servicio Unit expuesto en el puerto 9000 mediante **pspy64**, lo que condujo a la explotación de su API HTTP para cargar y ejecutar una segunda reverse shell.
* El binario SUID `ums2net` se utilizó para editar el archivo `/etc/sudoers`, otorgando acceso root sin necesidad de contraseña.
* La falta de una adecuada configuración de permisos en servicios como SMB y Unit fue clave para comprometer la máquina.
* Inicialmente pensé que el puerto 9000 era un rabbithole, que resultó ser una pieza crucial para avanzar, esto nos da un lección para que no descartemos posibles entradas de explotación sin haber investigado exhaustivamente

Realmente fue una maquina fácil pero personalmente se me hizo muy larga y en algunos pasos me quede atascado, la frustración es el camino correcto hacia el aprendizaje ;)


---

# 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://burple.gitbook.io/burple/hackmyvm/facil/icecream.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.
