Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/rossgeerlings/webstor
侦察漏洞扫描器信息收集Web安全DNS 分析
GitHubrossgeerlings/webstor

webstor

通过 DNS 区域传输和 masscan 枚举组织网络中的所有网站,存储响应,并支持查询已知存在漏洞的 Web 技术和自定义正则表达式模式。

查看仓库
158202年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
webstor — 通过 DNS 区域传输和 masscan 枚举组织网络中的所有网站,存储响应,并支持查询已知存在漏洞的 Web 技术和自定义正则表达式模式。 | Kitploit

 

WebStor

快速识别组织中的脆弱Web技术

WebStor是一个基于MIT许可、使用Python实现的工具,用于快速枚举组织网络中所有网站,存储其响应,并查询已知的Web技术与版本(例如存在零日漏洞的)。它特别旨在解决中大型组织中分散管理所特有的问题——由不同单位和网络中的管理员部署的各种Web技术几乎无法全面追踪。

WebStor通过执行以下操作实现目标:

  1. 执行DNS区域传输,收集组织的A记录和CNAME记录。
  2. 使用Masscan扫描组织网段上的开放HTTP/HTTPS端口,以及A记录和CNAME记录中存在于这些网段之外的任何IP地址。
  3. 使用Python requests库收集所有响应并存储在MariaDB数据库中。除了IP地址外,所有对应开放HTTP/HTTPS端口的DNS名称都将包含在请求中,以确保使用不同标头的站点不会被遗漏。
  4. 下载Wappalyzer Web技术数据库并存储在MariaDB数据库中,使用户能够通过名称查询常见Web技术的位置。
  5. 允许用户查询存储的响应中包含自定义正则表达式的位置。

支持的平台

WebStor目前可在Linux系统上运行。由于使用Python编写,转换以支持Windows将很简单,未来可能会实现。

先决条件

应用程序

  • Masscan
    • 如果你将使用cron作业来更新数据库(典型情况),至关重要的是:为任何通过WebStor执行Masscan扫描的用户配置sudo无密码权限。
  • MariaDB 10.0.5或更高版本
    • WebStor默认尝试使用root用户和空密码进行连接。请参阅“安全选项”部分,配置WebStor使用其他用户名和密码连接数据库。

Python库

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

通过PyPI提供

  • 如果你只是想运行WebStor而不修改它,可以安装先决应用程序,然后使用sudo pip3 install webstor。
  • 通过PyPI安装WebStor后,webstor将加入路径,可以在命令行中直接使用webstor(而非webstor.py),例如webstor -g。

基本用法

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.

初始配置WebStor和填充数据库的步骤:

注意:以下步骤假设你的组织使用单个TSIG密钥进行区域传输,并且所有记录都可以从一台DNS服务器查询。如果不是这种情况,请参阅下面的安全/特殊用例部分。

  1. 获取一个允许拉取区域传输的TSIG密钥文件,并将其放置在工作目录中。
  2. 获取一个包含组织所有网络范围(CIDR表示法)的换行分隔列表文件。如果你使用大量的私有RFC1918地址空间,特别是10.X空间,不要简单地添加10.0.0.0/8,因为这会使得后续的Masscan花费很长时间。相反,使用实际分配的小块(例如10.10.3.0/24)。以典型的公司或大学网络为例(截至撰写本文时),使用WebStor当前的限速设置,每扫描一百万IP地址大约需要15分钟。
  3. 创建一个文本文件,包含你要拉取区域传输的域名。在文件顶部插入两行:第一行是你的TSIG密钥名称(如果你不知道它是什么,它位于TSIG文件的第一行,紧跟在"key"之后),第二行必须是你的DNS服务器名称或IP地址。文件的其余部分必须是组织中的每个DNS域名,每行一个。对于一个典型的大型大学,这将是像engineering.stateu.edu这样的名称。
  4. 运行./webstor.py -g显示配置并确认数据库功能。
  5. 运行./webstor.py -tI <tsig文件> -mI <网络范围文件> -zI <域名文件>。 注意:在此过程的TSIG导入部分,系统会要求你输入一个与此TSIG关联的域名以及该TSIG的目标DNS服务器。这是因为TSIG文件本身不包含这些信息。只需提供你的任意一个域名,例如stateu.edu,以及你的DNS服务器IP地址。之后处理的域名导入文件中的信息将覆盖此域关联。
  6. WebStor现在准备好收集数据。运行./webstor.py -z -m -r -w。这将通过区域传输收集DNS记录,使用Masscan扫描开放的Web端口,对所有具有开放Web端口的主机(包括网络范围内的主机以及DNS记录位于范围之外的主机)执行HTTP/HTTPS请求,并将响应存储在数据库中。-w选项还会从GitHub下载最新版本的Wappalyzer Web技术数据库。

