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
droopescan — Un scanner basé sur des plugins qui aide les chercheurs en sécurité à identifier des problèmes sur plusieurs CMS, principalement Drupal et Silverstripe. | Kitploit
Outils/GitHubGitHub/samjoan/droopescan
Scanners de VulnérabilitésCollecte d'InformationsSécurité Web
GitHubsamjoan/droopescan

droopescan

Un scanner basé sur des plugins qui aide les chercheurs en sécurité à identifier des problèmes sur plusieurs CMS, principalement Drupal et Silverstripe.

Voir le dépôt
1.4k274il y a 2 ansVérifié par Kitploit

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

droopescan

Build Status PyPI version AGPL license

Un scanner basé sur des plugins qui aide les chercheurs en sécurité à identifier des problèmes avec plusieurs CMS.

L'utilisation de droopescan pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, étatiques et fédérales applicables. Les développeurs n'assument aucune responsabilité et ne sont pas responsables des abus ou dommages causés par ce programme. Veuillez noter que bien que droopescan produise la version la plus probable du CMS installée sur l'hôte distant, toute corrélation entre les numéros de version et les vulnérabilités doit être effectuée manuellement par l'utilisateur.

Les CMS supportés sont :

  • SilverStripe
  • Wordpress
  • Drupal

Fonctionnalité partielle pour :

  • Joomla (énumération de version et URLs intéressantes uniquement)
  • Moodle (plugin et thème très limités, attention)
root@kitploit:~
computer:~/droopescan$ droopescan scan drupal -u http://example.org/ -t 32
[+] No themes found.

[+] Possible interesting urls found:
    Default changelog file - https://www.example.org/CHANGELOG.txt
    Default admin - https://www.example.org/user/login

[+] Possible version(s):
    7.34

[+] Plugins found:
    views https://www.example.org/sites/all/modules/views/
        https://www.example.org/sites/all/modules/views/README.txt
        https://www.example.org/sites/all/modules/views/LICENSE.txt
    token https://www.example.org/sites/all/modules/token/
        https://www.example.org/sites/all/modules/token/README.txt
        https://www.example.org/sites/all/modules/token/LICENSE.txt
    pathauto https://www.example.org/sites/all/modules/pathauto/
        https://www.example.org/sites/all/modules/pathauto/README.txt
        https://www.example.org/sites/all/modules/pathauto/LICENSE.txt
        https://www.example.org/sites/all/modules/pathauto/API.txt
    libraries https://www.example.org/sites/all/modules/libraries/
        https://www.example.org/sites/all/modules/libraries/CHANGELOG.txt
        https://www.example.org/sites/all/modules/libraries/README.txt
        https://www.example.org/sites/all/modules/libraries/LICENSE.txt
    entity https://www.example.org/sites/all/modules/entity/
        https://www.example.org/sites/all/modules/entity/README.txt
        https://www.example.org/sites/all/modules/entity/LICENSE.txt
    google_analytics https://www.example.org/sites/all/modules/google_analytics/
        https://www.example.org/sites/all/modules/google_analytics/README.txt
        https://www.example.org/sites/all/modules/google_analytics/LICENSE.txt
    ctools https://www.example.org/sites/all/modules/ctools/
        https://www.example.org/sites/all/modules/ctools/CHANGELOG.txt
        https://www.example.org/sites/all/modules/ctools/LICENSE.txt
        https://www.example.org/sites/all/modules/ctools/API.txt
    features https://www.example.org/sites/all/modules/features/
        https://www.example.org/sites/all/modules/features/CHANGELOG.txt
        https://www.example.org/sites/all/modules/features/README.txt
        https://www.example.org/sites/all/modules/features/LICENSE.txt
        https://www.example.org/sites/all/modules/features/API.txt
    [... snip for README ...]

[+] Scan finished (0:04:59.502427 elapsed)

Vous pouvez obtenir une liste complète des options en exécutant :

