Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
droopescan — Un escáner basado en plugins que ayuda a los investigadores de seguridad a identificar problemas en varios CMS, principalmente Drupal y Silverstripe. | Kitploit
Herramientas/GitHubGitHub/samjoan/droopescan
Escáneres de VulnerabilidadesRecopilación de InformaciónSeguridad Web
GitHubsamjoan/droopescan

droopescan

Un escáner basado en plugins que ayuda a los investigadores de seguridad a identificar problemas en varios CMS, principalmente Drupal y Silverstripe.

Ver Repositorio
1.4k274hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

droopescan

Build Status PyPI version AGPL license

Un escáner basado en plugins que ayuda a los investigadores de seguridad a identificar problemas en varios CMS.

El uso de droopescan para atacar objetivos sin consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no se hacen responsables por el uso indebido o daños causados por este programa. Tenga en cuenta que, aunque droopescan muestra la versión más probable del CMS instalado en el host remoto, cualquier correlación entre los números de versión y las vulnerabilidades debe realizarse manualmente por el usuario.

Los CMS compatibles son:

  • SilverStripe
  • Wordpress
  • Drupal

Funcionalidad parcial para:

  • Joomla (solo enumeración de versiones y URLs interesantes)
  • Moodle (plugin y tema muy 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)

Puede obtener una lista completa de opciones ejecutando:

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

¿Por qué no X?

Porque droopescan:

  • es rápido
  • es estable
  • está actualizado
  • permite el escaneo simultáneo de múltiples sitios
  • es 100% python

Instalación

Con pip (recomendado)

La instalación es fácil usando pip:

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

Desde las fuentes

La instalación manual es la siguiente:

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

La rama master corresponde a la última versión (lo que está en pypi). La rama de desarrollo es inestable y todas las pull requests deben hacerse contra ella.

BlackArch

Instalación del paquete de BlackArch (mantenido por un tercero):

root@kitploit:~
sudo pacman -S droopescan

Docker

Puede construir una imagen docker y ejecutar droopescan desde Docker:

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
docker build -t droope/droopescan .
# mostrar ayuda
docker run --rm droope/droopescan
# ejemplo escaneando un sitio drupal
docker run --rm droope/droopescan scan drupal -u https://drupal.example.com

Características

Tipos de escaneo

Droopescan aspira a ser lo más preciso por defecto, sin sobrecargar el servidor objetivo debido a peticiones concurrentes excesivas. Debido a esto, por defecto, se realizará un gran número de peticiones con cuatro hilos; cambie esta configuración usando los argumentos --number y --threads respectivamente.

Esta herramienta es capaz de realizar cuatro tipos de pruebas. Por defecto se ejecutan todas las pruebas, pero puede especificar una de las siguientes con la bandera -e o --enumerate:

  • p -- Comprobaciones de plugins: Realiza varios miles de peticiones HTTP y devuelve una lista de todos los plugins encontrados instalados en el host objetivo.
  • t -- Comprobaciones de temas: Como arriba, pero para temas.
  • v -- Comprobaciones de versión: Descarga varios archivos y, basándose en las sumas de verificación de estos archivos, devuelve una lista de todas las versiones posibles.
  • i -- Comprobaciones de URLs interesantes: Busca URLs interesantes (paneles de administración, archivos readme, etc.)

Especificación del objetivo

Puede especificar un host particular para escanear pasando el parámetro -u o --url:

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

También puede omitir el argumento drupal. Esto activará la "identificación del CMS", así:

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

Se pueden escanear múltiples URLs utilizando el parámetro -U o --url-file. Este parámetro debe establecerse en la ruta de un archivo que contenga una lista de URLs.

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

El parámetro drupal también puede omitirse en este ejemplo. Para cada sitio, realizará varias peticiones GET para realizar la identificación del CMS, y si se considera que el sitio es un CMS compatible, se escanea y se añade a la lista de salida. Esto puede ser útil, por ejemplo, para ejecutar droopescan en todos los sitios de su organización.

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

El bloque de código a continuación contiene un ejemplo de lista de URLs, una por línea:

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 archivo que contiene URLs y un valor para sobrescribir el encabezado de host predeterminado separados por tabulaciones o espacios también es válido para archivos de URL. Esto puede ser útil cuando se realiza un escaneo a través de un gran rango de hosts y se desea evitar consultas DNS innecesarias. Para aclarar, un ejemplo a continuación:

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

