Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/nayem-m/drupalgeddon2-cli
Génération de PayloadsExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationLabs et Pratique
GitHubnayem-m/drupalgeddon2-cli

drupalgeddon2-cli

Réécriture CLI du PoC Drupalgeddon2 (CVE-2018-7600) — pour tests/éducation autorisés

Voir le dépôt
1il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

drupalgeddon2-cli

Une réécriture en ligne de commande du proof-of-concept Drupalgeddon2 (CVE-2018-7600), construite comme exercice d'étude dans le cadre du module Attacking Common Applications de la Hack The Box Academy.

[!WARNING] Pour les tests de sécurité autorisés et à des fins éducatives uniquement. Exécuter cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite est illégal dans la plupart des juridictions. Voir Utilisation légale et responsable.

[!NOTE] Implémentation écrite avec l'aide de l'IA. Voir Note sur la paternité.


Contexte — pourquoi j'ai construit cet outil

Drupal est l'une des « applications courantes » couvertes par le module Attacking Common Applications de HTB Academy, et CVE-2018-7600 (« Drupalgeddon2 ») en est l'exemple canonique de RCE non authentifiée. Plutôt que de copier-coller un script à usage unique et de passer à autre chose, je voulais vraiment comprendre l'injection Form API qui rend cette vulnérabilité exploitable — j'ai donc reconstruit le PoC public de zéro comme exercice d'apprentissage.

