
Una implementación en Rust del exploit CVE-2018-7600 dirigido a instalaciones vulnerables de Drupal 7 (<= 7.57)
Una implementación en Rust del exploit CVE-2018-7600 dirigido a instalaciones vulnerables de Drupal 7 (<= 7.57). Esta CLI reproduce el siguiente flujo de PoC: envenena un formulario renderizable almacenado en caché a través de la ruta user/password, extrae un form_build_id y luego activa la carga útil cacheada mediante el endpoint file/ajax para lograr ejecución remota de código a través de una invocación de función PHP.
CVE-2018-7600 es una vulnerabilidad de ejecución remota de código que afecta a Drupal 7 (y a Drupal 8 en un contexto diferente). En Drupal 7, el problema se debe a una sanitización insuficiente cuando ciertos arrays renderizables se almacenan en caché y luego se renderizan. Al inyectar metadatos de render especialmente manipulados en un endpoint que se almacena en caché, un atacante puede provocar que se ejecuten funciones PHP arbitrarias cuando los datos cacheados se renderizan o se solicitan posteriormente.
#post_render es una función PHP arbitraria (por ejemplo passthru).?q=user/password con los parámetros del array renderizable manipulados para que Drupal almacene en caché el formulario envenenado.form_build_id, el PoC activa la carga útil llamando a /file/ajax/name/#value/<form_build_id> con el form_build_id en el cuerpo de la POST. Cuando Drupal renderiza el elemento cacheado, el callback #post_render se ejecuta con marcado controlado por el atacante, lo que permite la ejecución de comandos.Esta CLI en Rust construye y ejecuta la secuencia de dos pasos (envenenar y luego activar) contra un sitio Drupal 7 objetivo, analiza la respuesta HTML en busca de form_build_id y luego activa el endpoint file/ajax para ejecutar la función especificada por el atacante.
Debido a que el cliente desactiva la verificación de certificados (para reflejar el PoC original que pasaba verify=False), la herramienta funcionará contra objetivos que utilicen certificados TLS autofirmados o no válidos. Este comportamiento se puede cambiar en el código fuente si prefieres exigir certificados válidos.
Uso básico (comando predeterminado es whoami, función predeterminada es passthru):
cargo run -- -u http://target.com/
Ejecutar un comando y una función personalizados:
cargo run -- -u http://target.com/ -c "whoami" -f "passthru"
Usar un proxy HTTP/S (formato: http://127.0.0.1:8080/):
cargo run -- -u http://target.com/ -p http://127.0.0.1:8080/
Resumen de opciones de la CLI:
-u, target: URL del sitio Drupal objetivo (por ejemplo, http://target.com/).-c, --command: Comando a ejecutar en el objetivo (predeterminado: whoami).-f, --function: Función PHP que se usará como vector de ataque (predeterminada: passthru).-p, --proxy: URL de proxy opcional para enrutar las solicitudes a través de él.Ejemplo del flujo completo:
user/password, insertando el callback #post_render y #markup que contiene el comando.form_build_id dentro de form#user-pass.?q=file/ajax/name/#value/<form_build_id> con el form_build_id para activar el renderizado y ejecutar el comando.Esta herramienta es solo para fines educativos y de pruebas de penetración autorizadas. Úsala de manera responsable y únicamente en sistemas que poseas o para los que tengas permiso explícito.