root@kitploit:~
droopescan --help
droopescan scan --help

Pourquoi pas X ?

Parce que droopescan :

  • est rapide
  • est stable
  • est à jour
  • permet le scan simultané de plusieurs sites
  • est 100% python

Installation

Avec pip (recommandé)

L'installation est facile avec pip :

root@kitploit:~
apt-get install python-pip
pip install droopescan

Depuis les sources

L'installation manuelle est la suivante :

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
pip install -r requirements.txt
./droopescan scan --help

La branche master correspond à la dernière version (ce qui est dans pypi). La branche de développement est instable et toutes les pull requests doivent lui être adressées.

BlackArch

Installation du package BlackArch (maintenu par un tiers) :

root@kitploit:~
sudo pacman -S droopescan

Docker

Vous pouvez construire une image docker et exécuter droopescan depuis Docker :

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
docker build -t droope/droopescan .
# affichage de l'aide
docker run --rm droope/droopescan
# exemple de scan d'un site drupal
docker run --rm droope/droopescan scan drupal -u https://drupal.example.com

Fonctionnalités

Types de scan

Droopescan vise à être le plus précis par défaut, tout en ne surchargeant pas le serveur cible en raison de requêtes concurrentes excessives. Pour cette raison, par défaut, un grand nombre de requêtes seront effectuées avec quatre threads ; modifiez ces paramètres en utilisant respectivement les arguments --number et --threads.

