Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
drupalgeddon2-cli — Reescritura en CLI del PoC de Drupalgeddon2 (CVE-2018-7600), para pruebas/educación autorizadas. | Kitploit
Herramientas/GitHubGitHub/nayem-m/drupalgeddon2-cli
Generación de PayloadsExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHubnayem-m/drupalgeddon2-cli

drupalgeddon2-cli

Reescritura en CLI del PoC de Drupalgeddon2 (CVE-2018-7600), para pruebas/educación autorizadas.

Ver Repositorio
1hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

drupalgeddon2-cli

Una reescritura en línea de comandos del proof-of-concept de Drupalgeddon2 (CVE-2018-7600), construida como ejercicio de estudio mientras trabajaba en el módulo Attacking Common Applications de Hack The Box Academy.

[!WARNING] Solo para pruebas de seguridad autorizadas y educación. Ejecutar esto contra sistemas que no posees o para los que no tienes permiso explícito por escrito es ilegal en la mayoría de las jurisdicciones. Consulta Uso legal y responsable.

[!NOTE] Implementación escrita con asistencia de IA. Consulta Una nota sobre la autoría.


Antecedentes: por qué construí esto

Drupal es una de las "aplicaciones comunes" cubiertas en el módulo Attacking Common Applications de HTB Academy, y CVE-2018-7600 ("Drupalgeddon2") es el ejemplo canónico de RCE no autenticado para dicho módulo. En lugar de copiar y pegar un script de un solo uso y seguir adelante, quería entender realmente la inyección de Form API que hace funcionar el fallo, así que reconstruí el PoC público desde cero como ejercicio de aprendizaje.