示例用法

root@kitploit:~
# 搜索与Web技术相关的字符串/正则表达式:
./webstor.py -sP "content=\"wordpress 4.[7-9]"
# 将返回包含此正则表达式的站点列表,预期来自WordPress v4.7-9站点的响应。

# 将上述示例中的正则表达式保存为自定义指纹,以便通过名称查询(无需每次都记住正则表达式):
./webstor.py -c "wordpress4.7-9,content=\"wordpress 4.[7-9]"

# 运行上述命令后,可以简单地通过以下方式执行查询:
./webstor.py -sC wordpress4.7-9

# 使用WebStor通过Wappalyzer定义搜索WordPress站点:
./webstor.py -sW wordpress
# 将返回组织中可访问的WordPress站点列表。注意:由于需要查询大量属性进行验证,Wappalyzer搜索可能比模式/正则表达式搜索慢。

结果按名称和IP显示

站点基于名称和IP地址的响应进行查询。这一点很重要,因为某些Web服务器在多个名称下托管多个站点。其他一些服务器可能在通过IP请求时只提供默认站点或托管提供商的默认响应(例如https://68.66.216.42),而在通过名称查询时提供实际的业务站点(例如https://www.seekerdlp.com)。因此,如果你有一个命名站点,同时该站点也可以通过Web服务器的IP访问,你将看到两个查询结果。

保持结果更新

建议设置一个cron作业每天运行WebStor,以便你的查询结果始终反映网络的当前状态。

安全选项

如果你不想使用默认的MariaDB凭据(root用户,空密码),可以使用-q选项指定包含凭据的文件路径。文件的第一行必须是服务器,例如localhost。第二行必须是SQL用户名。第三行必须是密码。

如果你不想将TSIG密钥存储在数据库中,可以使用-tF选项指定ACL保护的TSIG密钥文件路径。

如果你的组织使用多个TSIG密钥,你需要将它们存储在数据库中。每个密钥都可以通过-tI选项添加,而域名可以通过标准选项添加,并指定相应的密钥和服务器。

版权归属

WebStor使用Wappalyzer的技术数据库,用于对WebStor存储的响应进行预填充的、按名称索引的技术查找。Wappalyzer根据MIT许可证条款进行许可。

特别感谢

  • Brandon Bailey <Twitter: @ge0stigm4>(原始概念的联合设计者)
  • Bob Harold(DNS指导)
  • Neamen Negash <nnegash@umich.edu>(安装程序)
  • afreudenreich(多个错误修复和增强)

许可证和作者

WebStor由Ross Geerlings <rjgeer@umich.edu>、<ross@seekerdlp.com>编写。

WebStor根据MIT许可证条款进行许可,如下所示。

MIT许可证

版权所有 (c) 2020-2024 密歇根大学董事会。

特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人,不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许获取本软件的人在满足以下条件的情况下这样做:

上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。

本软件按“原样”提供,不提供任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而引起的任何索赔、损害或其他责任负责,无论是合同诉讼、侵权行为还是其他。

下载工具