Cet outil est capable d'effectuer quatre types de tests. Par défaut, tous les tests sont exécutés, mais vous pouvez spécifier l'un des suivants avec l'option -e ou --enumerate :

  • p -- Vérifications des plugins : Effectue plusieurs milliers de requêtes HTTP et retourne une liste de tous les plugins installés sur l'hôte cible.
  • t -- Vérifications des thèmes : Comme ci-dessus, mais pour les thèmes.
  • v -- Vérifications de version : Télécharge plusieurs fichiers et, en fonction des sommes de contrôle de ces fichiers, retourne une liste de toutes les versions possibles.
  • i -- Vérifications d'URLs intéressantes : Vérifie la présence d'URLs intéressantes (panneaux d'administration, fichiers readme, etc.)

Spécification de la cible

Vous pouvez spécifier un hôte particulier à scanner en passant le paramètre -u ou --url :

root@kitploit:~
    droopescan scan drupal -u example.org

Vous pouvez aussi omettre l'argument drupal. Cela déclenchera « l'identification CMS », comme ceci :

root@kitploit:~
    droopescan scan -u example.org

Plusieurs URLs peuvent être scannées en utilisant le paramètre -U ou --url-file. Ce paramètre doit être défini sur le chemin d'un fichier contenant une liste d'URLs.

root@kitploit:~
    droopescan scan drupal -U list_of_urls.txt

Le paramètre drupal peut également être omis dans cet exemple. Pour chaque site, il effectuera plusieurs requêtes GET afin de réaliser l'identification CMS, et si le site est considéré comme un CMS supporté, il est scanné et ajouté à la liste de sortie. Cela peut être utile, par exemple, pour exécuter droopescan sur tous les sites de votre organisation.

root@kitploit:~
    droopescan scan -U list_of_urls.txt

Le bloc de code ci-dessous contient un exemple de liste d'URLs, une par ligne :

root@kitploit:~
http://localhost/drupal/6.0/
http://localhost/drupal/6.1/
http://localhost/drupal/6.10/
http://localhost/drupal/6.11/
http://localhost/drupal/6.12/

Un fichier contenant des URLs et une valeur pour remplacer l'en-tête de l'hôte par défaut, séparés par des tabulations ou des espaces, est également acceptable pour les fichiers d'URLs. Cela peut être pratique lors d'un scan sur une large gamme d'hôtes et que vous souhaitez éviter des requêtes DNS inutiles. Pour clarifier, un exemple ci-dessous :

root@kitploit:~
192.168.1.1	example.org
http://192.168.1.1/	example.org
http://192.168.1.2/drupal/	example.org

Il est assez tentant de tester si le scanner fonctionne pour un CMS particulier en scannant le site officiel (par exemple wordpress.org pour wordpress), mais les sites officiels exécutent rarement des installations vanilles de leur CMS respectif ou font des choses peu orthodoxes. Par exemple, wordpress.org exécute la version de pointe de wordpress, qui ne sera pas identifiée comme wordpress par droopescan car les sommes de contrôle ne correspondent à aucune version connue de wordpress.

Authentification

L'application supporte pleinement les fichiers .netrc et les variables d'environnement http_proxy.

Utilisez un fichier .netrc pour l'authentification de base. Un exemple de fichier netrc (un fichier nommé .netrc placé dans votre répertoire personnel racine) pourrait ressembler à ceci :

root@kitploit:~
machine secret.google.com
    login [email protected]
    password Winter01

Vous pouvez définir les variables http_proxy et https_proxy. Celles-ci vous permettent de définir un proxy HTTP parent, dans lequel vous pouvez gérer des types d'authentification plus complexes (par exemple Fiddler, ZAP, Burp)

root@kitploit:~
export http_proxy='user:password@localhost:8080'
export https_proxy='user:password@localhost:8080'
droopescan scan drupal --url http://localhost/drupal

ATTENTION : Par conception, pour permettre les proxies d'interception et les tests d'applications avec un mauvais SSL, droopescan autorise les certificats auto-signés ou autrement invalides. ˙ ͜ʟ˙

Sortie

Cette application supporte à la fois la « sortie standard », destinée à la consommation humaine, ou le JSON, qui est plus adapté à la consommation machine. Cette sortie est stable entre les versions majeures.

Cela peut être contrôlé avec l'option --output. Un exemple de sortie JSON ressemblerait à ceci (sans les espaces excessifs) :

root@kitploit:~
{
  "themes": {
    "is_empty": true,
    "finds": [

    ]
  },
  "interesting urls": {
    "is_empty": false,
    "finds": [
      {
        "url": "https:\/\/www.drupal.org\/CHANGELOG.txt",
        "description": "Default changelog file."
      },
      {
        "url": "https:\/\/www.drupal.org\/user\/login",
        "description": "Default admin."
      }
    ]
  },
  "version": {
    "is_empty": false,
    "finds": [
      "7.29",
      "7.30",
      "7.31"
    ]
  },
  "plugins": {
    "is_empty": false,
    "finds": [
      {
        "url": "https:\/\/www.drupal.org\/sites\/all\/modules\/views\/",
        "name": "views"
      },
      [...snip...]
    ]
  }
}

Certains attributs peuvent manquer dans l'objet JSON si des parties du scan ne sont pas exécutées.

Voici à quoi ressemble la sortie multi-site ; chaque ligne contient un objet JSON valide comme montré ci-dessus.

root@kitploit:~
    $ droopescan scan drupal -U six_and_above.txt -e v
    {"host": "http://localhost/drupal-7.6/", "version": {"is_empty": false, "finds": ["7.6"]}}
    {"host": "http://localhost/drupal-7.7/", "version": {"is_empty": false, "finds": ["7.7"]}}
    {"host": "http://localhost/drupal-7.8/", "version": {"is_empty": false, "finds": ["7.8"]}}
    {"host": "http://localhost/drupal-7.9/", "version": {"is_empty": false, "finds": ["7.9"]}}
    {"host": "http://localhost/drupal-7.10/", "version": {"is_empty": false, "finds": ["7.10"]}}
    {"host": "http://localhost/drupal-7.11/", "version": {"is_empty": false, "finds": ["7.11"]}}
    {"host": "http://localhost/drupal-7.12/", "version": {"is_empty": false, "finds": ["7.12"]}}
    {"host": "http://localhost/drupal-7.13/", "version": {"is_empty": false, "finds": ["7.13"]}}
    {"host": "http://localhost/drupal-7.14/", "version": {"is_empty": false, "finds": ["7.14"]}}
    {"host": "http://localhost/drupal-7.15/", "version": {"is_empty": false, "finds": ["7.15"]}}
    {"host": "http://localhost/drupal-7.16/", "version": {"is_empty": false, "finds": ["7.16"]}}
    {"host": "http://localhost/drupal-7.17/", "version": {"is_empty": false, "finds": ["7.17"]}}
    {"host": "http://localhost/drupal-7.18/", "version": {"is_empty": false, "finds": ["7.18"]}}
    {"host": "http://localhost/drupal-7.19/", "version": {"is_empty": false, "finds": ["7.19"]}}
    {"host": "http://localhost/drupal-7.20/", "version": {"is_empty": false, "finds": ["7.20"]}}
    {"host": "http://localhost/drupal-7.21/", "version": {"is_empty": false, "finds": ["7.21"]}}
    {"host": "http://localhost/drupal-7.22/", "version": {"is_empty": false, "finds": ["7.22"]}}
    {"host": "http://localhost/drupal-7.23/", "version": {"is_empty": false, "finds": ["7.23"]}}
    {"host": "http://localhost/drupal-7.24/", "version": {"is_empty": false, "finds": ["7.24"]}}
    {"host": "http://localhost/drupal-7.25/", "version": {"is_empty": false, "finds": ["7.25"]}}
    {"host": "http://localhost/drupal-7.26/", "version": {"is_empty": false, "finds": ["7.26"]}}
    {"host": "http://localhost/drupal-7.27/", "version": {"is_empty": false, "finds": ["7.27"]}}
    {"host": "http://localhost/drupal-7.28/", "version": {"is_empty": false, "finds": ["7.28"]}}
    {"host": "http://localhost/drupal-7.29/", "version": {"is_empty": false, "finds": ["7.29"]}}
    {"host": "http://localhost/drupal-7.30/", "version": {"is_empty": false, "finds": ["7.30"]}}
    {"host": "http://localhost/drupal-7.31/", "version": {"is_empty": false, "finds": ["7.31"]}}
    {"host": "http://localhost/drupal-7.32/", "version": {"is_empty": false, "finds": ["7.32"]}}
    {"host": "http://localhost/drupal-7.33/", "version": {"is_empty": false, "finds": ["7.33"]}}
    {"host": "http://localhost/drupal-7.34/", "version": {"is_empty": false, "finds": ["7.34"]}}

Débogage

Quand les choses ne se passent pas exactement comme vous le souhaitez, vous pouvez vérifier pourquoi en utilisant la commande --debug-requests.

Une sortie pourrait ressembler à ceci :

root@kitploit:~
computer:~/droopescan# droopescan scan silverstripe -u http://localhost -n 10 -e p --debug-requests
[head] http://localhost/framework/... 403
[head] http://localhost/cms/css/layout.css... 404
[head] http://localhost/framework/css/UploadField.css... 200
[head] http://localhost/misc/test/error/404/ispresent.html... 404
[head] http://localhost/widgetextensions/... 404
[head] http://localhost/orbit/... 404
[head] http://localhost/sitemap/... 404
[head] http://localhost/simplestspam/... 404
[head] http://localhost/ecommerce_modifier_example/... 404
[head] http://localhost/silverstripe-hashpath/... 404
[head] http://localhost/timeline/... 404
[head] http://localhost/silverstripe-hiddenfields/... 404
[head] http://localhost/addressable/... 404
[head] http://localhost/silverstripe-description/... 404
[+] No plugins found.

[+] Scan finished (0:00:00.058422 elapsed)

Le paramètre --debug existe également et peut être utilisé pour déboguer les internes de l'application.

Statistiques

Vous pouvez obtenir un rapport à jour sur les capacités du scanner en exécutant la commande suivante :

root@kitploit:~
    droopescan stats

Un exemple de sortie pourrait ressembler à ceci :

root@kitploit:~
Functionality available for ‘drupal’:
- Enumerate plugins (XXXX plugins.)
- Enumerate themes (XXXX themes.)
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.X-alphaXX, X.XX, X.XX.)
Functionality available for ‘joomla’:
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version XX.X, X.X.X, X.X.XX.rcX.)
Functionality available for ‘wordpress’:
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.X, X.X.X, X.X.X.)
Functionality available for ‘silverstripe’:
- Enumerate plugins (XXX plugins.)
- Enumerate themes (XX themes.)
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.XX, X.X.XX, X.X.XX.)

