WebStor是一个基于MIT许可、使用Python实现的工具,用于快速枚举组织网络中所有网站,存储其响应,并查询已知的Web技术与版本(例如存在零日漏洞的)。它特别旨在解决中大型组织中分散管理所特有的问题——由不同单位和网络中的管理员部署的各种Web技术几乎无法全面追踪。
WebStor通过执行以下操作实现目标:
WebStor目前可在Linux系统上运行。由于使用Python编写,转换以支持Windows将很简单,未来可能会实现。
sudo pip3 install webstor。webstor将加入路径,可以在命令行中直接使用webstor(而非webstor.py),例如webstor -g。 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.
注意:以下步骤假设你的组织使用单个TSIG密钥进行区域传输,并且所有记录都可以从一台DNS服务器查询。如果不是这种情况,请参阅下面的安全/特殊用例部分。
./webstor.py -g显示配置并确认数据库功能。./webstor.py -tI <tsig文件> -mI <网络范围文件> -zI <域名文件>。
注意:在此过程的TSIG导入部分,系统会要求你输入一个与此TSIG关联的域名以及该TSIG的目标DNS服务器。这是因为TSIG文件本身不包含这些信息。只需提供你的任意一个域名,例如stateu.edu,以及你的DNS服务器IP地址。之后处理的域名导入文件中的信息将覆盖此域关联。./webstor.py -z -m -r -w。这将通过区域传输收集DNS记录,使用Masscan扫描开放的Web端口,对所有具有开放Web端口的主机(包括网络范围内的主机以及DNS记录位于范围之外的主机)执行HTTP/HTTPS请求,并将响应存储在数据库中。-w选项还会从GitHub下载最新版本的Wappalyzer Web技术数据库。# 搜索与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地址的响应进行查询。这一点很重要,因为某些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许可证条款进行许可。
WebStor由Ross Geerlings <rjgeer@umich.edu>、<ross@seekerdlp.com>编写。
WebStor根据MIT许可证条款进行许可,如下所示。
MIT许可证
版权所有 (c) 2020-2024 密歇根大学董事会。
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人,不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许获取本软件的人在满足以下条件的情况下这样做:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按“原样”提供,不提供任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而引起的任何索赔、损害或其他责任负责,无论是合同诉讼、侵权行为还是其他。