in

Un script para enumerar rápidamente todos los sitios web en todas las redes de su empresa, guardar sus respuestas y consultarlas sobre tecnologías web conocidas, como: B. con vulnerabilidades de día cero




WebStor es una herramienta implementada en Python bajo la licencia MIT, con la que puede listar rápidamente todos los sitios web en todas las redes de su empresa, guardar sus respuestas y consultar tecnologías y versiones web conocidas, p. Ej. B. aquellos con vulnerabilidades de día cero. En particular, está diseñado para resolver el problema único en organizaciones medianas y grandes con administración descentralizada donde puede ser casi imposible realizar un seguimiento de todas las tecnologías web utilizadas por diferentes administradores en diferentes unidades y redes.

WebStor logra su objetivo haciendo lo siguiente:

  1. Realiza transferencias de zona DNS para recopilar los registros A y CNAME de una organización.
  2. Utiliza Masscan para buscar puertos HTTP / HTTPS abiertos en los rangos de red de una organización y direcciones IP fuera de esos rangos que estaban presentes en los registros A y CNAME de la organización.
  3. Utiliza la biblioteca de requisitos de Python para recopilar todas las respuestas y almacenarlas en una base de datos MariaDB. Todos los nombres DNS que corresponden a una IP con puertos HTTP / HTTPS abiertos se incluyen en las solicitudes además de la dirección IP para que los sitios que usan diferentes encabezados no den lugar a que se pase por alto un sitio web.
  4. Descarga la base de datos de tecnología web Wappalyzer y la almacena en la base de datos MariaDB para que los usuarios puedan consultar las ubicaciones de una tecnología web popular por su nombre.
  5. Permite a los usuarios consultar la ubicación o ubicaciones donde aparecen expresiones regulares personalizadas en las respuestas guardadas.

Plataformas compatibles

WebStor se ejecuta actualmente en sistemas Linux. Dado que está escrito en Python, la conversión para admitir Windows sería trivial y probablemente se hará en el futuro.

requisitos

Aplicaciones

  • Masscan
    • Si está utilizando un trabajo cron para actualizar la base de datos (típico), es importante que configure sudo nopasswd para cada usuario que realice escaneos masscan a través de WebStor.
  • MariaDB 10.0.5 o superior
    • Las credenciales predeterminadas que intenta WebStor son root y una contraseña en blanco. Consulte la sección Opciones de seguridad para configurar WebStor para que utilice diferentes nombres de usuario y contraseñas para conectarse a la base de datos.

Bibliotecas de Python

  • pip3 instalar dnspython
  • pip3 instalar beautifulsoup4
  • pip3 instalar mysql-connector-python
  • pip3 instalar js-regex
  • evento de instalación de pip3
  • solicitudes de instalación de pip3

Disponibilidad a través de PyPI

  • Si solo desea ejecutar WebStor y no editarlo, puede instalar las aplicaciones requeridas y luego usar ‘sudo pip3 install webstor’.
  • Después de instalar WebStor a través de PyPI, webstor se encuentra en la ruta y se puede ejecutar independientemente del directorio de trabajo con ‘webstor’ en lugar de ‘webstor.py’ a través de la línea de comando, por ejemplo, ‘webstor -g’.

Uso básico

