Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
droopescan — Um scanner baseado em plugins que auxilia pesquisadores de segurança a identificar problemas em vários CMSs, principalmente Drupal e Silverstripe. | Kitploit
Ferramentas/GitHubGitHub/samjoan/droopescan
Scanners de VulnerabilidadesColeta de InformaçõesSegurança Web
GitHubsamjoan/droopescan

droopescan

Um scanner baseado em plugins que auxilia pesquisadores de segurança a identificar problemas em vários CMSs, principalmente Drupal e Silverstripe.

Ver Repositório
1.4k274há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

droopescan

Build Status PyPI version AGPL license

Um scanner baseado em plugins que auxilia pesquisadores de segurança a identificar problemas em vários CMS.

O uso do droopescan para atacar alvos sem consentimento mútuo prévio é ilegal. É responsabilidade do usuário final obedecer todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este programa. Observe que, embora o droopescan produza a versão mais provável do CMS instalada no host remoto, qualquer correlação entre números de versão e vulnerabilidades deve ser feita manualmente pelo usuário.

CMS suportados são:

  • SilverStripe
  • Wordpress
  • Drupal

Funcionalidade parcial para:

  • Joomla (apenas enumeração de versão e URLs interessantes)
  • Moodle (plugin e tema muito limitados, cuidado)
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)

Você pode obter uma lista completa de opções executando:

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

Por que não X?

Porque o droopescan:

  • é rápido
  • é estável
  • está atualizado
  • permite escaneamento simultâneo de vários sites
  • é 100% Python

Instalação

Com pip (recomendado)

A instalação é fácil usando pip:

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

A partir das fontes

A instalação manual é a seguinte:

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

O branch master corresponde à última versão (o que está no pypi). O branch de desenvolvimento é instável e todos os pull requests devem ser feitos contra ele.

BlackArch

Instalação do pacote BlackArch (mantido por terceiros):

root@kitploit:~
sudo pacman -S droopescan

Docker

Você pode construir uma imagem docker e executar o droopescan a partir do Docker:

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
docker build -t droope/droopescan .
# exibir ajuda
docker run --rm droope/droopescan
# exemplo escaneando um site drupal
docker run --rm droope/droopescan scan drupal -u https://drupal.example.com

Funcionalidades

Tipos de escaneamento

O Droopescan visa ser o mais preciso por padrão, sem sobrecarregar o servidor alvo devido a requisições concorrentes excessivas. Devido a isso, por padrão, um grande número de requisições será feito com quatro threads; altere essas configurações usando os argumentos --number e --threads, respectivamente.

Esta ferramenta é capaz de realizar quatro tipos de testes. Por padrão, todos os testes são executados, mas você pode especificar um dos seguintes com a flag -e ou --enumerate:

  • p -- Verificação de plugins: Realiza vários milhares de requisições HTTP e retorna uma lista de todos os plugins encontrados instalados no host alvo.
  • t -- Verificação de temas: Como acima, mas para temas.
  • v -- Verificação de versão: Baixa vários arquivos e, com base nas somas de verificação desses arquivos, retorna uma lista de todas as versões possíveis.
  • i -- Verificação de URLs interessantes: Verifica URLs interessantes (painéis de admin, arquivos readme, etc.)

Especificação do alvo

Você pode especificar um host específico para escanear passando o parâmetro -u ou --url:

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

Você também pode omitir o argumento drupal. Isso acionará a “identificação do CMS”, da seguinte forma:

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

Várias URLs podem ser escaneadas utilizando o parâmetro -U ou --url-file. Este parâmetro deve ser definido como o caminho de um arquivo que contém uma lista de URLs.

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

O parâmetro drupal também pode ser omitido neste exemplo. Para cada site, serão feitas várias requisições GET para realizar a identificação do CMS, e se o site for considerado um CMS suportado, ele é escaneado e adicionado à lista de saída. Isso pode ser útil, por exemplo, para executar o droopescan em todos os sites da sua organização.

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

O bloco de código abaixo contém um exemplo de lista de URLs, uma por linha:

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/

Um arquivo contendo URLs e um valor para substituir o cabeçalho de host padrão, separados por tabulações ou espaços, também é aceitável para arquivos de URL. Isso pode ser útil ao realizar um escaneamento em uma grande faixa de hosts e você deseja evitar consultas DNS desnecessárias. Para esclarecer, um exemplo abaixo:

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

