Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
droopescan — Uno scanner basato su plugin che aiuta i ricercatori di sicurezza a identificare problemi con diversi CMS, principalmente Drupal e Silverstripe. | Kitploit
Strumenti/GitHubGitHub/samjoan/droopescan
Scanner di VulnerabilitàRaccolta InformazioniSicurezza Web
GitHubsamjoan/droopescan

droopescan

Uno scanner basato su plugin che aiuta i ricercatori di sicurezza a identificare problemi con diversi CMS, principalmente Drupal e Silverstripe.

Vedi Repository
1.4k2742 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

droopescan

Build Status PyPI version AGPL license

Uno scanner basato su plugin che aiuta i ricercatori di sicurezza a identificare problemi in diversi CMS.

L'utilizzo di droopescan per attaccare target senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo programma. Si noti che, sebbene droopescan mostri la versione più probabile del CMS installata sul server remoto, qualsiasi correlazione tra numeri di versione e vulnerabilità deve essere effettuata manualmente dall'utente.

I CMS supportati sono:

  • SilverStripe
  • Wordpress
  • Drupal

Funzionalità parziale per:

  • Joomla (solo enumerazione versione e URL interessanti)
  • Moodle (plugin e tema molto limitati, attenzione)
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)

Puoi ottenere l'elenco completo delle opzioni eseguendo:

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

Perché non X?

Perché droopescan:

  • è veloce
  • è stabile
  • è aggiornato
  • consente la scansione simultanea di più siti
  • è 100% Python

Installazione

Con pip (raccomandato)

L'installazione è semplice usando pip:

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

Dai sorgenti

L'installazione manuale è la seguente:

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

Il ramo master corrisponde all'ultima release (quello che c'è in pypi). Il ramo development è instabile e tutte le pull request devono essere fatte contro di esso.

BlackArch

Installazione del pacchetto BlackArch (mantenuto da terze parti):

root@kitploit:~
sudo pacman -S droopescan

Docker

Puoi creare un'immagine Docker ed eseguire droopescan da Docker:

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
docker build -t droope/droopescan .
# display help
docker run --rm droope/droopescan
# example scanning a drupal site
docker run --rm droope/droopescan scan drupal -u https://drupal.example.com

Caratteristiche

Tipi di scansione

Droopescan mira ad essere il più accurato possibile per impostazione predefinita, senza sovraccaricare il server di destinazione a causa di richieste simultanee eccessive. Per questo motivo, per impostazione predefinita, viene effettuato un gran numero di richieste con quattro thread; puoi modificare queste impostazioni usando rispettivamente gli argomenti --number e --threads.

Questo strumento è in grado di eseguire quattro tipi di test. Per impostazione predefinita vengono eseguiti tutti i test, ma puoi specificare uno dei seguenti con il flag -e o --enumerate:

  • p -- Plugin checks: Esegue diverse migliaia di richieste HTTP e restituisce un elenco di tutti i plugin trovati installati nell'host di destinazione.
  • t -- Theme checks: Come sopra, ma per i temi.
  • v -- Version checks: Scarica diversi file e, basandosi sui checksum di questi file, restituisce un elenco di tutte le versioni possibili.
  • i -- Interesting url checks: Verifica la presenza di URL interessanti (pannelli di amministrazione, file readme, ecc.)

Specifica del target

Puoi specificare un host particolare da scansionare passando il parametro -u o --url:

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

Puoi anche omettere l'argomento drupal. Questo attiverà l'“identificazione del CMS”, in questo modo:

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

È possibile scansionare più URL utilizzando il parametro -U o --url-file. Questo parametro deve essere impostato sul percorso di un file che contiene un elenco di URL.

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

Il parametro drupal può anche essere omesso in questo esempio. Per ogni sito, verranno effettuate diverse richieste GET per eseguire l'identificazione del CMS e, se il sito viene considerato un CMS supportato, viene scansionato e aggiunto all'elenco di output. Questo può essere utile, ad esempio, per eseguire droopescan su tutti i siti della tua organizzazione.

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

Il blocco di codice sottostante contiene un esempio di elenco di URL, uno per riga:

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 file contenente URL e un valore per sovrascrivere l'header host predefinito separati da tabulazioni o spazi è accettabile anche per i file URL. Questo può essere utile quando si esegue una scansione su una vasta gamma di host e si desidera evitare query DNS inutili. Per chiarire, un esempio di seguito:

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