expresión regular en la base de datos de WebStor. –SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT, -sC SEARCHFINGERPRINT Busque tecnología por el nombre de la huella digital personalizada proporcionada por el usuario. –SEARCH-WAPPALYZER SEARCHWAPPALYZER, -sW SEARCHWAPPALYZER Busca tecnología por nombre (de Wappalyzer Tech DB) en WebStor DB. –NO-TSIG-KEY, -tN No utilice una clave DNSSec TSIG almacenada en una base de datos o archivo, incluso si existe. –TSIG-KEY-IMPORT IMPORTTSIGFILE, -tI IMPORTTSIGFILE Importa un archivo de clave TSIG especificado a la base de datos –TSIG-KEY-REPLACE REPLACEMENTTSIGFILE, -tR REPLACEMENTTSIGFILE Reemplaza una clave TSIG en la base de datos con un archivo especificado –DELETE-TSIG TSIGTODELETE , -dT TSIGTODELETE Elimina una clave TSIG de la base de datos según el nombre. –USE-TSIG-FILE-ONLY USETSIGFILEONLY, -tF USETSIGFILEONLY Utilice únicamente el archivo tsig especificado (ruta completa), no utilice ningún TSIG almacenado en la base de datos. Se aplica a todos los dominios y limita WebStor a un TSIG para transferencias de zona en la versión actual. –DOWNLOAD-NEW-WAPPALYZER, -w Descarga un nuevo archivo de huellas digitales de Wappalyzer directamente desde GitHub. Sobrescribe los datos de huellas digitales existentes de Wappalyzer. –LIST-WAPPALYZER-TECH-NAMES, -wL Enumera los nombres de todas las tecnologías Wappalyzer en la base de datos. –ZONE-XFER, -z Fuerza una nueva transferencia de zona utilizando todos los dominios, servidores y claves TSIG asociadas en la base de datos –ADD-DOMAIN DOMAINDETAILS, -zA DOMAINDETAILS Agrega un dominio en el formato. –DELETE-DOMAIN DOMAINTODELETE, -zD DOMAINTODELETE Elimina un dominio DNS de la base de datos según su nombre. –IMPORT-ZONE-FILE IMPORTZONEFILE, -zI IMPORTZONEFILE Agrega dominios para transferencias de zona desde un archivo. –CLEAR-DOMAINS, -zC Elimina todos los dominios DNS almacenados en la base de datos. –LIST-DOMAINS, -zL Enumera todos los dominios DNS que están almacenados en la base de datos. –LIST-OUTSIDE, -e Genera una lista de todos los nombres e IP de nuestras transferencias de zona que están fuera de las áreas de red definidas. –SQL-CREDS SQLCREDSFILE, -q SQLCREDSFILE Use credenciales SQL en el archivo en la ruta especificada. «>

       webstor.py [-h] [--ADD-HTTP-PORT HTTPPORTTOADD] [--CLEAR-HTTP]
[--ADD-HTTPS-PORT HTTPSPORTTOADD] [--CLEAR-HTTPS]
[--ADD-CUSTOM-FINGERPRINT FINGERPRINT]
[--DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE]
[--IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE]
[--CLEAR-CUSTOM-FINGERPRINTS] [--SHOW-CONFIG]
[--SHOW-CONFIG-FULL] [--RUN-MASSCAN]
[--SET-MASSCAN-RANGES SETSCANRANGES]
[--IMPORT-MASSCAN-RANGES IMPORTSCANRANGES]
[--DELETE-RANGE RANGETODELETE] [--ADD-PATH PATHTOADD]
[--DELETE-PATH PATHTODELETE] [--CLEAR-PATHS]
[--REFRESH-RESPONSES] [--SEARCH-PATTERN SEARCHPATTERN]
[--SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT]
[--SEARCH-WAPPALYZER SEARCHWAPPALYZER] [--NO-TSIG-KEY]
[--TSIG-KEY-IMPORT IMPORTTSIGFILE]
[--TSIG-KEY-REPLACE REPLACEMENTTSIGFILE]
[--DELETE-TSIG TSIGTODELETE]
[--USE-TSIG-FILE-ONLY USETSIGFILEONLY]
[--DOWNLOAD-NEW-WAPPALYZER] [--LIST-WAPPALYZER-TECH-NAMES]
[--ZONE-XFER] [--ADD-DOMAIN DOMAINDETAILS]
[--DELETE-DOMAIN DOMAINTODELETE]
[--IMPORT-ZONE-FILE IMPORTZONEFILE] [--CLEAR-DOMAINS]
[--LIST-DOMAINS] [--LIST-OUTSIDE] [--SQL-CREDS SQLCREDSFILE]