É bastante tentador testar se o scanner funciona para um CMS específico escaneando o site oficial (por exemplo, wordpress.org para wordpress), mas os sites oficiais raramente executam instalações puras de seus respectivos CMS ou fazem coisas não ortodoxas. Por exemplo, wordpress.org executa a versão bleeding edge do wordpress, que não será identificada como wordpress pelo droopescan porque as somas de verificação não correspondem a nenhuma versão conhecida do wordpress.

Autenticação

O aplicativo suporta totalmente arquivos .netrc e variáveis de ambiente http_proxy.

Use um arquivo .netrc para autenticação básica. Um arquivo netrc de exemplo (um arquivo chamado .netrc colocado no diretório home do seu root) poderia ser assim:

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

Você pode definir as variáveis http_proxy e https_proxy. Elas permitem definir um proxy HTTP pai, no qual você pode lidar com tipos mais complexos de autenticação (por exemplo, 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

AVISO: Por design, para permitir proxies de interceptação e o teste de aplicações com SSL ruim, o droopescan permite certificados auto-assinados ou inválidos. ˙ ͜ʟ˙

Saída

Este aplicativo suporta tanto a "saída padrão", destinada ao consumo humano, quanto JSON, que é mais adequada para consumo por máquinas. Esta saída é estável entre versões principais.

Isso pode ser controlado com a flag --output. Um exemplo de saída JSON seria o seguinte (sem o excesso de espaços em branco):

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

Alguns atributos podem estar faltando no objeto JSON se partes do escaneamento não forem executadas.

É assim que a saída multi-site se parece; cada linha contém um objeto JSON válido, como mostrado acima.

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

Depuração

Quando as coisas não estão saindo exatamente como você espera, você pode verificar o motivo usando o comando --debug-requests.

Alguma saída pode ser assim:

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)

O parâmetro --debug também existe e pode ser usado para depurar os internos do aplicativo.

Estatísticas

Você pode obter um relatório atualizado sobre as capacidades do scanner executando o seguinte comando

root@kitploit:~
    droopescan stats

Alguma saída de exemplo pode ser assim:

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 verificar se a versão mais recente disponível para a instalação do CMS está disponível dentro do droopescan, caso contrário, os resultados podem ser imprecisos.

Contribuir

Crie seu próprio plugin

Você pode adicionar suporte para o seu CMS favorito. O processo é realmente bastante simples, e muitas informações podem ser vislumbradas visualizando o arquivo example.py na pasta plugins/.

Este arquivo deve servir bem como base para sua implementação.

Você pode criar seu próprio plugin para Joomla e habilitá-lo da seguinte forma:

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

Você então precisa ir para plugins/joomla.py e alterar algumas coisas:

  • O nome da classe precisa ser Joomla.
  • O rótulo do plugin (localizado em Meta.label) precisa ser alterado para joomla.
  • No final do arquivo, a chamada de registro precisa ser modificada para refletir o nome correto da classe.
  • A função exposta, 'example', precisa ser renomeada para joomla.
root@kitploit:~
    @controller.expose(help='example scanner')
    def joomla(self):
        self.plugin_init()

Também precisamos alterar o arquivo plugins.d/joomla.conf e alterá-lo para o seguinte:

root@kitploit:~
[joomla]
enable_plugin = true

Agora devemos estar em um estado que se parece com o seguinte:

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

Seu próximo passo seria gerar uma wordlist de plugins válida, uma wordlist de temas válida, um arquivo versions.xml, e opcionalmente uma lista de URLs interessantes, bem como substituir todas as variáveis que estão em joomla.py por valores corretos para sua implementação.

O plugin precisa ser atualizado automaticamente para que um pull request seja aceito. Mais documentação pode ser disponibilizada posteriormente, mas por enquanto, lembre-se de que os métodos update_version_check, update_version, update_plugins_check e update_plugins precisam ser implementados. Para referência, revise o arquivo drupal.py. Isso é necessário para garantir que os plugins sejam mantidos atualizados.

Issues e Pull Requests

Pull requests que criam novos plugins são bem-vindos, desde que a manutenção desses plugins seja feita automaticamente.

Por favor, lembre-se de fazer seus pull requests contra o branch de desenvolvimento ao invés do master. Issues podem ser abertas no rastreador de issues aqui no GitHub.

Para executar os testes, algumas dependências devem ser instaladas. Executar os seguintes comandos resultará na instalação delas e na execução dos testes:

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

Você pode executar testes individuais com a flag -s.

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

Licença

O projeto é licenciado sob a licença AGPL. Consulte o arquivo LICENSE.

Baixar ferramenta