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
Outils/GitHubGitHub/rossgeerlings/webstor
ReconnaissanceScanners de VulnérabilitésCollecte d'InformationsSécurité WebAnalyse DNS
GitHubrossgeerlings/webstor

webstor

Énumère tous les sites web à travers les réseaux d'une organisation via les transferts de zone DNS et masscan, stocke les réponses et permet d'interroger les technologies web vulnérables connues et les motifs regex personnalisés.

Voir le dépôt
158201il 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

 

WebStor

Identification rapide des technologies web vulnérables dans votre organisation

WebStor est un outil implémenté en Python sous licence MIT pour énumérer rapidement tous les sites web sur l'ensemble des réseaux de votre organisation, stocker leurs réponses et interroger les technologies et versions web connues, comme celles présentant des vulnérabilités zero-day. Il est conçu en particulier pour résoudre le problème unique que rencontrent les organisations de taille moyenne à grande avec une administration décentralisée, où il peut être presque impossible de suivre toutes les technologies web déployées par divers administrateurs répartis dans différentes unités et réseaux.

WebStor atteint son objectif en réalisant les actions suivantes :

  1. Effectue des transferts de zone DNS pour collecter les enregistrements A et CNAME d'une organisation.
  2. Utilise Masscan pour scanner les ports HTTP/HTTPS ouverts sur les plages réseau de l'organisation, ainsi que toute adresse IP en dehors de ces plages qui était présente dans les enregistrements A et CNAME de l'organisation.
  3. Utilise la bibliothèque Python requests pour collecter toutes les réponses et les stocker dans une base de données MariaDB. Tous les noms DNS correspondant à une IP avec des ports HTTP/HTTPS ouverts seront inclus dans les requêtes en plus de l'adresse IP, de sorte que les sites utilisant des en-têtes différents ne feront pas manquer un site web.
  4. Télécharge la base de données des technologies web Wappalyzer et la stocke dans la base de données MariaDB, permettant aux utilisateurs d'interroger le ou les emplacements d'une technologie web courante par son nom.
  5. Permet aux utilisateurs d'interroger le ou les emplacements où des expressions régulières personnalisées sont contenues dans les réponses stockées.

Plateformes supportées

WebStor fonctionne actuellement sur les systèmes Linux. Comme il est écrit en Python, la conversion pour supporter Windows serait triviale et devrait probablement avoir lieu à l'avenir.

Prérequis

Applications

  • Masscan
    • Si vous utilisez une tâche cron pour mettre à jour la base de données (cas typique), il est essentiel de configurer sudo nopasswd pour tout utilisateur exécutant un scan Masscan via WebStor.
  • MariaDB 10.0.5 ou ultérieur
    • Les identifiants par défaut essayés par WebStor sont root et un mot de passe vide. Voir la section « Options sécurisées » pour configurer WebStor afin d'utiliser d'autres noms d'utilisateur et mots de passe pour se connecter à la base de données.

Bibliothèques Python

  • pip3 install dnspython
  • pip3 install beautifulsoup4
  • pip3 install mysql-connector-python
  • pip3 install js-regex
  • pip3 install gevent
  • pip3 install requests

Disponibilité via PyPI

  • Si vous cherchez simplement à exécuter WebStor sans le modifier, vous pouvez installer les applications prérequises puis utiliser 'sudo pip3 install webstor'.
  • Après avoir installé WebStor via PyPI, webstor sera dans le chemin et pourra être exécuté en ligne de commande quel que soit le répertoire de travail avec 'webstor' au lieu de 'webstor.py', par exemple 'webstor -g'.

Utilisation de base