El original ampliamente referenciado, a2u/CVE-2018-7600 de Vitalii Rudnykh, es excelente para demostrar el fallo, pero requiere editar el payload in situ en cada ejecución. En un flujo de trabajo de laboratorio/CTF —re-ejecutando contra distintos objetivos, queriendo un punto de apoyo repetible— eso se vuelve tedioso. Esta versión lo convierte en una herramienta CLI adecuada:

  • el objetivo y el comando se pasan como argumentos; no hay que editar el código fuente en cada ejecución
  • planta automáticamente un pequeño shell PHP (el propio servidor vulnerable escribe el archivo), lo que proporciona un punto de apoyo estable y reutilizable
  • puedes lanzar un único comando, entrar en un pseudo-shell interactivo, o simplemente desplegar el shell e irte
  • el nombre del archivo del shell y el parámetro de comando se aleatorizan en cada ejecución, de modo que una ejecución repetida no colisiona y no dejas una puerta cmd= predecible abierta detrás de ti
  • Está deliberadamente limitado a una vulnerabilidad conocida y parcheada hace tiempo (divulgada en 2018). El objetivo era comprender la técnica y producir una implementación de referencia limpia y documentada — no una capacidad ofensiva novedosa.

    Una nota sobre la autoría

    El código de este repositorio fue escrito con asistencia de IA (Claude de Anthropic) mientras trabajaba en el módulo de HTB. Yo establecí los objetivos de diseño y los requisitos — ergonomía CLI, despliegue automático del web shell, modo interactivo, nombre del shell y parámetro aleatorizados — y revisé y probé el resultado. Lo divulgo porque es lo honesto, y porque el valor aquí está en la comprensión y en las decisiones de ingeniería, más que en la autoría de cada línea.

    Qué hace

    1. Utiliza la inyección de Form API de CVE-2018-7600 para colocar un pequeño web shell PHP en el objetivo. El servidor vulnerable decodifica y escribe el archivo por sí mismo, lo que evita problemas de comillas/escapado con el comando inyectado.
    2. Permite ejecutar comandos a través de ese shell con --cmd, o entrar en un pseudo-shell interactivo con --shell.
    3. Verifica que el shell realmente se ha colocado y ejecuta (hace eco de un token aleatorio y lo comprueba) antes de informar del éxito.

    Versiones afectadas

    CVE-2018-7600 afecta a:

    • Drupal 7.x anterior a 7.58
    • Drupal 8.x anterior a 8.5.1 (también 8.3.x < 8.3.9 y 8.4.x < 8.4.6)

    Esta implementación apunta al vector de Form API de Drupal 8 (el endpoint AJAX user/register). Drupal 7 es explotable a través de un endpoint/payload diferente y no se maneja aquí.

    Las versiones parcheadas (7.58 / 8.5.1 y posteriores) no están afectadas.

    Requisitos

    • Python 3.7+
    • requests
    root@kitploit:~
    pip install requests
    

    Uso

    root@kitploit:~
    # comando de una sola vez
    python3 drupalgeddon2.py -u http://target/ -c id
    
    # pseudo-shell interactivo
    python3 drupalgeddon2.py -u http://target/ --shell
    
    # solo plantar el shell, no ejecutar nada
    python3 drupalgeddon2.py -u http://target/ --deploy-only
    
    # enrutar a través de Burp, ignorar el certificado autofirmado del proxy
    python3 drupalgeddon2.py -u http://target/ -c id --proxy http://127.0.0.1:8080 -k
    
    FlagDescripción
    -u, --url(obligatorio) URL base del objetivo, p. ej. http://target/
    -c, --cmdComando único a ejecutar en el objetivo
    --shellEntrar en un pseudo-shell interactivo
    --deploy-onlySolo plantar el web shell, no ejecutar nada
    --shell-nameNombre de archivo para el shell plantado (por defecto: .php aleatorio)
    --paramNombre del parámetro GET para el shell (por defecto: md5 aleatorio)
    --proxyURL del proxy, p. ej. http://127.0.0.1:8080
    -k, --insecureDeshabilitar la verificación TLS (para certificados de proxy autofirmados)
    --timeoutTiempo de espera por petición en segundos (por defecto: 15)

    Cómo funciona

    CVE-2018-7600 es un fallo de saneamiento de entradas en la Form API de Drupal. Drupal representa los formularios como arrays renderizables anidados, y las claves de array que comienzan con # se tratan como propiedades de render especiales, no como datos de usuario. El parche (SA-CORE-2018-002) añadió saneamiento para eliminar esas claves con prefijo # de las entradas proporcionadas por el usuario.

    Antes del parche, un atacante no autenticado podía inyectar propiedades de render en un elemento de formulario que es procesado por el manejador AJAX de Drupal. Enviar propiedades como:

    • #post_render — una lista de callables que Drupal invoca después del renderizado, y
    • #markup — el argumento que se les pasa

    contra el elemento mail del formulario de registro de usuario hace que Drupal llame a una función PHP arbitraria (aquí, exec) con entradas controladas por el atacante durante el paso de renderizado — es decir, ejecución remota de código, sin necesidad de autenticación.

    Este PoC utiliza esa primitiva para codificar en base64 un shell PHP de una línea localmente, hacer que el servidor lo decodifique a un archivo en la webroot, y luego interactuar con ese archivo mediante peticiones GET normales.

    Detección y remediación

    Si estás en el lado defensor de esto:

    Remediación

    • Actualiza a Drupal 7.58 / 8.5.1 o posterior (aplica SA-CORE-2018-002). Esa es la única solución real.
    • Si no es posible parchear de inmediato, el equipo de seguridad de Drupal publicó un parche de mitigación en el momento de la divulgación — pero actualizar es claramente preferible.

    Ideas de detección

    • Inspecciona los cuerpos POST dirigidos a endpoints de formularios/AJAX en busca de claves de arrays de render: #post_render, #markup, #type, #lazy_builder, etc. Los envíos de formularios legítimos no las contienen.
    • Marca las peticiones a …/user/register?element_parents=…&_wrapper_format=drupal_ajax que lleven parámetros sospechosos.
    • Correlaciona un POST a un endpoint de formulario AJAX con un GET posterior a un archivo .php recién creado en la webroot.
    • Vigila la creación inesperada de archivos en la webroot de Drupal, así como archivos PHP cortos de un solo parámetro (shells system($_GET[...])).
    • Estos comportamientos son sencillos de codificar como firmas de Suricata/Snort o reglas Sigma sobre los registros del servidor web.

    Créditos

    • PoC original y técnica central: Vitalii Rudnykh — a2u/CVE-2018-7600
    • Divulgación de la vulnerabilidad: Equipo de seguridad de Drupal — SA-CORE-2018-002
    • Análisis técnicos en profundidad que informaron esta reescritura: los escritos de investigación de Check Point y Ambionics sobre Drupalgeddon2
    • Esta reescritura CLI: yo, con asistencia de IA (consulta Una nota sobre la autoría)

    Uso legal y responsable

    Esta herramienta se publica con fines educativos y para pruebas de seguridad autorizadas — tus propios entornos de laboratorio, objetivos HTB/CTF, o sistemas que tengas permiso explícito por escrito para evaluar. El acceso no autorizado a sistemas informáticos es un delito según leyes como la UK Computer Misuse Act 1990, la US Computer Fraud and Abuse Act y sus equivalentes en otros lugares. Eres el único responsable del uso que hagas de ella. El autor no acepta ninguna responsabilidad por mal uso o por cualquier daño causado.

    Licencia

    MIT

    Descargar herramienta