Es bastante tentador probar si el escáner funciona para un CMS particular escaneando el sitio oficial (por ejemplo, wordpress.org para wordpress), pero los sitios oficiales rara vez ejecutan instalaciones vainilla de sus respectivos CMS o hacen cosas poco ortodoxas. Por ejemplo, wordpress.org ejecuta la versión más reciente de wordpress, que no será identificada como wordpress por droopescan en absoluto porque las sumas de verificación no coinciden con ninguna versión conocida de wordpress.

Autenticación

La aplicación soporta completamente archivos .netrc y variables de entorno http_proxy.

Use un archivo .netrc para autenticación básica. Un ejemplo de archivo netrc (un archivo llamado .netrc colocado en su directorio home de root) podría verse así:

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

Puede establecer las variables http_proxy y https_proxy. Estas le permiten configurar un proxy HTTP padre, en el que puede manejar tipos más complejos de autenticación (por ejemplo, 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

ADVERTENCIA: Por diseño, para permitir proxies de intercepción y la prueba de aplicaciones con SSL malo, droopescan permite certificados autofirmados o de otro modo inválidos. ˙ ͜ʟ˙

Salida

Esta aplicación soporta tanto "salida estándar", destinada al consumo humano, como JSON, que es más adecuado para el consumo por máquinas. Esta salida es estable entre versiones mayores.

Esto se puede controlar con la bandera --output. Un ejemplo de salida JSON se vería así (sin el exceso de espacios en blanco):

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

Algunos atributos pueden faltar en el objeto JSON si partes del escaneo no se ejecutan.

Así es como se ve la salida de múltiples sitios; cada línea contiene un objeto JSON válido como se muestra arriba.

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

Depuración

Cuando las cosas no van exactamente como desea, puede verificar por qué usando el comando --debug-requests.

Alguna salida podría verse así:

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)

El parámetro --debug también existe y puede usarse para depurar los internos de la aplicación.

Estadísticas

Puede obtener un informe actualizado sobre las capacidades del escáner ejecutando el siguiente comando

root@kitploit:~
    droopescan stats

Alguna salida de ejemplo podría verse así:

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

Es importante verificar que la última versión disponible para la instalación del CMS esté disponible dentro de droopescan, ya que de lo contrario los resultados pueden ser inexactos.

Contribuir

Cree su propio plugin

Puede añadir soporte para su CMS favorito. El proceso es realmente bastante simple, y se puede obtener mucha información viendo el archivo example.py en la carpeta plugins/.

Este archivo debería servir bien como base para su implementación.

Puede crear su propio plugin para Joomla y habilitarlo de la siguiente manera:

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

Luego necesita ir a plugins/joomla.py y cambiar algunas cosas:

  • El nombre de la clase debe ser Joomla.
  • La etiqueta del plugin (ubicada en Meta.label) debe cambiarse a joomla.
  • Al final del archivo, la llamada register debe modificarse para reflejar el nombre de clase correcto.
  • La función expuesta, 'example', debe renombrarse a joomla.
root@kitploit:~
    @controller.expose(help='example scanner')
    def joomla(self):
        self.plugin_init()

También necesitamos cambiar el archivo plugins.d/joomla.conf, y cambiarlo a lo siguiente:

root@kitploit:~
[joomla]
enable_plugin = true

Ahora deberíamos estar en un estado que se vea así:

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

Su siguiente paso sería generar una lista de palabras de plugin válida, una lista de temas válida, un archivo versions.xml y opcionalmente una lista de URLs interesantes, así como reemplazar todas las variables que están en joomla.py con valores correctos para su implementación.

El plugin necesita actualizarse automáticamente para que se acepte una pull request. Es posible que más documentación esté disponible más adelante, pero por ahora, tenga en cuenta que deben implementarse update_version_check, update_version, update_plugins_check y update_plugins. Para referencia, revise el archivo drupal.py. Esto es necesario para asegurar que los plugins se mantengan actualizados.

Issues y Pull Requests

Las pull requests que creen nuevos plugins son bienvenidas siempre que el mantenimiento de esos plugins se haga de forma automática.

Recuerde hacer sus pull requests contra la rama de desarrollo en lugar de la master. Los issues pueden plantearse en el rastreador de issues aquí en GitHub.

Para ejecutar pruebas, deben instalarse algunas dependencias. Ejecutar los siguientes comandos resultará en que se instalen y se ejecuten las pruebas:

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

Puede ejecutar pruebas individuales con la bandera -s.

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

Licencia

El proyecto está licenciado bajo la licencia AGPL. Consulte el archivo LICENSE.

Descargar herramienta