L'original largement référencé, a2u/CVE-2018-7600 de Vitalii Rudnykh, est parfait pour démontrer la vulnérabilité, mais il vous oblige à modifier le payload sur place à chaque exécution. Dans un flux de travail en laboratoire/CTF — relancer l'exploit contre différentes cibles, vouloir un point d'accès réutilisable — cela devient fastidieux. Cette version en fait un véritable outil CLI à la place :

  • la cible et la commande sont passées en arguments ; plus de modification du code source à chaque exécution
  • il installe automatiquement une petite coquille web PHP (le serveur vulnérable écrit lui-même le fichier), offrant un point d'accès stable et réutilisable
  • vous pouvez exécuter une seule commande, ouvrir un pseudo-shell interactif, ou simplement déployer la coquille et repartir
  • le nom de fichier de la coquille et le paramètre de commande sont randomisés à chaque exécution, afin qu'une nouvelle exécution n'entre pas en collision et que vous ne laissiez pas une porte cmd= prévisible ouverte derrière vous
  • Il est délibérément limité à une vulnérabilité connue et corrigée depuis longtemps (divulguée en 2018). L'objectif était de comprendre la technique et de produire une implémentation de référence propre et documentée — pas une capacité offensive inédite.

    Note sur la paternité

    Le code de ce dépôt a été écrit avec l'assistance de l'IA (Claude d'Anthropic) pendant que je travaillais sur le module HTB. J'ai défini les objectifs et les exigences de conception — ergonomie CLI, déploiement automatique de la coquille web, mode interactif, nom de coquille et paramètre randomisés — et j'ai relu et testé le résultat. Je le mentionne parce que c'est la chose honnête à faire, et parce que la valeur ici réside dans la compréhension et les décisions d'ingénierie plutôt que dans la paternité de chaque ligne.

    Ce qu'il fait

    1. Utilise l'injection Form API de CVE-2018-7600 pour déposer une petite coquille web PHP sur la cible. Le serveur vulnérable décode et écrit lui-même le fichier, ce qui contourne les problèmes de guillemets/échappement de la commande injectée.
    2. Permet d'exécuter des commandes via cette coquille avec --cmd, ou d'ouvrir un pseudo-shell interactif avec --shell.
    3. Vérifie que la coquille a bien été installée et exécutée (elle renvoie un jeton aléatoire et le compare) avant de confirmer le succès.

    Versions concernées

    CVE-2018-7600 affecte :

    • Drupal 7.x avant 7.58
    • Drupal 8.x avant 8.5.1 (également 8.3.x < 8.3.9 et 8.4.x < 8.4.6)

    Cette implémentation cible le vecteur Form API de Drupal 8 (le point de terminaison AJAX user/register). Drupal 7 est exploitable via un point de terminaison/payload différent et n'est pas traité ici.

    Les versions corrigées (7.58 / 8.5.1 et ultérieures) ne sont pas affectées.

    Prérequis

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

    Utilisation

    root@kitploit:~
    # commande unique
    python3 drupalgeddon2.py -u http://target/ -c id
    
    # pseudo-shell interactif
    python3 drupalgeddon2.py -u http://target/ --shell
    
    # déployer uniquement la coquille, n'exécuter rien
    python3 drupalgeddon2.py -u http://target/ --deploy-only
    
    # passer par Burp, ignorer le certificat auto-signé du proxy
    python3 drupalgeddon2.py -u http://target/ -c id --proxy http://127.0.0.1:8080 -k
    
    FlagDescription
    -u, --url(obligatoire) URL de base de la cible, p. ex. http://target/
    -c, --cmdCommande unique à exécuter sur la cible
    --shellOuvre un pseudo-shell interactif
    --deploy-onlyDéploie uniquement la coquille web, n'exécute rien
    --shell-nameNom de fichier de la coquille déployée (défaut : .php aléatoire)
    --paramNom du paramètre GET pour la coquille (défaut : md5 aléatoire)
    --proxyURL du proxy, p. ex. http://127.0.0.1:8080
    -k, --insecureDésactive la vérification TLS (pour les certificats proxy auto-signés)
    --timeoutDélai d'expiration par requête en secondes (défaut : 15)

    Comment ça marche

    CVE-2018-7600 est une défaillance de l'assainissement des entrées dans la Form API de Drupal. Drupal représente les formulaires sous forme de tableaux de rendu imbriqués, et les clés de tableau commençant par # sont traitées comme des propriétés de rendu spéciales plutôt que comme des données utilisateur. Le correctif (SA-CORE-2018-002) a ajouté un assainissement pour supprimer ces clés préfixées par # des entrées fournies par l'utilisateur.

    Avant ce correctif, un attaquant non authentifié pouvait injecter des propriétés de rendu dans un élément de formulaire traité par le gestionnaire AJAX de Drupal. La soumission de propriétés telles que :

    • #post_render — une liste de callables que Drupal invoque après le rendu, et
    • #markup — l'argument qui leur est passé

    contre l'élément mail du formulaire d'enregistrement utilisateur amène Drupal à appeler une fonction PHP arbitraire (ici, exec) avec une entrée contrôlée par l'attaquant pendant l'étape de rendu — c'est-à-dire une exécution de code à distance, sans authentification requise.

    Ce PoC utilise cette primitive pour encoder localement en base64 une coquille PHP d'une ligne, faire décoder ces données par le serveur dans un fichier à la racine web, puis interagir avec ce fichier via des requêtes GET normales.

    Détection et remédiation

    Si vous êtes du côté de la défense :

    Remédiation

    • Mettez à niveau vers Drupal 7.58 / 8.5.1 ou ultérieur (appliquer SA-CORE-2018-002). C'est le seul vrai correctif.
    • Si un correctif immédiat est impossible, l'équipe de sécurité Drupal a publié un correctif d'atténuation au moment de la divulgation — mais la mise à niveau est fortement recommandée.

    Idées de détection

    • Inspectez les corps de requêtes POST vers les points de terminaison de formulaire/AJAX pour y chercher des clés de tableau de rendu : #post_render, #markup, #type, #lazy_builder, etc. Les soumissions de formulaires légitimes n'en contiennent pas.
    • Signalez les requêtes vers …/user/register?element_parents=…&_wrapper_format=drupal_ajax transportant des paramètres suspects.
    • Corrélez un POST vers un point de terminaison AJAX de formulaire avec un GET ultérieur vers un fichier .php nouvellement créé dans la racine web.
    • Surveillez la création inattendue de fichiers dans la racine web Drupal, ainsi que les fichiers PHP courts à paramètre unique (coquilles system($_GET[...])).
    • Ces comportements sont simples à encoder en signatures Suricata/Snort ou en règles Sigma sur les journaux du serveur web.

    Crédits

    • PoC original et technique de base : Vitalii Rudnykh — a2u/CVE-2018-7600
    • Divulgation de la vulnérabilité : Drupal Security Team — SA-CORE-2018-002
    • Analyses techniques approfondies qui ont inspiré cette réécriture : les articles de recherche de Check Point et Ambionics sur Drupalgeddon2
    • Cette réécriture CLI : moi, avec l'assistance de l'IA (voir Note sur la paternité)

    Utilisation légale et responsable

    Cet outil est publié à des fins éducatives et pour des tests de sécurité autorisés — vos propres environnements de laboratoire, cibles HTB/CTF, ou systèmes pour lesquels vous disposez d'une autorisation écrite explicite. L'accès non autorisé à des systèmes informatiques est un crime en vertu de lois telles que le Computer Misuse Act 1990 du Royaume-Uni, le Computer Fraud and Abuse Act des États-Unis, et leurs équivalents ailleurs. Vous êtes seul responsable de l'usage que vous en faites. L'auteur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés.

    Licence

    MIT

    Télécharger l’outil