optional arguments:
-h, --help show this help message and exit
--ADD-HTTP-PORT HTTPPORTTOADD, -a HTTPPORTTOADD
Add a custom HTTP port.
--CLEAR-HTTP, -aC Clear any custom HTTP ports and revert to default of
80.
--ADD-HTTPS-PORT HTTPSPORTTOADD, -b HTTPSPORTTOADD
Add a custom HTTPS port .
--CLEAR-HTTPS, -bC Clear any custom HTTPS ports and revert to default of
443.
--ADD-CUSTOM-FINGERPRINT FINGERPRINT, -c FINGERPRINT
Add a custom fingerprint in the form <Name>,<RegEx>.
--DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE, -cD FINGERPRINTNAMETODELETE
Delete a custom fingerprint by name.
--IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE, -cI IMPORTFINGERPRINTFILE
Import a custom fingerprint file with the path
specified.
--CLEAR-CUSTOM-FINGERPRINTS, -cC
Clears all custom fingerprints stored in DB.
--SHOW-CONFIG, -g Show current WebStor configuration (brief).
--SHOW-CONFIG-FULL, -gF
Show current WebStor configuration (full).
--RUN-MASSCAN, -m Runs a new port scan with Masscan on all configured
TCP ports for HTTP and HTTPS, against all configured
ranges and any IP addresses from DNS records that are
outside those ranges.
--SET-MASSCAN-RANGES SETSCANRANGES, -mR SETSCANRANGES
Scan range or ranges, replaces existing ranges in DB,
comma separated, such as: -s
10.10.0.0/16,10.13.0.0/16,192.168.1.0/24
--IMPORT-MASSCAN-RANGES IMPORTSCANRANGES, -mI IMPORTSCANRANGES
Import scan ranges (CIDR blocks) from a specified
file.
--DELETE-RANGE RANGETODELETE, -mD RANGETODELETE
Delete scan range.
--ADD-PATH PATHTOADD, -p PATHTOADD
Add paths for which to request and store responses
besides '/'.
--DELETE-PATH PATHTODELETE, -pD PATHTODELETE
Delete p aths for which to request and store responses
besides '/'.
--CLEAR-PATHS, -pC Clear any custom URL request paths and revert to
default of '/'.
--REFRESH-RESPONSES, -r
Refresh URL responses in DB.
--SEARCH-PATTERN SEARCHPATTERN, -sP SEARCHPATTERN
Search for string or regular expression in WebStor
database.
--SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT, -sC SEARCHFINGERPRINT
Search for technology by name of user-provided custom
fingerprint.
--SEARCH-WAPPALYZER SEARCHWAPPALYZER, -sW SEARCHWAPPALYZER
Search for technology by name (from Wappalyzer Tech
DB) in WebStor DB.
--NO-TSIG-KEY, -tN Do not use DNSSec TSIG key stored in database or a
file, even if present.
--T SIG-KEY-IMPORT IMPORTTSIGFILE, -tI IMPORTTSIGFILE
Import a specified TSIG key file into the database
--TSIG-KEY-REPLACE REPLACEMENTTSIGFILE, -tR REPLACEMENTTSIGFILE
Replace a TSIG key in the database with a specified
file
--DELETE-TSIG TSIGTODELETE, -dT TSIGTODELETE
Delete a TSIG key from the database by name.
--USE-TSIG-FILE-ONLY USETSIGFILEONLY, -tF USETSIGFILEONLY
Only use tsig file specified (full path), do not use
TSIGs stored in the DB. Applies to all domains,
limiting WebStor to one TSIG for zone transfers in the
current execution.
--DOWNLOAD-NEW-WAPPALYZER, -w
Download a new Wappalyzer fingerprints file directly
from GitHub. Overwrites existing Wappalyzer
fingerprint data.
--LIST-WAPPALYZER-TECH-NAMES, -wL
List the names of all Wappalyzer technologies in the
database.
--ZONE-XFER, -z Forces a new zone transfer using all domains, servers,
and associated TSIG keys in DB
--ADD-DOMAIN DOMAINDETAILS, -zA DOMAINDETAILS
Add a domain in the form <Domain name>,<Server>,<TSIG
Key Name>.
--DELETE-DOMAIN DOMAINTODELETE, -zD DOMAINTODELETE
Delete a DNS domain from the database by name.
--IMPORT-ZONE-FILE IMPORTZONEFILE, -zI IMPORTZONEFILE
Add domains for zone transfers from a file.
--CLEAR-DOMAINS, -zC Clears all DNS domains stored in DB.
--LIST-DOMAINS, -zL Lists all DNS domains stored in DB.
--LIST-OUTSIDE, -e Prints a list of all names and IPs from our zone
transfers that are outside defined net ranges.
--SQL-CREDS SQLCREDSFILE, -q SQLCREDSFILE
Use SQL credentials in file at specified path.