Il est important de vérifier que la dernière version disponible pour l'installation CMS est disponible dans droopescan, car sinon les résultats peuvent être inexacts.

Contribuer

Créer votre propre plugin

Vous pouvez ajouter le support de votre CMS préféré. Le processus est en fait assez simple, et beaucoup d'informations peuvent être aperçues en consultant le fichier example.py dans le dossier plugins/.

Ce fichier devrait bien servir de base pour votre implémentation.

Vous pouvez créer votre propre plugin pour Joomla et l'activer comme suit :

root@kitploit:~
$ cp plugins/example.py plugins/joomla.py
$ cp plugins.d/example.conf plugins.d/joomla.conf

Vous devez ensuite aller dans plugins/joomla.py et modifier quelques éléments :

  • Le nom de la classe doit être Joomla.
  • Le label du plugin (situé dans Meta.label) doit être changé en joomla.
  • À la fin du fichier, l'appel à register doit être modifié pour refléter le nom de classe correct.
  • La fonction exposée, 'example', doit être renommée en joomla.
root@kitploit:~
    @controller.expose(help='example scanner')
    def joomla(self):
        self.plugin_init()

Nous devons également modifier le fichier plugins.d/joomla.conf et le changer en ceci :

root@kitploit:~
[joomla]
enable_plugin = true

