Armageddon [EASYπ’]
Dificultad: FΓ‘cil
1- Reconocimiento y escaneo
1.1 Ping
1.1 PingPodemos notar que se trata de una maquina Linux, debido al TTL:
1.2 Nmap
1.2 NmapPodemos ver que se encuentran 2 puertos abiertos(22 y 80) con sus respectivas versiones del servicio que se encuentran corriendo en la maquina, en el caso del puerto 80, se encuentra alojado un servidor web Apache y en el caso del puerto 22 se encuentra alojado un servidor SSH(OpenSSH 7.4) para control remoto mediante linea de comandos
1.3 whatweb
1.3 whatwebSe puede visualizar diferentes tecnologΓas web que se utilizan en el servidor web:
1.4 Fuzzing
1.4 FuzzingPodemos tambien notar que el servidor web tiene una incorrecta sanitizaciΓ³n, una vez realizado el fuzzing(en mi caso con la herramienta dirsearch), vemos directorios clΓ‘sicos como "robots.txt" o "xmlrpc.php", ademΓ‘s de directorios propios de la maquina con herramientas, como por ejemplo "http://10.10.10.233/scripts/", donde encontraremos diferentes scripts en Bash, entre ellos uno para descifrar contraseΓ±as hasheadas
2- Escaneo de vulnerabilidades
2.1 Searchsploit(Drupal 7)
2.1 Searchsploit(Drupal 7)Se puede ver que hay varias vulnerabilidades para este CMS como lo es Drupal 7, si prestamos atenciΓ³n, vemos que hay exploits o vulnerabilidades llamadas "Drupalgeddon", especΓficamente estos exploits:
Estas vulnerabilidades o exploits estΓ‘n disponibles entre la versiΓ³n de Drupal 7.0 y Drupal 7.31, que en nuestro caso coincide con la versiΓ³n de la maquina
3- ExplotaciΓ³n de Drupalgeddon automatica
3.1 Metasploit Framework
3.1 Metasploit FrameworkNos vamos a ir a Metasploit Framework luego de haber analizado las vulnerabilidades encontradas con la herramienta de Searchsploit dentro de Kali. Vamos a buscar dentro de Metasploit con el comando "search" la vulnerabilidad antes mencionada "Drupalgeddon":
Tenemos un exploit dentro de Metasploit Framework de Drupal 7, totalmente automatizado para su uso, vamos a selecciΓ³nar el exploit "exploit/unix/webapp/drupal_drupalgeddon2" con el comando "use 0"
Vamos a listar las opciones de configuraciΓ³n del exploit con el comando "show options":
Procederemos a configurar las direcciones IP correspondientes del exploit, tanto del host remoto que en este caso es "10.10.10.233" y la direcciΓ³n del segmento local que nos asigno la VPN de Hack The Box
Y procederemos con la ejecuciΓ³n del exploit con el comando "run" o "exploit" para la posterior intrusiΓ³n dentro de la maquina y la obtenciΓ³n de una shell Meterpreter:
Vamos a listar los directorios del servidor web de la maquina en la consola de meterpreter con el comando "ls"
Hay directorios relacionados al fuzzing que hemos realizado anteriormente en la etapa de reconocimiento y escaneo con la herramienta "dirsearch".
Ahora obtendremos una shell Bash pura del servidor web con el comando "shell"
4- ObtenciΓ³n de shell con netcat
Esta shell que nos da meterpreter es muy escasa y restrictiva para algunos comandos, vamos a mandarnos una shell mediante netcat, abrimos una nueva consola dentro de nuestro Kali y ejecutamos el siguiente comando para ponernos en escucha con netcat mediante el puerto 443
Volvemos a la shell de meterpreter donde dentro tenemos la shell restrictiva que nos ofrece, y ejecutamos el siguiente comando para establecer la conexiΓ³n desde el servidor objetivo a nuestra maquina Kali:
En mi caso el comando se estructuraria de esta manera:
Una vez ejecutado el comando, recibirΓamos la shell desde nuestro netcat de Kali donde previamente estΓ‘bamos en escucha por el puerto 443:
Ejecutemos el comando "whoami" para verificar que estamos dentro del servidor web:
Con esto ya tendrΓamos acceso a la maquina, por ende a la flag de usuario o user.
Pero, ΒΏCΓ³mo encontrarΓamos la flag o el hash para introducirlo en Hack The Box?
5- ExplotaciΓ³n de la base de datos MySQL
Dentro de los CMS o Sistema de gestion de contenido, ya sea Drupal o WordPress, es facil que haya unos archivos que escondan contraseΓ±as, como por ejemplo archivos de backup o configuraciΓ³n.
Si listamos los directorios dentro la shell que obtuvimos en netcat dentro de nuestro Kali:
Entramos dentro del directorio "sites" y listamos los directorios:
Podemos ver un directorio llamado "default", si entramos dentro del directorio y listamos:
Hay un fichero php llamado "settings.php", si visualizamos el fichero con el comando "cat", vamos a notar que dentro del fichero settings.php encontramos diferentes credenciales, concretamente estas lΓneas de php:
Se trata de las credenciales de una base de datos, concretamente una base de datos MySQL
Con estas credenciales, vamos a conectarnos a la base de datos mencionada dentro de la shell que obtuvimos con netcat:
Este comando se estructura de la siguiente manera:
(Recordar que la contraseΓ±a va sin espacio -pContraseΓ±a)
Una vez ejecutado el comando correspondiente, nos devuelve las tablas de la base de datos con la consulta que habΓamos especificado en el comando "SHOW TABLES;":
Como podemos ver, hay una tabla dentro de la base de datos llamada "users", vamos a consultar que hay dentro de la tabla "users" ejecutando el mismo comando anterior pero cambiando la instrucciΓ³n SQL:
En este caso seleccionamos todos los elementos de la tabla "users" con la instrucciΓ³n SELECT.
Nos devuelve toda la informaciΓ³n dentro de la tabla users:
Hay un usuario llamado "brucetherealadmin" con su respectiva contraseΓ±a hasheada
Como la contraseΓ±a esta hasheada, procederemos a hacer fuerza bruta con John The Ripper
5.1 John The Ripper para la contraseΓ±a hasheada
5.1 John The Ripper para la contraseΓ±a hasheadaVamos a almacenar la contraseΓ±a hasheada en un archivo .txt para pasarlo como parΓ‘metro dentro de John The Ripper
Una vez almacenado el hash en un archivo .txt, procedemos a ejecutar John The Ripper con el comando "john", pasΓ‘ndole como parΓ‘metro el archivo .txt donde esta almacenado el hash:
Ejecutamos:
La password es "booboo"
6- IntrusiΓ³n a SSH con la contraseΓ±a crackeada
Si recordamos, en el escaneo de Nmap, nos dio como resultado el puerto 22 abierto, un servidor SSH
Si probamos conectarnos mediante SSH con las credenciales que encontramos:
Ejecutamos y nos pedira la contraseΓ±a, en este caso "booboo":
Introducimos la contraseΓ±a:
6.1 ObtenciΓ³n de la flag de usuario
6.1 ObtenciΓ³n de la flag de usuarioYa tendremos acceso al usuario "brucetherealadmin", si listamos los directorios, nos encontraremos con la flag de usuario:
7- Escala de privilegios
Siempre que se quiera realizar escalamiento de privilegios, es recomendable visualizar y analizar los comandos que podemos ejecutar dentro del usuario que se comprometiΓ³, en este caso el usuario es "brucetherealadmin"
ΒΏCΓ³mo visualizamos los permisos del usuario?
Con el comando "sudo -l"
Podemos visualizar que tendremos acceso al comando "Snap" sin contraseΓ±a(NOPASSWD), Γ³sea como usuario root. Snap es un gestor de paquetes para GNU/Linux, podremos instalar paquetes dentro de la maquina con el gestor de paquetes Snap como si fuΓ©semos usuarios root
7.1 Vulnerabilidad Dirty Sock con el gestor de paquetes Snapd
7.1 Vulnerabilidad Dirty Sock con el gestor de paquetes SnapdSi investigamos, vamos a notar que en el gestor de paquetes "snapd", existe una vulnerabilidad llamada Dirty Sock, clasificada como "CVE-2019-7304".
Vamos a buscar en GitHub algΓΊn exploit existente para ejecutarlo y realizar el escalamiento de privilegios, en mi caso voy a utilizar este exploit:
https://github.com/f4T1H21/dirty_sock
(CrΓ©ditos al creador del script)
En este caso, como la maquina de Hack The Box no esta conectado a la red, si no que al conectarnos mediante Kali a la VPN, estamos dentro del segmento de la maquina objetivo Armageddon, vamos a descargarnos el script "lpe.py" dentro de nuestro Kali con el siguiente comando:
Se nos descargara el archivo "lpe.py".
Vamos a montar un servidor web con Python donde tengamos el archivo "lpe.py" para pasarlo a la maquina objetivo, utilizamos el siguiente comando:
Ejecutamos:
Ahora vamos a recibir el archivo "lpe.py" desde la shell SSH que tenΓamos del usuario "brucetherealadmin" con el comando "curl":
En mi caso el comando quedarΓa asi:
Ejecutamos:
Ejecutamos el script y obtendremos una escalada de privilegios automΓ‘tica con el siguiente comando:
Ejecutamos:
7.2 ObtenciΓ³n de la flag root
7.2 ObtenciΓ³n de la flag rootYa tendremos el usuario root a nuestra disposiciΓ³n, ahora bien, obtendremos la flag de root para introducirla en Hack The Box. La flag se encuentra en la siguiente ruta:
En el directorio raΓz, dentro del directorio "root", que en este caso seria el directorio home que le asigna Linux al usuario root.
Con esto concluirΓamos la maquina Armageddon
Espero te haya sido de ayuda este Write Up :)
Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales
Γltima actualizaciΓ³n