Pasos para configurar WebStor por primera vez y completar la base de datos:

NOTA: Estos pasos asumen que su organización usa solo una clave TSIG para transferencias de zona y que todos los registros pueden ser consultados por un servidor DNS. De lo contrario, consulte la sección Casos de uso seguro / esotérico a continuación.

  1. Obtenga un archivo de clave TSIG que pueda usar para recuperar transferencias de zona y colocarlo en su directorio de trabajo.
  2. Recupere un archivo de lista de todas las áreas de red de su empresa, separadas por saltos de línea (notación CIDR). Si está utilizando grandes cantidades de espacio privado RFC1918, especialmente espacio 10.X, no agregue 10.0.0.0/8 ya que tomaría mucho tiempo hacer masscan más tarde. En su lugar, utilice varios bloques más pequeños que estén realmente asignados (por ejemplo, 10.10.3.0/24). Para una red corporativa o universitaria típica en el momento de escribir este artículo, puede esperar que cada millón de direcciones IP escaneadas durante el escaneo masivo tome aproximadamente 15 minutos con la configuración de limitación actual de WebStor.
  3. Cree un archivo de texto con los nombres de dominio para los que recibe transferencias de zona. En la parte superior del archivo, agregue dos líneas: la primera con el nombre de su clave TSIG (si no sabe cuál es, está en la primera línea de su archivo TSIG, justo después de «clave») y la segunda La línea debe ser el nombre o la dirección IP de su servidor DNS. El resto del archivo debe ser cada nombre de dominio DNS de su organización, uno por línea. Para una universidad grande típica, estos son nombres como engineering.stateu.ed.
  4. Ejecute ./webstor.py -g para ver la configuración y confirmar la funcionalidad de la base de datos.
  5. Ejecute ./webstor.py -tI -mi -zI desde el servidor de destino para este TSIG. Esto se debe a que el archivo TSIG en sí no contiene esta información. Simplemente ingrese uno de sus dominios, por ejemplo, stateu.edu y la dirección IP de su servidor DNS. La información del archivo de importación de dominio procesado posteriormente reemplaza la asignación de dominio.
  6. Webstor ahora está listo para recopilar datos. Ejecute ./webstor.py -z -m -r -w. Esto recopila registros DNS a través de transferencia de zona, busca puertos web abiertos con Masscan, realiza solicitudes HTTP / HTTPS para todos los hosts con puertos web abiertos (el superconjunto de aquellos en sus áreas de red y hosts con registros DNS que están fuera de estas áreas se encuentran) y guarde las respuestas en la base de datos. La opción -w también descarga la última copia de la base de datos de Wappalyzer Web Technologies desde GitHub.

Ejemplo de aplicacion

# Search for a string/regex associated with a web technology:
./webstor.py -sP "content="wordpress 4.[7-9]"
# A list of sites with this regex, expected responses from WordPress v4.7-9 sites,
# will be returned.

# To save the regex in the example above as a custom fingerprint you can query
# by name (and do not need to remember the regex each time):
./webstor.py -c "wordpress4.7-9,content="wordpress 4.[7-9]"

