Shocker [EASY🟢]

Dificultad: Fácil

1- Reconocimiento y escaneo

1.1 Ping

Podemos notar que se trata de una maquina Linux, debido al TTL:

1.2 Nmap

El puerto 80(Apache 2.4.18) correspondiente a un servidor web y el puerto 2222(OpenSSH 7.2p2) correspondiente a un servidor SSH para control remoto mediante linea de comandos

1.3 whatweb

1.4 Fuzzing

Vemos que el directorio "cgi-bin" nos reporta un 403, correspondiente a un Forbidden:

(Recordar poner una barra al final de la URL, ya que si no, el recurso no es reconocido por el servidor web)

1.4.1 Fuzzing al directorio "cgi-bin"

Este comando realiza un fuzzing de directorios, concretamente al directorio existente "cgi-bin" dentro del servidor web y filtra por archivos de extensión .SH, .PL, .CGI mediante una lista con el parametro "-z"

Nos encontró un script en bash llamado "user.sh" dentro del directorio "cgi-bin"

2- Explotación

2.1 Ataque Shellshock

Siempre que veamos archivos ".CGI" o el directorio "cgi-bin", es recomendable probar un ataque de shellshock, la vulnerabilidad Shellshock consiste en utilizar la misma linea de comandos Bash, dentro del servidor web con archivos ".SH", que si recordamos, encontramos un archivo "user.sh" en la fase de reconocimiento y escaneo, concretamente en el fuzzing al servidor web

Vamos a realizar un escaneo de la vulnerabilidad shellshock con Nmap utilizando un script, sobre el recurso "user.sh" del directorio "cgi-bin"

Estamos ante una vulnerabilidad Shellshock como podemos ver

Para proceder con la vulnerabilidad shellshock, vamos a necesitar inyectar comandos en algun campo de la solicitud al servidor web de la maquina objetivo para obtener una reverse shell mediante netcat

Podríamos realizar este ataque mediante la herramienta "curl" o con Burp Suite, en mi caso la hare con curl

Podemos ver que estamos tramitando una solicitud get al recurso "user.sh" del directorio "cgi-bin" modificando el campo "User-Agent" de la solicitud inyectándole comandos a nivel de sistema dentro de la maquina, con la carga util de "/usr/bin/whoami", vamos a probar si nos devuelve la salida del comando "whoami":

Nos da como resultado un 500 Internal Server Error, por lo que a veces a la hora de realizar este ataque a veces es necesario agregar un "echo" y hasta a veces 2 "echo" en el payload del comando:

Vemos que ahora nos devolvió el comando "whoami" a nivel de sistema dentro de la maquina objetivo mediante una solicitud GET modificando los campos de la solicitud inyectando comandos en el campo "User-Agent", ya que es vulnerable a Shellshock

2.2 Obtención de reverse shell mediante ataque shellshock

Ahora sabiendo que tenemos ejecución remota de comandos, podemos mandarnos una reverse shell mediante netcat por la solicitud GET con "curl"

Vamos a ponernos en escucha con netcat por el puerto 443:

Y vamos a ejecutar el siguiente comando para tramitar la solicitud GET con el payload correspondiente para obtener la reverse shell:

Esta solicitud GET es para obtener la reverse shell en netcat por el puerto 443

(Recordar poner la IP de la VPN de Hack The Box de la interfaz "tun0")

Una vez ejecutado se quedaria cargando, pero si volvemos a la consola donde teniamos netcat en escucha por el puerto 443:

2.3 Tratamiento de la TTY

Vamos a realizar el tratamiento de la TTY para obtener una shell como dios manda :)

"script /dev/null -c bash":

CTRL + Z:

Y vamos a ejecutar el siguiente comando:

Ejecutamos:

Y ahora ejecutamos:

Ejecutamos y nos va a devolver a la reverse shell que obtuvimos:

Ahora vamos a exportar XTERM como TERM y BASH como consola, como variables de entorno:

Para verificar que el tratamiento de la TTY se realizo correctamente, pondremos "echo $SHELL" o "echo $TERM":

El tratamiento de la TTY corresponde hacerlo cuando debemos hacer muchas cosas con una reverse shell y necesitamos realizar algunas tareas como utilizar un editor de texto en consola, entre otras

2.4 Obtención de la flag user

La flag de user se encuentra dentro de la ruta absoluta "/home/shelly/user.txt", vamos a visualizar la flag:

3- Escalado de privilegios

3.1 sudo -l

Para verificar los permisos que tenemos con el usuario "shelly" que obtuvimos en la reverse shell, vamos a ejecutar "sudo -l":

Podemos ejecutar Perl, como usuarios root con sudo, por lo que la escalada de privilegios es fácil, unicamente tenemos que ejecutar una bash con Perl con el comando inicial sudo para indicarle que queremos ejecutar la bash como root

3.2 Obtención de la flag root

La flag de root, se encuentra dentro del directorio "/root/root.txt":

Con esto, concluimos la maquina "Shocker" de Hack The Box

Espero te haya sido de ayuda este Write Up :)

Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales

Última actualización