Shocker - HackTheBox
Esta vez tenemos la máquina Shocker de nivel EASY, en la que explotaremos shellshock, veremos dos formas de detectarla y como explotarla, y finalizaremos con una escalada de privilegios sencilla a través del binario perl👨🎓.
Reconocimiento
Reconocimiento de Puertos📌
Como siempre comenzamos lanzando la utilidad Whichsystem para saber ante que sistema operativo nos enfrentamos.
Una vez que sabemos que estamos ante una máquina Linux
ya comienzo a escanear puertos y servicios.
Están abiertos los puertos 80 y 2222 en el sistema.
Lanzo el escaneo de servicios y versiones para obtener más información de los puertos 22 y 2222.
PORT STATE SERVICE REASON VERSION
80/tcp open http syn-ack Apache httpd 2.4.18 ((Ubuntu))
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
2222/tcp open ssh syn-ack OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 c4:f8:ad:e8:f8:04:77:de:cf:15:0d:63:0a:18:7e:49 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD8ArTOHWzqhwcyAZWc2CmxfLmVVTwfLZf0zhCBREGCpS2WC3NhAKQ2zefCHCU8XTC8hY9ta5ocU+p7S52OGHlaG7HuA5Xlnihl1INNsMX7gpNcfQEYnyby+hjHWPLo4++fAyO/lB8NammyA13MzvJy8pxvB9gmCJhVPaFzG5yX6Ly8OIsvVDk+qVa5eLCIua1E7WGACUlmkEGljDvzOaBdogMQZ8TGBTqNZbShnFH1WsUxBtJNRtYfeeGjztKTQqqj4WD5atU8dqV/iwmTylpE7wdHZ+38ckuYL9dmUPLh4Li2ZgdY6XniVOBGthY5a2uJ2OFp2xe1WS9KvbYjJ/tH
| 256 22:8f:b1:97:bf:0f:17:08:fc:7e:2c:8f:e9:77:3a:48 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPiFJd2F35NPKIQxKMHrgPzVzoNHOJtTtM+zlwVfxzvcXPFFuQrOL7X6Mi9YQF9QRVJpwtmV9KAtWltmk3qm4oc=
| 256 e6:ac:27:a3:b5:a9:f1:12:3c:34:a5:5d:5b:eb:3d:e9 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC/RjKhT/2YPlCgFQLx+gOXhC6W3A3raTzjlXQMT8Msk
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Puerto | Servicio | Versión |
2222 | SSH | OpenSSH 7.2p2 |
80 | HTTP | Apache 2.4.18 |
De momento no veo nada relevante, asique habría que empezar a darle caña al puerto 80 enumerando el servidor web.
Enumeración Web📌
Abro el navegador para ver que tenemos en el servidor web.
Al acceder a la ip vemos lo siguiente:
Inspecciono el código fuente pero no hay nada que pueda servirme.
Antes de proceder a fuzzear rutas decido lanzar la herramienta nikto
para escanear vulnerabilidades y sacar info más detallada del servidor web.
Pero nikto
no me arroja ninguna información valiosa.
Llegados a este punto procedo a fuzzear rutas
en el servidor.
Encontramos la ruta cgi-bin
... que me hace pensar que este servidor podría ser vulnerable a shellshock
, pero antes hay que comprobarlo.
Buscando información al respecto encuentro esto.
https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/cgi
Nos dice que bash se puede usar para ejecutar comandos que le pasan las aplicaciones.
Por lo tanto podría buscar algún archivo con extensión .sh dentro de la ruta cgi-bin
.
Asique procedo a fuzzear pero probando varias extensiones por si acaso, ya que bash no es la única extensión que podemos encontrar.
Encontramos el archivo user.sh
por lo tanto ya podríamos comprobar si es vulnerable, para comprobarlo existen varias formas, pero yo solo mostraré dos de ellas, una a través de metasploit y otra a través de nmap.
Detección ShellShock
Metasploit👿
Abrimos metasploit y usamos el módulo auxiliar:
scanner/http/apache_mod_cgi_bash_env
Configuramos las opciones que nos pide el módulo.
msf6 auxiliary(scanner/http/apache_mod_cgi_bash_env) > set RHOST 10.10.10.56
RHOST => 10.10.10.56
msf6 auxiliary(scanner/http/apache_mod_cgi_bash_env) > set TARGETURI /cgi-bin/user.sh
TARGETURI => /cgi-bin/user.sh
Y lo ejecutamos
Y como vemos, es vulnerable a ShellShock
.
Nmap👿
Para detectar si es vulnerable a través de nmap, usaremos un script
que ya trae el propio nmap.
/usr/share/nmap/scripts/http-shellshock.nse
Y a través de este comando comprobamos si es vulnerable o no.
nmap -p 80 10.10.10.56 --script=/usr/share/nmap/scripts/http-shellshock.nse --script-args uri=/cgi-bin/user.sh
Y como vemos es Vulnerable a ShellShock
.
Explotación ShellShock
Burpsuite🔥
Una vez hemos detectado que es vulnerable procedo a su explotación para acceder al sistema.
En este caso, en vez de usar metasploit voy a explotarlo a través de burpsuite
.
Modificando el user agent podemos introducir comandos.
De forma que primeramente hago un ping a la ip de mi interfaz tun0 (la vpn de HTB).
Como se puede ver en la imágen, el comando se ejecuta perfectamente y hace ping a la ip.
A continuación intento entablar una conexión inversa con una reverse shell en bash.
Y como vemos, hay conexión.
Una vez dentro ya podemos leer la flag user.txt
Y ahora toca escalar privilegios a root.
Escalada de Privilegios
Perl👨💻
Como siempre comenzamos enumerando el sistema en busca de vectores de escalada.
Yo siempre comienzo con sudo -l
asique esta vez no va a ser menos.
Podemos ejecutar como el usuario root sin contraseña
el binario perl
.
Y como de costumbre, nos dirigimos a la web GTFOBINS
https://gtfobins.github.io/gtfobins/perl/
Ejecutamos el comando:
sudo perl -e 'exec "/bin/sh";'
Y ya somos root y podemos leer la flag root.txt
Subscribe to my newsletter
Read articles from elc4br4 directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
elc4br4
elc4br4
Cybersecurity Student