
扫描 Google(或其他)搜索结果中的漏洞。
dorkbot 是一个模块化命令行工具,用于对 Google 搜索查询或其他支持来源返回的网页集合执行漏洞扫描。它分为两组模块:
目标在索引时存储在数据库中。扫描后,将生成一个标准的 JSON 报告,其中包含发现的任何漏洞。索引和扫描过程可以单独运行,也可以合并到单个命令中(每种最多一个)。
$ pip3 install dorkbot wapiti3
$ dorkbot -i google_api -o key=your_api_credential_here -o engine=your_engine_id_here -o query="filetype:php inurl:id"
$ dorkbot -s wapiti
-h, --help 显示程序(或指定模块)帮助
--show-defaults 在帮助输出中显示默认值
usage: dorkbot [-c CONFIG] [-r DIRECTORY] [--source [SOURCE]]
[--show-defaults] [--count COUNT] [--random] [-h] [--log LOG]
[-v] [-V] [-d DATABASE] [-u] [--drop-tables]
[--retries RETRIES] [--retry-on RETRY_ON] [--show-stats] [-l]
[-n] [--list-sources] [--add-target TARGET]
[--delete-target TARGET] [--flush-targets] [-m] [-e]
[--list-sources] [--add-target TARGET]
[--delete-target TARGET] [--flush-targets] [-m] [-e]
[--list-sources] [--add-target TARGET]
[--delete-target TARGET] [--flush-targets] [-m] [-e]
[-i INDEXER] [-o INDEXER_ARG] [-s SCANNER] [-p SCANNER_ARG]
[-t] [-x] [--mark-unscanned MARK_UNSCANNED] [-g] [-f]
[--fingerprint-max FINGERPRINT_MAX] [--list-blocklist]
[--add-blocklist-item ITEM] [--delete-blocklist-item ITEM]
[--flush-blocklist] [-b EXTERNAL_BLOCKLIST]
options:
-c, --config CONFIG 配置文件
-r, --directory DIRECTORY
Dorkbot 目录(数据库、工具、报告的默认位置)
--source [SOURCE] 与目标关联的标签
--show-defaults 在帮助输出中显示默认值
-h, --help 显示程序(或指定模块)帮助
--log LOG 日志文件路径
-v, --verbose 启用详细日志(可多次使用以增加详细程度)
-V, --version 打印版本
retrieval:
--count COUNT 要检索的目标数量(0/未设置 = 全部)
--random 按随机顺序检索目标
database:
-d, --database DATABASE
数据库文件/URI
-u, --prune 在不扫描的情况下应用指纹和黑名单
--drop-tables 删除并重新创建表
--retries RETRIES 操作失败时的重试次数
--retry-on RETRY_ON 应触发重试的错误字符串(可多次使用)
--show-stats 显示总/未扫描目标计数和指纹计数
targets:
-l, --list-targets 列出数据库中的目标
-n, --unscanned-only 仅包含未扫描的目标
--list-sources 列出数据库中的来源
--add-target TARGET 向目标数据库添加一个 URL
--delete-target TARGET
从目标数据库中删除一个 URL
--flush-targets 删除所有目标
-m, --delete-on-match
如果目标与黑名单项匹配则删除
-e, --delete-on-error
如果处理目标时遇到错误则删除
indexing:
-i, --indexer INDEXER
要使用的索引器模块
-o, --indexer-arg INDEXER_ARG
向索引器模块传递参数(可多次使用)
scanning:
-s, --scanner SCANNER
要使用的扫描器模块
-p, --scanner-arg SCANNER_ARG
向扫描器模块传递参数(可多次使用)
-t, --test 获取下一个可扫描目标但不标记为已扫描
-x, --reset-scanned 重置所有目标的扫描状态
--mark-unscanned MARK_UNSCANNED
重置指定目标的扫描状态
fingerprints:
-g, --generate-fingerprints
为所有目标生成指纹
-f, --flush-fingerprints
删除所有已生成的指纹
--fingerprint-max FINGERPRINT_MAX
在删除新匹配之前每个指纹的最大匹配数
blocklist:
--list-blocklist 列出内部黑名单条目
--add-blocklist-item ITEM
向内部黑名单添加 IP/主机/正则表达式模式
--delete-blocklist-item ITEM
从内部黑名单删除一个条目
--flush-blocklist 删除所有内部黑名单条目
-b, --external-blocklist EXTERNAL_BLOCKLIST
补充的外部黑名单文件/数据库(可多次使用)
数据库驱动:
扫描器:
根据需要,dorkbot 将按以下顺序搜索工具:
所有 SQLite 数据库、工具和报告都保存在 dorkbot 目录中,默认情况下该目录是当前目录。可以使用 --directory 标志强制指定一个目录。此目录内的默认文件路径如下:
配置文件默认从 ~/.config/dorkbot/(Linux/MacOS)或应用程序数据文件夹(Windows)读取,遵守 $XDG_CONFIG_HOME / %APPDATA%。此目录内的默认文件路径如下:
配置文件(dorkbot.ini)可用于预填充某些命令行标志。
dorkbot.ini 示例:
[dorkbot] database=/opt/dorkbot/dorkbot.db [dorkbot.indexers.wayback] domain=example.com [dorkbot.scanners.arachni] path=/opt/arachni/bin report_dir=/tmp/reports
目标数据库存储要扫描的 URL 及其来源。它通过为每个唯一的页面+参数集构建指纹列表,并将新目标与现有指纹进行比较,来跟踪每个 URL 的扫描状态。指纹只需生成一次,并将在需要时按需生成。指纹和扫描状态可以独立重置。
支持的数据库地址:
注意,对于 SQLite 目标数据库,协议是可选的(外部黑名单仍然需要)。此外,可以通过指定数据库地址为 ":memory:" 来完全避免写入磁盘,使用 SQLite 的内存特性。
黑名单是一个 IP 地址、主机名或 URL 模式正则表达式的列表,这些模式不应被扫描。如果目标 URL 与该列表中的任何项匹配,则会被跳过并从数据库中删除。内部黑名单维护在 dorkbot 数据库中,但可以通过将适当的文件路径或连接 URI 传递给 --external-blocklist 来指定单独的文件或数据库。目标首先与内部黑名单匹配,然后可选地与任何提供的外部黑名单匹配。
支持的外部黑名单:
黑名单项示例:
regex:^[^\?]+$ regex:.*login.* regex:^https?://[^.]*.example.com/.* host:www.google.com ip:127.0.0.1
第一个项将删除任何不包含问号的目标,即任何没有要测试的 GET 参数的 URL。第二个试图排除登录功能,第三个黑名单所有位于 example.com 的目标 URL。第四个排除主机名为 www.google.com 的目标,第五个排除主机解析为 127.0.0.1 的目标。
修剪标志遍历所有目标,计算指纹,并将后续匹配的目标标记为已扫描。同时也会将黑名单匹配的目标标记为已扫描。结果是数据库中的 --list-targets --unscanned-only 只返回可扫描的 URL。它遵循 random 标志以随机顺序处理指纹,以及 unscanned-only 标志以跳过已扫描的目标(这些目标必然已有指纹)。黑名单检查遵循 --delete-on-match 以删除目标而非标记为已扫描,以及 --delete-on-error 以删除任何无法解析有效主机名或无法将主机名解析为 IP 地址的条目。
无论选择哪个模块,以下选项均适用:
--source [SOURCE] 与目标关联的标签 --count COUNT 要检索/扫描的 URL 数量,或 -1 表示全部 --random 按随机顺序检索 URL
此外,与黑名单相关的选项 --delete-on-match / --delete-on-error 将导致匹配或错误的目标被跳过。
http-retries RETRIES 在出错时重试获取结果的次数 threads THREADS 对 commoncrawl.org 的并发请求数
搜索 bing.com key KEY API 密钥 query QUERY 搜索查询
搜索 commoncrawl.org 的爬取数据 domain DOMAIN 拉取指定域或子域的所有结果 index INDEX 搜索特定的索引 filter FILTER 应用于搜索的查询过滤器 page-size PAGE_SIZE 每页请求的结果数
搜索 google.com key KEY API 密钥 engine ENGINE CSE ID query QUERY 搜索查询 domain DOMAIN 将搜索限制到指定域
搜索指定 pywb 服务器的爬取数据
server SERVER pywb 服务器 URL
domain DOMAIN 拉取指定域或子域的所有结果
cdx-api-suffix CDX_API_SUFFIX
索引 API 中索引后的后缀
index INDEX 搜索特定的索引
field FIELD 要查询的字段(fl)
filter FILTER 应用于搜索的查询过滤器
page-size PAGE_SIZE 每页请求的结果数
从标准输入接受 URL,每行一个
搜索 archive.org 的爬取数据 domain DOMAIN 拉取指定域或子域的所有结果 filter FILTER 应用于搜索的查询过滤器 page-size PAGE_SIZE 每页请求的结果数 from FROM 开始时间戳 to TO 结束时间戳
args ARGS 空格分隔的附加参数列表
report-dir REPORT_DIR
保存报告文件的目录
report-filename REPORT_FILENAME
保存漏洞报告的文件名
report-append 如果报告文件存在则追加
report-indent REPORT_INDENT
漏洞报告 JSON 的缩进级别
label LABEL 包含在漏洞报告中的友好名称字段
使用 arachni 命令行扫描器进行扫描 path PATH 扫描器二进制文件路径
使用 scnr 命令行扫描器进行扫描 path PATH 扫描器二进制文件路径
使用 wapiti 命令行扫描器进行扫描 path PATH 扫描器二进制文件路径