Nous devrions maintenant être dans un état qui ressemble à ceci :

root@kitploit:~
$ droopescan scan joomla
[+] --url parameter is required.

Votre prochaine étape serait de générer une wordlist de plugins valide, une wordlist de thèmes valide, un fichier versions.xml, et optionnellement une liste d'URLs intéressantes, ainsi que remplacer toutes les variables qui sont dans joomla.py par des valeurs correctes pour votre implémentation.

Le plugin doit se mettre à jour automatiquement pour qu'une pull request soit acceptée. Une documentation supplémentaire pourra être fournie plus tard, mais pour l'instant, gardez à l'esprit que les fonctions update_version_check, update_version, update_plugins_check et update_plugins doivent être implémentées. Pour référence, veuillez consulter le fichier drupal.py. Ceci est nécessaire pour garantir que les plugins restent à jour.

Problèmes et Pull Requests

Les pull requests qui créent de nouveaux plugins sont les bienvenues à condition que la maintenance de ces plugins soit faite automatiquement.

N'oubliez pas de faire vos pull requests contre la branche de développement plutôt que master. Les problèmes peuvent être soulevés sur le tracker de problèmes ici sur GitHub.

Pour exécuter les tests, certaines dépendances doivent être installées. L'exécution des commandes suivantes entraînera leur installation et l'exécution des tests :

root@kitploit:~
    apt-get install libxslt1-dev libxml2-dev zlib1g-dev python python-pip python-dev python3 python3-pip python3-dev
    pip install -r requirements.txt -r requirements_test.txt
    pip3 install -r requirements.txt -r requirements_test.txt
    ./droopescan test

Vous pouvez exécuter des tests individuels avec l'option -s.

root@kitploit:~
./droopescan test -s test_integration_drupal

Licence

Le projet est sous licence AGPL. Voir le fichier LICENSE.

Télécharger l’outil