Hello Cyber-Spartans!!
En este articulo, aprenderemos a tener el control total de un servidor web que esté utilizando drupal para alojar cualquier servicio por medio de una vulnerabilidad detectada.
Según Wikipedia, Drupal es un marco de gestión de contenidos gratuito y de código abierto escrito en PHP.
Drupal proporciona un marco de trabajo de back-end para al menos el 2,3% de todos los sitios web del mundo, desde blogs personales hasta sitios corporativos, políticos y gubernamentales. Fuente Wikipedia
Es decir, en el transcurso del aprendizaje del hacking es muy probable que encontremos un servidor web que aloje un sitio drupal y necesitemos acceder a él.
Antes de empezar quiero aclarar que todo mi contenido publicado se hace con fines educativos, informativos y éticos.
No me hago responsable del mal uso que puedan darle.
Con este tutorial aprenderás:
Cómo realizar una enumeracion sobre el CMS drupal.
Cómo interceptar peticiones con burpsuite.
Cómo realizar un escaneo de puertos con Nmap.
Cómo obtener una sesión de meterpreter con Metasploit.
Cómo realizar un descubrimiento de directorios con dirb.
Cómo realizar una búsqueda de exploits con Searchsploit.
Cómo utilizar Sherlock.ps1 y Powershell Empire (PowerUp.ps1)
Cómo secuestrar una sesión utilizando una cookie con BurpSuite.
Cómo secuestrar una sesión mediante una cookie con Google Chrome.
Cómo manipular los exploits basados en PHP.
Cómo obtener un Reverse Shell con Netcat.
Para llevar a cabo esta demostración, realizaremos una prueba de penetración en una máquina vulnerable llamada Bastard publicada en la plataforma de HackTheBox.
Como en cualquier otra auditoria de seguridad se debe comenzar con una enumeración del sistema.
Para ello realizaremos un escaneo simple con Nmap, de la siguiente manera.
Antes de continuar, podemos darnos cuenta de que ya hemos identificado que el sistema está ejecutando Drupal con la versión 7.
Con el anterior escaneo de puertos que hicimos con Nmap, conseguimos identificar el puerto 80 abierto.
Si abrimos esta página web en un navegador podemos ver que se trata de una instancia de drupal.
La instancia de Drupal se ejecuta en la página 10.10.10.9:80
Vamos a realizar un descubrimiento de directorios con DIRB para ver si encontramos algo interesante:
La versión de Drupal se puede enumerar navegando por 10.10.10.9/CHANGELOG.txt
Cómo saber la versión de drupal
Vamos a utilizar una herramienta muy útil para buscar exploits de vulnerabilidades conocidas en sistemas de información, esto lo conseguiremos con searchsploit.
Nuestra búsqueda arroja varios resultados, entre ellos logramos identificar un exploit que cuando se utiliza con éxito un atacante puede ejecutar código remoto en la víctima.
No voy a profundizar en cómo funciona este exploit, en resumen solo necesitamos averiguar un end-point. Te recomiendo la siguiente lectura.
Tenemos que editar manualmente este exploit que está escrito en PHP.
Primero instalamos php-curl y copiamos el exploit a nuestra ruta.
Hay unas 3 líneas que hay que corregir antes de poder ejecutar el script.
Verás que falta el signo de comentario (#). Tambien, tendrás que introducir la IP (host) y cambiar el endpoint_path a “/rest”. Si te preguntas qué hace este /rest o endpoint_path, deberías leer la explicación del exploit en el siguiente enlace.
DIRB ha encontrado muchas subcarpetas y /Rest era una de ellas y está encajando en el esquema.
El script de PHP debería tener el siguiente aspecto:
Tras la ejecución del exploit, se nos exportan los siguientes archivos:
El archivo sessions.json nos ayudará a realizar el Session Hijacking.
Para ejecutar la Ejecución Remota de Código desde nuestra webshell sólo tenemos que añadir el parámetro ?cmd= y el comando que queremos ejecutar.
RCE en Drupal
Listo amigos, ahora podemos ejecutar comandos en el servidor.
Con el comando systeminfo analizamos qué sistema operativo se está ejecutando en la máquina y en qué versión se encuentra.
Comando Systeminfo en Linux
Con la información obtenida podemos realizar una búsqueda para encontrar un vector de ataque que nos dé un escalamiento de privilegios en el sistema.
Para validar de forma más rápida y automatizada, realizaremos un análisis de vulnerabilidades locales para escalar privilegios con un script powershell.
Session Hijacking
El secuestro de sesión, también conocido como session hijacking, es un problema importante que puede afectar a la seguridad de los usuarios a la hora de navegar por la red. Su función es lograr acceso no autorizado a información o servicios en un sistema. Articulo completo
Cómo robar una sesión de una Cookie con Burpsuite
En la siguiente imagen, se puede ver que no tengo acceso a la ruta http://10.10.10.9/admin
Acceso denegado en la página web /Admin
A continuación, interceptaremos la petición anterior con burpsuite.
Solicitud interceptada en Burp
Conseguimos identificar que en el envío de la petición, hay una cookie con el valor de hah_js=1, lo que debemos hacer es manipular este valor y asignarle los valores que el exploit exportó previamente.
El archivo de la sesión tiene el siguiente formato:
- Session_name:abc
- Session_id:def
- Token:xyz
La estructura de la cookie debe ser la siguiente: abc=def;token=xyz
Secuestro de sesión con éxito con Burp
Cómo robar una sesión de una Cookie con Google Chrome
Otra forma de realizar el proceso anteriormente indicado, es utilizando la consola de Google Chrome.
Mediante Javascript es posible inyectar la cookie, esto se consigue de la siguiente manera:
Pulse F12, luego haga clic en la consola y defina la cookie: document.cookie = “Session_name=Session_id;token=Token”
Secuestro de sesión con éxito con JS
Cómo utilizar Powershell Empire
PowerShell Empire es un framework de post-explotation para ordenadores y servidores que ejecutan sistemas operativos Microsoft Windows, Windows Server o ambos. Articulo completo
Ejecutamos el siguiente comando para clonar el repositorio:
Ahora que tenemos PSE descargado vamos a copiar el PowerUp.ps1 para poder editarlo.
PowerUp.ps1 fue hecho para ejecutarse dentro de empire así que necesitamos agregar al final del archivo Invoke-AllChecks y guardar.
Para subir el script a nuestra víctima, montaré un servidor HTTP que aloje el script en powershell; posteriormente desde la máquina víctima descargaré el archivo haciendo una petición GET a la ruta donde especifiquemos.
Vamos a la carpeta que contiene nuestro script de powershell y ejecutamos lo siguiente para montar un servidor HTTP con Python.
Luego, a través de PowerShell, descargamos el archivo en nuestro ordenador víctima.
Tras realizar la petición a través de la URL anterior, en nuestra máquina atacante recibiremos en tiempo real la petición por el método GET al fichero PowerUp.ps1.
Después de un par de minutos podemos ver los resultados del PowerUp.ps1.
Resultado de PowerUp.ps1
Mirando los resultados podemos ver el acceso denegado que nos indica que no tenemos derechos de administrador.
Cómo utilizar Sherlock
Sherlock, Script de PowerShell para encontrar rápidamente los parches de software que faltan para las vulnerabilidades de escalada de privilegios locales.
Intentemos encontrar una vulnerabilidad usando sherlock.ps1
Al igual que antes tenemos que editar el final del archivo esta vez con Find-AllVulns.
Podemos copiar y ejecutar a Sherlock de la misma manera que lo hicimos con PowerUp.
Descargamos nuestro Sherlock.ps1 accediendo a la siguiente URL:
El resultado es el siguiente:
Antes de hacer nuestra elevación de privilegios necesitamos un shell remoto que podemos hacer con netcat.
Netcat de Shell Reverse
Inicialmente, descargamos el ejecutable de netcat para la arquitectura de 64 bits.
Descomprimir los archivos netcat para poder subirlos y ejecutarlos.
Configurar nuestro listener de netcat.
Colocamos nuestro nc64.exe en la carpeta donde se ejecuta nuestro servidor HTTP.
A continuación, voy a modificar un poco el código inicial del exploit.
De este modo, los siguientes pasos serán más fáciles:
Finalmente descargamos nuestro ejecutable accediendo a la siguiente URL:
Ok, ya hemos conseguido tener una Shell Reverse:
Privilege Escalation
Entre los resultados arrojados por el Sherlock.ps1, nos centraremos en los siguientes:
Para intentar explotar esta vulnerabilidad, podemos descargar el exploit compilado desde la siguiente ruta:
Después de descomprimir el archivo descargado, copiamos nuestro ejecutable a nuestra carpeta donde tenemos nuestro servidor HTTP.
Ahora sólo tenemos que abrir una nueva escucha con nc y acceder a la siguiente ruta:
Enlace para descargar el exploit y realizar la ejecución de netcat con el exploit.
Listo, hemos escalado con éxito los privilegios.
Para terminar, voy a hacer esta misma demostración pero utilizando otro método, que es hacer todo el proceso anterior pero con el Metasploit Framework.
NOTA:
Debemos generar un payload con msfvenom y luego descargarlo de nuestra máquina víctima.