# After the above command has been run, the query may be performed simply with:
./webstor.py -sC wordpress4.7-9

# Using WebStor to search for WordPress sites via Wappalyzer definitions:
./webstor.py -sW wordpress
# A list of reachable WordPress sites on your organization's networks will be
# returned. NOTE: Wappalyzer searches may be slower than pattern/regex searches
# due to the number of properties being queried to verify.

Resultados mostrados por nombre e IP

Los sitios se consultan en función de las respuestas a los nombres y las direcciones IP. Esto es importante porque algunos servidores web alojan varios sitios con varios nombres. Es posible que algunos otros servidores solo proporcionen un sitio predeterminado o una respuesta predeterminada del proveedor de alojamiento cuando lo solicite la dirección IP (por ejemplo, .seekerdlp.com). Por esta razón, si tiene un sitio con nombre que también será servido cuando se solicite la IP del servidor web, se mostrarán los resultados de la consulta para ambos.

Mantenga los resultados frescos

Se recomienda que configure un trabajo cron para ejecutar WebStor a diario, de modo que los resultados de su consulta siempre reflejen el estado actual de su red.

Opciones seguras

Si no desea utilizar las credenciales predeterminadas de MariaDB (raíz, contraseña en blanco), puede utilizar la opción -q para especificar la ruta a un archivo de credenciales. La primera línea del archivo debe ser el servidor, por ejemplo, localhost. La segunda línea debe ser el nombre de usuario SQL. La tercera línea debe ser la contraseña.

Si no desea almacenar su TSIG en la base de datos de claves, puede utilizar la opción -tF para especificar la ruta a un archivo de claves TSIG de ACL-ed.

Si su organización utiliza varias claves TSIG, deberá almacenarlas en la base de datos. Cada uno de ellos se puede agregar con la opción -tI y los dominios se pueden crear usando las opciones normales, especificando la clave y el servidor apropiados.

Atribución

WebStor utiliza la base de datos de tecnología de Wappalyzer para búsquedas de tecnología indexadas por nombre y precargadas con las respuestas almacenadas de WebStor. Wappalyzer (https://github.com/AliasIO/wappalyzer) tiene licencia según los términos de la licencia MIT.

Gracias especiales

  • Brandon Bailey (Co-diseñador del concepto original)
  • Bob Harold (Guía de DNS)
  • Neamen Negash[email protected]edu> (instalador)
  • Joyful (múltiples correcciones de errores y mejoras)

Licencia y autor

WebStor fue escrito por Ross Geerlings[email protected]edu>,[email protected]com>.

WebStor tiene licencia según los términos de la licencia MIT que se reproduce a continuación.

La licencia del MIT

Copyright (c) 2020-2021 La Junta de Regentes de la Universidad de Michigan.

Cualquier persona que reciba una copia de este software y los archivos de documentación relacionados (el «Software») por la presente obtiene permiso sin cargo para comercializar el software sin limitación, incluidos, entre otros, los derechos de uso, copia, modificación, copia de Fusionar, publicar , distribuir, sublicenciar y / o vender software y permitir que las personas a las que el software esté disponible lo hagan, sujeto a las siguientes condiciones:

El aviso de copyright anterior y este aviso de permiso deben incluirse en todas las copias o partes sustanciales del software.

EL SOFTWARE SE PROPORCIONA «TAL CUAL» SIN NINGUNA GARANTÍA, EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO PARTICULAR Y PROPÓSITO NO PREVISTO. EN NINGÚN CASO LOS AUTORES O LOS TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA CONTRACTUAL, IMPERFECTA O DE OTRO MODO, QUE SE HAGA FUERA DE O EN RELACIÓN CON EL SOFTWARE O USO U OTRO SOFTWARE.



What do you think?

Written by Helen Lafayette

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

Las mejores formas de almacenar contraseñas de forma segura

Malware de ataque Shades of SolarWinds encontrado en la nueva puerta trasera «Tomiris»