root@kitploit:~
       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]
                  [--ADD-RANGE RANGETOADD] [--DELETE-RANGE RANGETODELETE]
                  [--IMPORT-MASSCAN-RANGES IMPORTSCANRANGES]
                  [--ADD-PATH PATHTOADD] [--DELETE-PATH PATHTODELETE]
                  [--CLEAR-PATHS] [--REFRESH-RESPONSES]
                  [--RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH]
                  [--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 paths 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.
  --RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH, -rP RESPONSESADDFORPATH
                        Add URL responses for a one-time path in with the
                        current responses in the 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.
  --TSIG-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.

Étapes pour configurer initialement WebStor et remplir la base de données :

REMARQUE : Ces étapes supposent que votre organisation utilise une seule clé TSIG pour les transferts de zone et que tous les enregistrements peuvent être interrogés à partir d'un seul serveur DNS. Si ce n'est pas le cas, consultez la section sur les cas d'utilisation sécurisés / ésotériques ci-dessous.

  1. Obtenez un fichier de clé TSIG qui vous permet d'effectuer des transferts de zone, placez-le dans votre répertoire de travail.
  2. Obtenez un fichier de liste délimité par des sauts de ligne de toutes les plages réseau de votre organisation (notation CIDR). Si vous utilisez de vastes quantités d'espace privé RFC1918, notamment l'espace 10.X, n'ajoutez pas simplement 10.0.0.0/8 car cela ferait prendre beaucoup de temps à Masscan plus tard. Utilisez plutôt plusieurs blocs plus petits qui sont réellement alloués (comme 10.10.3.0/24). Avec un réseau d'entreprise ou universitaire typique à l'heure actuelle, vous pouvez vous attendre à ce que chaque million d'adresses IP scannées prenne environ 15 minutes lors du scan masscan avec les paramètres de limitation actuels de WebStor.
  3. Créez un fichier texte avec les noms de domaine pour lesquels vous allez effectuer des transferts de zone. En haut du fichier, insérez deux lignes : la première avec le nom de votre clé TSIG (si vous ne savez pas ce que c'est, elle se trouvera dans la première ligne de votre fichier TSIG juste après "key"), et la deuxième ligne doit être le nom ou l'adresse IP de votre serveur DNS. Le reste du fichier doit contenir chaque nom de domaine DNS de votre organisation, un par ligne. Pour une grande université typique, ce sera des noms comme engineering.stateu.edu.
  4. Exécutez ./webstor.py -g pour afficher la configuration et confirmer le fonctionnement de la base de données.
  5. Exécutez ./webstor.py -tI <fichier tsig> -mI <fichier plages réseau> -zI <fichier domaines> REMARQUE : lors de l'importation TSIG de ce processus, il vous sera demandé un domaine à associer à la clé TSIG et un serveur DNS à cibler pour cette clé TSIG. Cela est dû au fait que le fichier TSIG lui-même ne contient pas ces informations. Fournissez simplement l'un de vos domaines, par exemple stateu.edu, et l'adresse IP de votre serveur DNS. Les informations du fichier d'importation de domaines, traitées ensuite, remplaceront l'association de domaine.
  6. WebStor est maintenant prêt à collecter des données. Exécutez ./webstor.py -z -m -r -w. Cela collectera les enregistrements DNS via le transfert de zone, scannera les ports web ouverts avec Masscan, effectuera des requêtes HTTP/HTTPS contre tous les hôtes avec des ports web ouverts (l'ensemble des hôtes dans vos plages réseau et des hôtes avec des enregistrements DNS en dehors de ces plages), et stockera les réponses dans la base de données. L'option -w télécharge également la copie la plus récente de la base de données des technologies web Wappalyzer depuis GitHub.

Exemple d'utilisation

root@kitploit:~
# Rechercher une chaîne/expression rationnelle associée à une technologie web :
./webstor.py -sP "content=\"wordpress 4.[7-9]"
# Une liste de sites contenant cette expression rationnelle, correspondant aux réponses attendues des sites Wordpress v4.7-9,
# sera renvoyée.  

# Pour enregistrer l'expression rationnelle de l'exemple ci-dessus comme empreinte numérique personnalisée que vous pouvez interroger
# par son nom (et n'avez pas besoin de retenir l'expression rationnelle à chaque fois) :
./webstor.py -c "wordpress4.7-9,content=\"wordpress 4.[7-9]"

# Après avoir exécuté la commande ci-dessus, la requête peut être effectuée simplement avec :
./webstor.py -sC wordpress4.7-9

# Utiliser WebStor pour rechercher des sites Wordpress via les définitions Wappalyzer :
./webstor.py -sW wordpress
# Une liste des sites Wordpress accessibles sur les réseaux de votre organisation sera renvoyée. REMARQUE : Les recherches Wappalyzer peuvent être plus lentes que les recherches par motif/expression rationnelle en raison du nombre de propriétés interrogées pour vérification.

Résultats affichés par nom et adresse IP

Les sites sont interrogés en fonction des réponses aux noms et aux adresses IP. Ceci est important car certains serveurs web hébergent plusieurs sites sous plusieurs noms. D'autres serveurs peuvent fournir uniquement un site par défaut ou une réponse par défaut du fournisseur d'hébergement lorsqu'ils sont interrogés par IP (par exemple https://68.66.216.42), et un site métier réel lorsqu'ils sont interrogés par nom (par exemple https://www.seekerdlp.com). Pour cette raison, si vous avez un site nommé qui est également servi lorsque l'IP du serveur web est demandée, vous verrez les résultats de requête pour les deux.

Maintenir les résultats à jour

Il est recommandé de configurer une tâche cron pour exécuter WebStor quotidiennement afin que vos résultats de requête reflètent toujours l'état actuel de votre réseau.

Options sécurisées

Si vous ne souhaitez pas utiliser les identifiants MariaDB par défaut (root, mot de passe vide), vous pouvez utiliser l'option -q pour spécifier le chemin d'un fichier contenant les identifiants. La première ligne du fichier doit être le serveur, par exemple localhost. La deuxième ligne doit être le nom d'utilisateur SQL. La troisième ligne doit être le mot de passe.

Si vous ne souhaitez pas stocker votre clé TSIG dans la base de données, vous pouvez utiliser l'option -tF pour spécifier le chemin d'un fichier de clé TSIG protégé par ACL.

Si votre organisation utilise plusieurs clés TSIG, vous devrez les stocker dans la base de données. Chacune peut être ajoutée avec l'option -tI et les domaines peuvent être ajoutés via les options normales, en spécifiant la clé et le serveur appropriés.

Attribution

WebStor utilise la base de données des technologies de Wappalyzer pour les recherches de technologies pré-remplies et indexées par nom dans les réponses stockées de WebStor. Wappalyzer est sous licence MIT.

Remerciements particuliers

  • Brandon Bailey <Twitter: @ge0stigm4> (Co-concepteur du concept original)
  • Bob Harold (Conseils sur DNS)
  • Neamen Negash <nnegash@umich.edu> (Installateur)
  • afreudenreich (Plusieurs corrections de bugs et améliorations)

Licence et auteur

WebStor a été écrit par Ross Geerlings <rjgeer@umich.edu>, <ross@seekerdlp.com>.

WebStor est sous licence MIT, reproduite ci-dessous.

The MIT License

Copyright (c) 2020-2024 The University of Michigan Board of Regents.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Télécharger l’outil