È molto allettante testare se lo scanner funziona per un particolare CMS scansionando il sito ufficiale (es. wordpress.org per wordpress), ma i siti ufficiali raramente eseguono installazioni vanilla dei rispettivi CMS o fanno cose non ortodosse. Ad esempio, wordpress.org esegue la versione bleeding edge di wordpress, che non verrà identificata come wordpress da droopescan perché i checksum non corrispondono a nessuna versione conosciuta di wordpress.

Autenticazione

L'applicazione supporta completamente i file .netrc e le variabili d'ambiente http_proxy.

Usa un file .netrc per l'autenticazione di base. Un esempio di file netrc (un file chiamato .netrc posizionato nella directory home dell'utente root) potrebbe assomigliare a questo:

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

Puoi impostare le variabili http_proxy e https_proxy. Queste ti permettono di impostare un proxy HTTP padre, nel quale puoi gestire tipi di autenticazione più complessi (es. 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

ATTENZIONE: Per progettazione, per consentire proxy di intercettazione e il test di applicazioni con SSL non valido, droopescan permette certificati autofirmati o comunque non validi. ˙ ͜ʟ˙

Output

Questa applicazione supporta sia l'“output standard”, pensato per il consumo umano, sia JSON, più adatto al consumo da parte di macchine. Questo output è stabile tra le versioni principali.

Questo può essere controllato con il flag --output. Un esempio di output JSON potrebbe essere il seguente (a meno dell'eccessivo spazio bianco):

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...]
    ]
  }
}

Alcuni attributi potrebbero mancare dall'oggetto JSON se parti della scansione non vengono eseguite.

Ecco come appare l'output multi-sito; ogni riga contiene un oggetto JSON valido come mostrato sopra.

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"]}}

Debug

Quando le cose non vanno esattamente come vorresti, puoi verificare il perché usando il comando --debug-requests.

Un output potrebbe assomigliare a questo:

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)

Esiste anche il parametro --debug che può essere utilizzato per eseguire il debug degli interni dell'applicazione.

Statistiche

Puoi ottenere un report aggiornato sulle capacità dello scanner eseguendo il seguente comando

root@kitploit:~
    droopescan stats

Un esempio di output potrebbe essere:

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.)

È importante verificare che l'ultima versione disponibile per l'installazione del CMS sia presente in droopescan, altrimenti i risultati potrebbero essere inaccurati.

Contribuisci

Crea il tuo plugin

Puoi aggiungere il supporto per il tuo CMS preferito. Il processo è in realtà abbastanza semplice e molte informazioni possono essere intuite visualizzando il file example.py nella cartella plugins/.

Questo file dovrebbe servire come base per la tua implementazione.

Puoi creare il tuo plugin per Joomla e abilitarlo come segue:

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

Devi quindi andare in plugins/joomla.py e cambiare alcune cose:

  • Il nome della classe deve essere Joomla.
  • L'etichetta del plugin (situata in Meta.label) deve essere cambiata in joomla.
  • Alla fine del file, la chiamata register deve essere modificata per riflettere il nome corretto della classe.
  • La funzione esposta, 'example', deve essere rinominata in joomla.
root@kitploit:~
    @controller.expose(help='example scanner')
    def joomla(self):
        self.plugin_init()

Dobbiamo anche cambiare il file plugins.d/joomla.conf e modificarlo come segue:

root@kitploit:~
[joomla]
enable_plugin = true

Ora dovremmo essere in uno stato che assomiglia a questo:

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

Il tuo passo successivo sarebbe generare una wordlist di plugin valida, una wordlist di temi valida, un file versions.xml e, opzionalmente, un elenco di URL interessanti, oltre a sostituire tutte le variabili che sono in joomla.py con valori corretti per la tua implementazione.

Il plugin deve aggiornarsi automaticamente affinché una pull request venga accettata. Ulteriore documentazione potrebbe essere resa disponibile in seguito, ma per ora tieni presente che devono essere implementate le funzioni update_version_check, update_version, update_plugins_check e update_plugins. Per riferimento, consulta il file drupal.py. Questo è necessario per garantire che i plugin siano mantenuti aggiornati.

Issues e Pull Requests

Le pull request che creano nuovi plugin sono benvenute, a condizione che la manutenzione di tali plugin sia effettuata automaticamente.

Ricorda di fare le tue pull request contro il ramo development piuttosto che master. Le segnalazioni possono essere fatte sul tracker delle issue qui su GitHub.

Per eseguire i test, è necessario installare alcune dipendenze. Eseguire i seguenti comandi le installerà e farà partire i test:

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

Puoi eseguire singoli test con il flag -s.

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

Licenza

Il progetto è concesso in licenza AGPL. Vedi il file LICENSE.

Scarica lo strumento