nuclei

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
[19:36:03 shaoxinSEC@APT]# nuclei -h
Nuclei 是一款基于模板的快速漏洞扫描器,专注于高度的可配置性、强大的扩展性和易用性。

使用方法:
nuclei [标志位]

标志位 (Flags):

目标 (TARGET):
-u, -target string[] 要扫描的目标 URL/主机
-l, -list string 包含待扫描目标 URL/主机列表的文件路径(每行一个)
-eh, -exclude-hosts string[] 要从输入列表中排除的主机(IP, CIDR, 主机名)
-resume string 从指定文件恢复扫描并保存到该文件(此模式下将禁用集群功能)
-sa, -scan-all-ips 扫描与 DNS 记录关联的所有 IP
-iv, -ip-version string[] 要扫描的主机名的 IP 版本 (4, 6) - (默认 4)

目标格式 (TARGET-FORMAT):
-im, -input-mode string 输入文件的模式 (list, burp, jsonl, yaml, openapi, swagger) (默认 "list")
-ro, -required-only 在使用输入格式生成请求时,仅使用必填字段
-sfv, -skip-format-validation 解析输入文件时跳过格式验证(如缺少变量)
-vtt, -vars-text-templating 为输入文件中的变量启用文本模板功能(仅适用于 yaml 输入模式)
-vfp, -var-file-paths string[] 包含要注入到 yaml 输入中的变量的 yaml 文件路径列表

模板 (TEMPLATES):
-nt, -new-templates 仅运行最新 nuclei-templates 版本中添加的新模板
-ntv, -new-templates-version string[] 运行在特定版本中添加的新模板
-as, -automatic-scan 使用 wappalyzer 技术检测自动映射到标签进行 Web 扫描
-t, -templates string[] 要运行的模板或模板目录列表(逗号分隔,或文件路径)
-turl, -template-url string[] 要运行的模板 URL 或包含模板 URL 的列表(逗号分隔,或文件路径)
-ai, -prompt string 使用 AI 提示词生成并运行模板
-w, -workflows string[] 要运行的工作流或工作流目录列表(逗号分隔,或文件路径)
-wurl, -workflow-url string[] 要运行的工作流 URL 或包含工作流 URL 的列表(逗号分隔,或文件路径)
-validate 验证传递给 nuclei 的模板是否有效
-nss, -no-strict-syntax 禁用对模板的严格语法检查
-td, -template-display 显示模板的内容
-tl 列出所有符合当前过滤条件的模板
-tgl 列出所有可用的标签
-sign 使用 NUCLEI_SIGNATURE_PRIVATE_KEY 环境变量中定义的私钥为模板签名
-code 启用加载基于 code 协议的模板
-dut, -disable-unsigned-templates 禁用运行未签名或签名不匹配的模板
-esc, -enable-self-contained 启用加载自包含的模板
-egm, -enable-global-matchers 启用加载全局匹配器模板
-file 启用加载文件模板

过滤 (FILTERING):
-a, -author string[] 根据作者过滤要运行的模板(逗号分隔,或文件路径)
-tags string[] 根据标签过滤要运行的模板(逗号分隔,或文件路径)
-etags, -exclude-tags string[] 根据标签排除要运行的模板(逗号分隔,或文件路径)
-itags, -include-tags string[] 即使默认或配置中已排除,也要执行的标签
-id, -template-id string[] 根据模板 ID 过滤要运行的模板(逗号分隔,或文件路径,允许通配符)
-eid, -exclude-id string[] 根据模板 ID 排除要运行的模板(逗号分隔,或文件路径)
-it, -include-templates string[] 要执行的模板文件或目录路径,即使默认或配置中已排除
-et, -exclude-templates string[] 要排除的模板文件或目录路径(逗号分隔,或文件路径)
-em, -exclude-matchers string[] 要在结果中排除的模板匹配器
-s, -severity value[] 根据严重等级过滤要运行的模板。可选值: info, low, medium, high, critical, unknown
-es, -exclude-severity value[] 根据严重等级排除要运行的模板。可选值: info, low, medium, high, critical, unknown
-pt, -type value[] 根据协议类型过滤要运行的模板。可选值: dns, file, http, headless, tcp, workflow, ssl, websocket, whois, code, javascript
-ept, -exclude-type value[] 根据协议类型排除要运行的模板。可选值同上
-tc, -template-condition string[] 根据表达式条件过滤要运行的模板

输出 (OUTPUT):
-o, -output string 将发现的问题/漏洞写入输出文件
-sresp, -store-resp 将所有经过 nuclei 的请求/响应对存储到输出目录
-srd, -store-resp-dir string 将所有经过 nuclei 的请求/响应对存储到自定义目录 (默认 "output")
-silent 仅显示发现的结果
-nc, -no-color 禁用输出内容的颜色高亮 (ANSI 转义码)
-j, -jsonl 以 JSONL(ines) 格式写入输出
-irr, -include-rr -omit-raw 在 JSON、JSONL 和 Markdown 输出中包含请求/响应对(仅针对发现结果)[已弃用,请使用 -omit-raw] (默认开启)
-or, -omit-raw 在 JSON、JSONL 和 Markdown 输出中省略请求/响应对(仅针对发现结果)
-ot, -omit-template 在 JSON、JSONL 输出中省略编码后的模板
-nm, -no-meta 禁用在 CLI 输出中打印结果元数据
-ts, -timestamp 在 CLI 输出中启用时间戳显示
-rdb, -report-db string Nuclei 报告数据库(始终使用此选项以持久化报告数据)
-ms, -matcher-status 显示匹配失败的状态
-me, -markdown-export string 以 Markdown 格式导出结果的目录
-se, -sarif-export string 以 SARIF 格式导出结果的文件
-je, -json-export string 以 JSON 格式导出结果的文件
-jle, -jsonl-export string 以 JSONL(ine) 格式导出结果的文件
-rd, -redact string[] 从查询参数、请求头和请求体中编辑(遮蔽)给定的键列表

配置 (CONFIGURATIONS):
-config string nuclei 配置文件的路径
-tp, -profile string 要运行的模板配置文件
-tpl, -profile-list 列出社区模板配置文件
-fr, -follow-redirects 为 HTTP 模板启用重定向跟随
-fhr, -follow-host-redirects 在同一主机上跟随重定向
-mr, -max-redirects int HTTP 模板要跟随的最大重定向次数 (默认 10)
-dr, -disable-redirects 为 HTTP 模板禁用重定向
-rc, -report-config string nuclei 报告模块配置文件
-H, -header string[] 在所有 HTTP 请求中包含的自定义头/Cookie,格式为 header:value (CLI, 文件)
-V, -var value 自定义变量,格式为 key=value
-r, -resolvers string 包含 nuclei 所用解析器列表的文件
-sr, -system-resolvers 使用系统 DNS 解析作为错误回退方案
-dc, -disable-clustering 禁用请求的集群(合并)功能
-passive 启用被动 HTTP 响应处理模式
-fh2, -force-http2 在请求上强制使用 HTTP/2 连接
-ev, -env-vars 允许在模板中使用环境变量
-cc, -client-cert string 用于对被扫描主机进行身份验证的客户端证书文件 (PEM 编码)
-ck, -client-key string 用于对被扫描主机进行身份验证的客户端密钥文件 (PEM 编码)
-ca, -client-ca string 用于对被扫描主机进行身份验证的客户端证书颁发机构文件 (PEM 编码)
-sml, -show-match-line 为文件模板显示匹配行,仅与提取器配合使用
-ztls 使用 ztls 库,并自动回退到标准库以支持 TLS 1.3 [已弃用] 默认已启用自动回退到 ztls
-sni string TLS SNI 主机名 to use (默认: 输入域名)
-dka, -dialer-keep-alive value 网络请求的 Keep-Alive 持续时间。
-lfa, -allow-local-file-access 允许在任何地方访问文件(载荷)
-lna, -restrict-local-network-access 阻止与本地/私有网络的连接
-i, -interface string 用于网络扫描的网络接口
-at, -attack-type string 要执行的载荷组合类型 (batteringram, pitchfork, clusterbomb)
-sip, -source-ip string 用于网络扫描的源 IP 地址
-rsr, -response-size-read int 读取的最大响应大小(字节)
-rss, -response-size-save int 保存的最大响应大小(字节)(默认 1048576)
-reset 重置将移除所有 nuclei 配置和数据文件(包括 nuclei-templates)
-tlsi, -tls-impersonate 启用实验性的 Client Hello (JA3) TLS 随机化
-hae, -http-api-endpoint string 实验性的 HTTP API 端点

InteractSH (OAST 交互):
-iserver, -interactsh-server string 用于自建实例的 Interactsh 服务器 URL (默认: oast.pro, oast.live, oast.site, oast.online, oast.fun, oast.me)
-itoken, -interactsh-token string 用于自建 Interactsh 服务器的认证令牌
-interactions-cache-size int 交互缓存中保留的请求数量 (默认 5000)
-interactions-eviction int 从缓存中驱逐请求前的等待秒数 (默认 60)
-interactions-poll-duration int 每次轮询交互请求前的等待秒数 (默认 5)
-interactions-cooldown-period int 退出前为交互轮询增加的额外时间 (默认 5)
-ni, -no-interactsh 为 OAST 测试禁用 Interactsh 服务器,排除基于 OAST 的模板

模糊测试 (FUZZING):
-ft, -fuzzing-type string 覆盖模板中设置的模糊测试类型 (replace, prefix, postfix, infix)
-fm, -fuzzing-mode string 覆盖模板中设置的模糊测试模式 (multiple, single)
-fuzz 启用加载模糊测试模板 (已弃用: 请使用 -dast)
-dast 启用/运行 DAST(动态应用安全测试,即模糊测试)nuclei 模板
-dts, -dast-server 启用 DAST 服务器模式(实时模糊测试)
-dtr, -dast-report 将 DAST 扫描报告写入文件
-dtst, -dast-server-token string DAST 服务器令牌 (可选)
-dtsa, -dast-server-address string DAST 服务器地址 (默认 "localhost:9055")
-dfp, -display-fuzz-points 在输出中显示模糊测试点以供调试
-fuzz-param-frequency int 在跳过前,对无趣参数进行模糊测试的频率 (默认 10)
-fa, -fuzz-aggression string 模糊测试攻击级别,控制模糊测试的载荷数量 (low, medium, high) (默认 "low")
-cs, -fuzz-scope string[] 模糊测试器要遵循的在范围内的 URL 正则表达式
-cos, -fuzz-out-scope string[] 模糊测试器要排除的超出范围的 URL 正则表达式

Uncover (资产搜索引擎集成):
-uc, -uncover 启用 Uncover 引擎
-uq, -uncover-query string[] Uncover 搜索查询语句
-ue, -uncover-engine string[] Uncover 搜索引擎 (shodan, censys, fofa, shodan-idb, quake, hunter, zoomeye, netlas, criminalip, publicwww, hunterhow, google, odin, binaryedge, onyphe, driftnet, greynoise) (默认 shodan)
-uf, -uncover-field string Uncover 要返回的字段 (ip, port, host) (默认 "ip:port")
-ul, -uncover-limit int Uncover 要返回的结果数量 (默认 100)
-ur, -uncover-ratelimit int 覆盖未知速率限制的引擎的速率限制 (默认 60 请求/分钟)

速率限制 (RATE-LIMIT):
-rl, -rate-limit int 每秒发送的最大请求数 (默认 150)
-rld, -rate-limit-duration value 每秒发送的最大请求数 (默认 1s)
-rlm, -rate-limit-minute int 每分钟发送的最大请求数 (已弃用)
-bs, -bulk-size int 每个模板并行分析的最大主机数 (默认 25)
-c, -concurrency int 并行执行的最大模板数 (默认 25)
-hbs, -headless-bulk-size int 每个模板并行分析的无头浏览器主机最大数量 (默认 10)
-headc, -headless-concurrency int 并行执行的最大无头浏览器模板数 (默认 10)
-jsc, -js-concurrency int 并行执行的 JavaScript 运行时最大数量 (默认 120)
-pc, -payload-concurrency int 每个模板的最大载荷并发数 (默认 25)
-prc, -probe-concurrency int 与 httpx 一起使用的 HTTP 探测并发数 (默认 50)
-tlc, -template-loading-concurrency int 最大的并发模板加载操作数 (默认 50)

优化 (OPTIMIZATIONS):
-timeout int 超时时间(秒)(默认 10)
-retries int 失败请求的重试次数 (默认 1)
-ldp, -leave-default-ports 保留默认的 HTTP/HTTPS 端口 (例如 host:80, host:443)
-mhe, -max-host-error int 在跳过扫描某个主机前,该主机允许的最大错误数 (默认 30)
-te, -track-error string[] 将给定的错误添加到 max-host-error 监视列表 (standard, file)
-nmhe, -no-mhe 禁用基于错误跳过主机扫描
-project 使用一个项目文件夹来避免重复发送相同的请求
-project-path string 设置特定的项目路径 (默认 "C:\Users\...\AppData\Local\Temp")
-spm, -stop-at-first-match 在第一个匹配项处理后停止处理 HTTP 请求 (可能会破坏模板/工作流逻辑)
-stream 流模式 - 开始处理而不对输入进行排序
-ss, -scan-strategy value 扫描时使用的策略 (auto/host-spray/template-spray) (默认 auto)
-irt, -input-read-timeout value 输入读取的超时时间 (默认 3m0s)
-nh, -no-httpx 为非 URL 输入禁用 httpx 探测
-no-stdin 禁用标准输入处理

无头浏览器 (HEADLESS):
-headless 启用需要无头浏览器支持的模板(Linux 上的 root 用户将禁用沙箱)
-page-timeout int 无头模式下每个页面的等待秒数 (默认 20)
-sb, -show-browser 在无头模式运行模板时在屏幕上显示浏览器
-ho, -headless-options string[] 使用附加选项启动无头 Chrome
-sc, -system-chrome 使用本地安装的 Chrome 浏览器,而不是 nuclei 内置的
-lha, -list-headless-action 列出所有可用的无头操作

调试 (DEBUG):
-debug 显示所有请求和响应
-dreq, -debug-req 显示所有已发送的请求
-dresp, -debug-resp 显示所有收到的响应
-p, -proxy string[] 要使用的 http/socks5 代理列表(逗号分隔或文件输入)
-pi, -proxy-internal 代理所有内部请求
-ldf, -list-dsl-function 列出所有受支持的 DSL 函数签名
-tlog, -trace-log string 写入已发送请求跟踪日志的文件
-elog, -error-log string 写入已发送请求错误日志的文件
-version 显示 nuclei 版本
-hm, -hang-monitor 启用 nuclei 挂起监控
-v, -verbose 显示详细输出
-profile-mem string 生成内存(堆)分析和追踪文件
-vv 显示扫描加载的模板
-svd, -show-var-dump 显示变量转储以供调试
-vdl, -var-dump-limit int 限制变量转储中显示的字符数 (默认 255)
-ep, -enable-pprof 启用 pprof 调试服务器
-tv, -templates-version 显示已安装的 nuclei-templates 的版本
-hc, -health-check 运行诊断检查

更新 (UPDATE):
-up, -update 将 nuclei 引擎更新到最新发布版本
-ut, -update-templates 将 nuclei-templates 更新到最新发布版本
-ud, -update-template-dir string 自定义安装/更新 nuclei-templates 的目录
-duc, -disable-update-check 禁用自动的 nuclei/模板 更新检查

统计 (STATISTICS):
-stats 显示正在运行的扫描的统计信息
-sj, -stats-json 以 JSONL(ines) 格式显示统计信息
-si, -stats-interval int 显示统计信息更新之间的等待秒数 (默认 5)
-mp, -metrics-port int 暴露 nuclei 指标的端口 (默认 9092)
-hps, -http-stats 启用 HTTP 状态码捕获(实验性)

云端 (CLOUD):
-auth 配置 ProjectDiscovery Cloud (PDCP) API 密钥 (默认 true)
-tid, -team-id string 将扫描结果上传到指定的团队 ID (可选) (默认 "none")
-cup, -cloud-upload 将扫描结果上传到 PDCP 仪表板 [已弃用,请使用 -dashboard]
-sid, -scan-id string 将扫描结果上传到现有的扫描 ID (可选)
-sname, -scan-name string 要设置的扫描名称 (可选)
-pd, -dashboard 在 ProjectDiscovery Cloud (PDCP) UI 仪表板中上传/查看 nuclei 结果
-pdu, -dashboard-upload string 在 ProjectDiscovery Cloud (PDCP) UI 仪表板中上传/查看 nuclei 结果文件 (jsonl)

认证 (AUTHENTICATION):
-sf, -secret-file string[] 包含 nuclei 认证扫描所需密钥的配置文件路径
-ps, -prefetch-secrets 从密钥文件中预取密钥

示例 (EXAMPLES)
对单个主机运行 nuclei
$ nuclei -target example.com

使用特定模板目录运行 nuclei
$ nuclei -target example.com -t http/cves/ -t ssl

对主机列表运行 nuclei
$ nuclei -list hosts.txt

使用 JSON 输出运行 nuclei
$ nuclei -target example.com -json-export output.json

使用排序的 Markdown 输出运行 nuclei(配合环境变量)
$ MARKDOWN_EXPORT_SORT_MODE=template nuclei -target example.com -markdown-export nuclei_report/

使用代理、nginx所有模板扫描,并将结果上传至云端Project Discovery Dashboard
$ nuclei -u www.example.com -p "socks5://127.0.0.1:7890" -tags "nginx" -dashboard

使用代理、自动识别指纹并筛选模板进行扫描、将结果上传至Dashboard
$ nuclei -u www.example.com -as -p "socks5://127.0.0.1:7890" -dashboard

更多文档请访问: https://docs.nuclei.sh/getting-started/running

httpx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
httpx 是一款快速、多用途的 HTTP 工具集,支持通过 retryablehttp 库执行多种探测任务。
用法:httpx [参数]

输入(INPUT):
-l, -list string 包含待处理主机列表的输入文件
-rr, -request string 包含原始请求的文件
-u, -target string[] 指定要探测的目标主机
-im, -input-mode string 输入文件的模式(如 burp)

探测项(PROBES):
-sc, -status-code 显示响应状态码
-cl, -content-length 显示响应内容长度
-ct, -content-type 显示响应内容类型
-location 显示响应的重定向地址
-favicon 显示 /favicon.ico文件的 mmh3 哈希值
-hash string 显示响应主体的哈希值(支持:md5、mmh3、simhash、sha1、sha256、sha512)
-jarm 显示 JARM 指纹哈希
-rt, -response-time 显示响应耗时
-lc, -line-count 显示响应主体行数
-wc, -word-count 显示响应主体单词数
-title 显示网页标题
-bp, -body-preview 显示响应主体前 N 个字符(默认 100)
-server, -web-server 显示服务器名称
-td, -tech-detect 显示基于 Wappalyzer 数据集识别出的技术栈
-cff, -custom-fingerprint-file string 自定义技术识别指纹文件路径
-cpe 显示基于awesome-search-queries的 CPE(通用平台枚举)
-wp, -wordpress 显示 WordPress 插件及主题信息
-method 显示 HTTP 请求方法
-ws, -websocket 显示启用 WebSocket 的服务器
-ip 显示主机的 IP 地址
-cname 显示主机的 CNAME
-extract-fqdn, -efqdn 从响应体和头部中提取域名及子域,并以 jsonl/csv 格式输出
-asn 显示主机的 ASN 信息
-cdn 显示使用的 CDN/WAF(默认开启)
-probe 显示探测状态

无头浏览器(HEADLESS):
-ss, -screenshot 启用无头浏览器保存网页截图
-system-chrome 使用本地安装的 Chrome 浏览器进行截图
-ho, -headless-options string[] 启动无头 Chrome 时附加的选项
-esb, -exclude-screenshot-bytes 在 JSON 输出中排除截图字节数据
-ehb, -exclude-headless-body 在 JSON 输出中排除无头浏览器的 body 内容
-no-screenshot-full-page 不保存整页截图
-st, -screenshot-timeout value 设置截图超时时间(单位:秒,默认 10s)
-sid, -screenshot-idle value 设置截图前等待空闲时间(单位:秒,默认 1s)
-jsc, -javascript-code string[] 页面加载后执行的 JavaScript 代码

匹配器(MATCHERS):
-mc, -match-code string 匹配指定状态码的响应(如:-mc 200,302)
-ml, -match-length string 匹配指定内容长度的响应(如:-ml 100,102)
-mlc, -match-line-count string 匹配指定行数的响应主体(如:-mlc 423,532)
-mwc, -match-word-count string 匹配指定词数的响应主体(如:-mwc 43,55)
-mfc, -match-favicon string[] 匹配指定 favicon 哈希值的响应(如:-mfc 1494302000)
-ms, -match-string string[] 匹配包含指定字符串的响应(如:-ms admin)
-mr, -match-regex string[] 匹配符合指定正则表达式的响应(如:-mr admin)
-mcdn, -match-cdn string[] 匹配合指定 CDN 提供商的主机(如:fastly, cloudfront, 腾讯云 等)
-mrt, -match-response-time string 匹配指定响应时间的响应(如:-mrt '< 1')
-mdc, -match-condition string 使用 DSL 表达式条件匹配响应

提取器(EXTRACTOR):
-er, -extract-regex string[] 显示匹配正则表达式的内容
-ep, -extract-preset string[] 显示预设正则匹配的内容(如 url、ipv4、mail)

过滤器(FILTERS):
-fc, -filter-code string 过滤指定状态码的响应(如:-fc 403,401)
-fep, -filter-error-page 基于机器学习过滤错误页面响应
-fd, -filter-duplicates 去除近似重复响应(仅保留第一条)
-fl, -filter-length string 过滤指定内容长度的响应(如:-fl 23,33)
-flc, -filter-line-count string 过滤指定行数的响应主体(如:-flc 423,532)
-fwc, -filter-word-count string 过滤指定词数的响应主体(如:-fwc 423,532)
-ffc, -filter-favicon string[] 过滤指定 favicon 哈希值的响应(如:-ffc 1494302000)
-fs, -filter-string string[] 过滤包含指定字符串的响应(如:-fs admin)
-fe, -filter-regex string[] 过滤符合指定正则表达式的响应(如:-fe admin)
-fcdn, -filter-cdn string[] 过滤指定 CDN 提供商的主机(如:fastly, cloudfront, 腾讯云 等)
-frt, -filter-response-time string 过滤指定响应时间的响应(如:-frt '> 1')
-fdc, -filter-condition string 使用 DSL 表达式条件过滤响应
-strip 去除响应中的所有标签(支持 html、xml,默认为 html)
-lof, -list-output-fields 指定输出的字段列表(逗号分隔)
-eof, -exclude-output-fields string[] 根据条件排除输出字段

速率限制(RATE-LIMIT):
-t, -threads int 使用的线程数(默认 50)
-rl, -rate-limit int 每秒最大请求数(默认 150)
-rlm, -rate-limit-minute int 每分钟最大请求数

杂项(MISCELLANEOUS):
-pa, -probe-all-ips 探测与主机关联的所有 IP 地址
-p, -ports string[] 指定探测端口(支持 nmap 语法,如 http:1,2-10,11,https:80)
-path string 指定一个或多个探测路径(逗号分隔或文件输入)
-tls-probe 对提取到的 TLS 域名发送 HTTP 探测
-csp-probe 对提取到的 CSP 域名发送 HTTP 探测
-tls-grab 抓取 TLS(SSL)相关信息
-pipeline 探测并显示是否支持 HTTP/1.1 管道传输
-http2 探测并显示是否支持 HTTP/2
-vhost 探测并显示是否支持虚拟主机(VHOST)
-ldv, -list-dsl-variables 列出支持 DSL 匹配器和过滤器的 JSON 输出字段名

更新(UPDATE):
-up, -update 将 httpx 升级到最新版本
-duc, -disable-update-check 禁用自动检查更新功能

输出(OUTPUT):
-o, -output string 指定输出结果文件名
-oa, -output-all 将所有格式的输出保存到指定文件
-sr, -store-response 将HTTP响应存储到输出目录
-srd, -store-response-dir string 自定义 HTTP 响应保存目录
-ob, -omit-body 省略输出中的响应主体内容
-csv 输出为 CSV 格式
-csvo, -csv-output-encoding string 指定 CSV 输出编码格式
-j, -json 输出为 JSONL(每行一个 JSON)格式
-irh, -include-response-header 在 JSON 输出中包含 HTTP 响应头(仅限 -json)
-irr, -include-response 在 JSON 输出中包含完整的 HTTP 请求/响应(仅限 -json)
-irrb, -include-response-base64 在 JSON 输出中包含 Base64 编码的请求/响应内容(仅限 -json)
-include-chain 在 JSON 输出中包含重定向链(仅限 -json)
-store-chain 在响应中包含重定向链(仅限 -sr)
-svrc, -store-vision-recon-cluster 保存可视化侦察聚类结果(仅限 -ss 和 -sr)
-pr, -protocol string 指定使用的协议(unknown、http11、http2 [实验性]、http3 [实验性])
-fepp, -filter-error-page-path string 保存过滤出的错误页面的路径(默认为 "filtered_error_page.json")

配置(CONFIGURATIONS):
-config string 指定配置文件路径(默认为 $HOME/.config/httpx/config.yaml)
-r, -resolvers string[] 自定义 DNS 解析器列表(文件或逗号分隔)
-allow string[] 允许处理的 IP/CIDR 白名单(文件或逗号分隔)
-deny string[] 拒绝处理的 IP/CIDR 黑名单(文件或逗号分隔)
-sni, -sni-name string 自定义 TLS SNI 名称
-random-agent 启用随机 User-Agent(默认开启)
-auto-referer 将 Referer 设置为当前 URL
-H, -header string[] 添加自定义 HTTP 请求头
-http-proxy, -proxy string 设置代理(如:http://127.0.0.1:8080)
-unsafe 跳过 Go 标准库对请求的规范化处理,直接发送原始请求
-resume 通过 resume.cfg 恢复扫描进度
-fr, -follow-redirects 跟踪 HTTP 重定向
-maxr, -max-redirects int 每主机最大重定向次数(默认 10)
-fhr, -follow-host-redirects 仅跟踪同主机的重定向
-rhsts, -respect-hsts 对重定向请求遵守 HSTS 响应头
-vhost-input 以虚拟主机列表作为输入
-x string 指定要探测的请求方法,使用 'all' 探测所有方法
-body string 在请求中附带 POST 数据体
-s, -stream 流模式,立即处理输入目标,不进行排序
-sd, -skip-dedupe 在流模式下禁用去重
-ldp, -leave-default-ports 在 Host 头中保留默认 http/https 端口(如 http://host:80)
-ztls 使用 ztls 库并自动回退至标准 TLS(适用于 TLS 1.3)
-no-decode 禁止解码响应主体
-tlsi, -tls-impersonate 启用实验性的 Client Hello(JA3)TLS 随机化功能
-no-stdin 禁用标准输入处理
-hae, -http-api-endpoint string 实验性的 HTTP API 接口地址
-sf, -secret-file string 用于身份验证的密钥文件路径

调试(DEBUG):
-health-check, -hc 运行诊断检查
-debug 在终端中显示请求/响应内容
-debug-req 在终端中显示请求内容
-debug-resp 在终端中显示响应内容
-version 显示 httpx 当前版本
-stats 显示扫描统计信息
-profile-mem string 可选的内存分析转储文件路径
-silent 静默模式
-v, -verbose 详细模式
-si, -stats-interval int 显示统计信息更新的时间间隔(单位:秒,默认 5)
-nc, -no-color 禁用终端彩色输出
-tr, -trace 启用调用追踪

优化(OPTIMIZATIONS):
-nf, -no-fallback 同时显示 HTTP 和 HTTPS 协议的探测结果
-nfs, -no-fallback-scheme 按输入中指定的协议进行探测
-maxhr, -max-host-error int 单主机错误数达到上限后跳过剩余路径(默认 30)
-e, -exclude string[] 排除符合指定条件(如 'cdn'、'private-ips'、CIDR、IP、正则)的主机
-retries int 重试次数
-timeout int 请求超时时间(单位:秒,默认 10)
-delay value 每个请求之间的延迟(如:200ms、1s,默认 -1ns)
-rsts, -response-size-to-save int 保存的最大响应大小(单位:字节,默认 512000000)
-rstr, -response-size-to-read int 读取的最大响应大小(单位:字节,默认 512000000)

云端(CLOUD):
-auth 配置 ProjectDiscovery Cloud(PDCP)API 密钥(默认开启)
-ac, -auth-config string 指定 PDCP 的 API 凭据配置文件
-pd, -dashboard 在 PDCP 控制面板中上传/查看结果
-tid, -team-id string 将资产结果上传至指定团队 ID(可选)
-aid, -asset-id string 将新资产添加至现有资产 ID(可选)
-aname, -asset-name string 设置资产组名称(可选)
-pdu, -dashboard-upload string 将httpx的JSONL输出文件上传至PDCP控制面板
1
2
# 如果结果数量较少,可以删除-fd参数,或者降低其他限制
httpx -l hosts.txt -sc -cl -ct --server -td -ip -cname -mc 200,201,301,302,403 -fd -fs "bad request" -p 80,81,82,83,85,88,443,888,3443,4430,4433,4443,5443,7001,8000,8001,8002,8003,8008,8009,8010,8080,8081,8082,8086,8088,8089,8090,8443,8888,9000,9043,9100,9200,9443,9999,10443,21,22,23,80,81,135,139,389,443,445,1099,1433,1521,2375,3306,3389,3873,4446,4899,5432,5900,5985,6379,7001,8000,8080,8089,9000,9200,11211,20880,27017 -path admin,login,register -csv -o result.csv -fr -maxr 3 -timeout 5

sqlmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
使用方法:python sqlmap [选项]

选项说明:
-h, --help 显示基本帮助信息并退出
-hh 显示高级帮助信息并退出
--version 显示程序版本号并退出
-v VERBOSE 设置详细等级:0-6(默认为1)

目标设定(必须至少指定一个):
-u URL, --url=URL 目标URL(例如:"http://www.site.com/vuln.php?id=1")
-d DIRECT 直接连接数据库的字符串
-l LOGFILE 从Burp或WebScarab代理日志文件中解析目标
-m BULKFILE 从文本文件中批量读取多个目标进行扫描
-r REQUESTFILE 从文件中加载HTTP请求
-g GOOGLEDORK 处理Google dork搜索结果作为目标URL
-c CONFIGFILE 从配置INI文件中加载选项

请求设置(用于指定如何连接到目标URL):
-A AGENT, --user-agent=AGENT 设置HTTP User-Agent头
-H HEADER, --header=HEADER 添加额外的HTTP头(如:"X-Forwarded-For: 127.0.0.1")
--method=METHOD 强制使用指定的HTTP方法(如PUT)
--data=DATA 通过POST发送的数据(如:"id=1")
--param-del=CHAR 用于分隔参数值的字符(如&)
--cookie=COOKIE HTTP Cookie值(如:"PHPSESSID=a8d127e...")
--cookie-del=CHAR 分隔Cookie值的字符(如;)
--live-cookies=FILE 加载最新的Cookie文件
--load-cookies=FILE 加载Netscape/wget格式的Cookies文件
--drop-set-cookie 忽略响应中的Set-Cookie头
--http1.0 使用HTTP/1.0协议
--http2 使用HTTP/2协议(实验性)
--mobile 模拟智能手机User-Agent
--random-agent 随机选择User-Agent
--host=HOST HTTP Host头的值
--referer=REFERER HTTP Referer头的值
--headers=HEADERS 添加多个HTTP头(如:"Accept-Language: fr\nETag: 123")
--auth-type=TYPE HTTP认证类型(Basic、Digest、Bearer等)
--auth-cred=CREDENTIALS HTTP认证凭据(用户名:密码)
--auth-file=FILE HTTP认证的PEM证书/私钥文件路径
--abort-code=CODES 遇到指定的HTTP错误码则中止(如401)
--ignore-code=CODES 忽略指定的HTTP错误码(如401)
--ignore-proxy 忽略系统默认代理设置
--ignore-redirects 忽略重定向
--ignore-timeouts 忽略连接超时
--proxy=PROXY 使用代理连接目标URL
--proxy-cred=CREDENTIALS 代理认证凭据(用户名:密码)
--proxy-file=FILE 从文件加载代理列表
--proxy-freq=REQUESTS 切换代理的请求间隔次数
--tor 使用Tor匿名网络
--tor-port=PORT Tor代理端口(非默认)
--tor-type=TYPE Tor代理类型(HTTP、SOCKS4或SOCKS5,默认)
--check-tor 检查是否正确使用Tor
--delay=SECONDS 每次HTTP请求的延迟秒数
--timeout=SECONDS 等待连接超时秒数(默认30)
--retries=COUNT 超时重试次数(默认3次)
--retry-on=REGEXP 匹配响应内容正则则重试请求
--randomize=PARAM 随机改变指定参数的值
--safe-url=URL 测试期间频繁访问的安全URL
--safe-post=DATA POST数据发送至安全URL
--safe-req=FILE 从文件加载安全请求
--safe-freq=REQUESTS 访问安全URL之间的普通请求次数
--skip-urlencode 不对载荷数据进行URL编码
--csrf-token=TOKEN CSRF令牌的参数名
--csrf-url=URL 提取CSRF令牌所需的页面地址
--csrf-method=METHOD GET/POST等提取CSRF令牌页面的请求方式
--csrf-data=DATA POST提交用于提取CSRF令牌的数据
--csrf-retries=COUNT CSRF令牌提取的重试次数(默认0)
--force-ssl 强制使用SSL/HTTPS
--chunked 使用HTTP块传输编码发送POST请求
--hpp 使用HTTP参数污染方法
--eval=EVALCODE 请求前执行Python代码(如:"import hashlib;id2=hashlib.md5(id).hexdigest()")

性能优化(这些选项可用于优化 sqlmap 的性能):
-o 启用所有优化开关
--predict-output 预测常见查询结果
--keep-alive 使用持久HTTP(S)连接
--null-connection 仅获取页面长度而不下载内容
--threads=THREADS 最大并发HTTP(S)请求数量(默认1)

注入测试设置(这些选项可用于指定要测试的参数、提供自定义payload以及可选的篡改脚本):
-p PARAMETER 指定测试的参数
--skip=PARAMETERS 跳过指定参数的测试
--skip-static 跳过静态(非动态)参数
--param-exclude=REGEX 正则表达式排除某些参数(如"ses")
--param-filter=PLACE 按位置选择参数进行测试(如POST)
--dbms=DBMS 强制指定后端数据库类型
--dbms-cred=CREDENTIALS 数据库认证凭据(用户名:密码)
--os=OS 强制指定后端操作系统
--invalid-bignum 使用大数值使原值失效
--invalid-logical 使用逻辑运算使原值失效
--invalid-string 使用随机字符串使原值失效
--no-cast 关闭载荷转换机制
--no-escape 关闭字符串转义机制
--prefix=PREFIX 注入前缀字符串
--suffix=SUFFIX 注入后缀字符串
--tamper=SCRIPT 使用篡改脚本处理注入数据

检测阶段设置(这些选项可用于自定义检测阶段):
--level=LEVEL 测试等级(1-5,默认1)
--risk=RISK 风险等级(1-3,默认1)
--string=STRING 查询为真时匹配的字符串
--not-string=STRING 查询为假时匹配的字符串
--regexp=REGEXP 查询为真时匹配的正则表达式
--code=CODE 查询为真时匹配的HTTP状态码
--smart 仅在启发式判断为正面时进行彻底测试
--text-only 仅比较网页文本内容
--titles 仅比较网页标题

注入技术调整(这些选项可用于对特定的 SQL 注入技术的测试进行微调):
--technique=TECHNIQUES 使用的注入技术(默认"BEUSTQ")
--time-sec=SECONDS DBMS延时响应的秒数(默认5)
--disable-stats 禁用统计模型检测时延
--union-cols=RANGE UNION查询中测试的列范围
--union-char=CHAR 暴力破解列数的字符
--union-from=TABLE UNION查询FROM部分使用的表
--union-values=VALUES UNION查询的列值
--dns-domain=DOMAIN DNS渗漏攻击使用的域名
--second-url=URL 二阶响应查找页面地址
--second-req=FILE 从文件加载二阶HTTP请求

指纹识别:
-f, --fingerprint 执行深入的DBMS版本指纹识别

枚举操作(这些选项可用于列出DBMS的相关信息、结构以及表中所包含的数据):
-a, --all 获取所有信息
-b, --banner 获取数据库标识信息
--current-user 获取当前数据库用户
--current-db 获取当前数据库名称
--hostname 获取数据库服务器主机名
--is-dba 检测当前用户是否为DBA
--users 枚举所有数据库用户
--passwords 枚举用户密码哈希
--privileges 枚举用户权限
--roles 枚举用户角色
--dbs 枚举所有数据库
--tables 枚举数据库中的表
--columns 枚举表中的字段
--schema 枚举数据库结构
--count 获取表中记录数
--dump 导出表中的数据
--dump-all 导出所有数据库的所有表数据
--search 搜索特定列、表或数据库名称
--comments 检索数据库中注释信息
--statements 检索正在执行的SQL语句
-D DB 指定枚举的数据库
-T TABLE 指定枚举的表
-C COLUMN 指定枚举的列
-X EXCLUDE 不枚举的标识符
-U USER 指定枚举的用户
--exclude-sysdbs 枚举表时排除系统数据库
--pivot-column=COLUMN 透视列名称
--where=CONDITION 导出数据时使用的WHERE条件
--start=NUM 从第几条记录开始导出
--stop=NUM 导出到第几条记录为止
--first=CHAR 首个返回字符的位置
--last=CHAR 最后一个返回字符的位置
--sql-query=QUERY 执行指定的SQL语句
--sql-shell 打开交互式SQL命令行
--sql-file=FILE 执行给定文件中的SQL语句

暴力破解模块:
--common-tables 检测是否存在常见表
--common-columns 检测是否存在常见字段
--common-files 检测是否存在常见文件

自定义函数注入(用于创建自定义的函数):
--udf-inject 注入自定义函数
--shared-lib=PATH 共享库的本地路径

文件系统访问(访问DBMS所在的文件系统文件系统):
--file-read=PATH 读取后端系统中的文件
--file-write=LOCAL_PATH 写入本地文件到后端系统
--file-dest=REMOTE_PATH 后端系统中写入的绝对路径

操作系统访问(访问DBMS所在的操作系统):
--os-cmd=CMD 执行操作系统命令
--os-shell 打开交互式系统Shell
--os-pwn 尝试获取OOB Shell、Meterpreter或VNC
--os-smbrelay 一键尝试OOB Shell等
--os-bof 利用缓冲区溢出漏洞
--priv-esc 提升数据库进程用户权限
--msf-path=PATH Metasploit安装目录
--tmp-path=PATH 远程临时文件夹路径

Windows注册表访问(通过DBMS间接操作windows注册表):
--reg-read 读取注册表键值
--reg-add 添加注册表键值
--reg-del 删除注册表键值
--reg-key=KEY 指定注册表键
--reg-value=VALUE 指定注册表项值
--reg-data=DATA 指定注册表数据
--reg-type=TYPE 指定数据类型

通用设置(设置一些通用的参数):
-s SESSIONFILE 从会话文件恢复任务
-t TRAFFICFILE 保存所有HTTP通信至文件
--abort-on-empty 空结果时中止数据获取
--answers=ANSWERS 预设应答(如"quit=N,follow=N")
--base64=PARAMETERS 指定Base64编码的参数
--base64-safe 使用URL和文件名安全的Base64编码
--batch 非交互模式,全部使用默认行为
--binary-fields=FIELDS 指定包含二进制内容的字段
--check-internet 开始前检测网络连接
--cleanup 清除sqlmap添加的UDF及表
--crawl=DEPTH 爬取目标站点页面
--crawl-exclude=REGEX 排除某些页面(如logout)
--csv-del=CHAR 指定CSV输出的分隔符(默认逗号)
--charset=CHARSET 盲注所用的字符集(如数字+字母)
--dump-file=FILE 自定义导出文件路径
--dump-format=FORMAT 导出格式(CSV/HTML/SQLITE)
--encoding=ENCODING 指定字符编码(如GBK)
--eta 显示预计完成时间
--flush-session 清空当前目标的会话文件
--forms 分析并测试表单
--fresh-queries 不使用缓存的查询结果
--gpage=PAGE 指定Google dork结果的页码
--har=FILE 将所有HTTP流量保存为HAR文件
--hex 导出时使用十六进制编码
--output-dir=PATH 自定义输出目录
--parse-errors 分析和显示DBMS错误信息
--preprocess=SCRIPT 请求预处理脚本
--postprocess=SCRIPT 响应后处理脚本
--repair 修复含有未知字符标记的条目
--save=CONFIGFILE 保存设置为配置文件
--scope=REGEX 过滤目标的Regex表达式
--skip-heuristics 跳过漏洞启发式检测
--skip-waf 跳过WAF/IPS检测
--table-prefix=PREFIX 临时表前缀(默认sqlmap)
--test-filter=TESTS 按payload或标题筛选测试项
--test-skip=TESTS 跳过指定测试项
--time-limit=SECONDS 设置运行最长时间(如3600)
--unsafe-naming 不对数据库标识符进行转义
--web-root=PATH 网站根目录路径(如/var/www)

杂项:
-z MNEMONICS 使用简写助记符(如"flu,bat,ban,tec=EU")
--alert=COMMAND 发现注入时执行系统命令
--beep 在提示或发现漏洞时发出蜂鸣声
--dependencies 检查缺少的依赖项
--disable-coloring 禁用终端颜色
--disable-hashing 禁用导出时的哈希分析
--gui 启动实验性图形界面
--list-tampers 显示可用篡改脚本列表
--no-logging 禁止记录日志
--no-truncate 不截断终端输出
--offline 离线模式,只使用已有会话
--purge 清除所有sqlmap数据目录内容
--results-file=FILE 多目标模式下CSV结果文件路径
--shell 启动sqlmap交互Shell
--tmp-dir=DIR 本地临时文件目录
--tui 启动ncurses文本界面
--unstable 针对不稳定连接优化参数
--update 升级sqlmap
--wizard 新手向导界面

feroxbuster

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
root@racknerd-c022420:~# feroxbuster -h
一个快速、简单、递归的内容发现工具。
用法:feroxbuster [选项]
选项:
-h, --help 打印帮助信息(使用“--help”查看更多)
-V, --version 打印版本号

目标选择:
-u, --url <URL> 目标 URL(必填,除非使用了 [--stdin || --resume-from || --request-file])
--stdin 从标准输入读取 URL
--resume-from <状态文件> 从部分完成的扫描状态文件中恢复(例:--resume-from ferox-1606586780.state)
--request-file <请求文件> 原始 HTTP 请求文件,用作所有请求的模板

组合设置:
--burp 设置 --proxy 为 http://127.0.0.1:8080并将 --insecure 设为 true
--burp-replay 设置 --replay-proxy 为 http://127.0.0.1:8080并将 --insecure 设为 true
--data-urlencoded <数据> 设置 -H 'Content-Type: application/x-www-form-urlencoded',--data 为 <数据-urlencoded>(支持 @文件)并将 -m 设为 POST
--data-json <数据> 设置 -H 'Content-Type: application/json',--data 为 <数据-json>(支持 @文件)并将 -m 设为 POST
--smart 设置 --auto-tune、--collect-words 和 --collect-backups 为 true
--thorough 使用与 --smart 相同的设置,并将 --collect-extensions 和 --scan-dir-listings 设为 true

代理设置:
-p, --proxy <代理> 用于请求的代理(例:http(s)://主机:端口,socks5(h)://主机:端口)
-P, --replay-proxy <回放代理> 仅将通过过滤的请求发送到回放代理,而非全部请求
-R, --replay-codes <回放状态码>... 找到时要通过回放代理发送的状态码(默认值:--status-codes 的值)

请求设置:
-a, --user-agent <用户代理> 设置 User-Agent(默认值:feroxbuster/2.13.1)
-A, --random-agent 使用随机 User-Agent
-x, --extensions <文件扩展名>... 要搜索的文件扩展名(例:-x php -x pdf js);如果输入以 @ 开头则从文件读取(每行一个值)(例:@ext.txt)
-m, --methods <HTTP方法>... 要发送的 HTTP 请求方法(默认值:GET)
--data <数据> 请求体;如果输入以 @ 开头可从文件读取(例:@post.bin)
-H, --headers <头>... 指定每个请求中使用的 HTTP 头(例:-H 头:值 -H '内容: 数据')
-b, --cookies <Cookie>... 指定每个请求中使用的 HTTP Cookie(例:-b 名称=值)
-Q, --query <查询参数>... 请求的 URL 查询参数(例:-Q 令牌=值 -Q 密钥=密文)
-f, --add-slash 在每个请求的 URL 后追加 /
--protocol <协议> 当通过 --request-file 或仅域名的 --url 指定目标时,指定使用的协议(默认值:https)

请求过滤器:
--dont-scan <URL>... 要从递归/扫描中排除的 URL 或正则表达式模式
--scope <URL>... 除当前域名外,额外考虑在扫描范围内的域名/URL

响应过滤器:
-S, --filter-size <大小>... 过滤掉特定大小的消息(例:-S 5120 -S 4927,1970)
-X, --filter-regex <正则>... 通过响应体/头的匹配过滤掉消息(例:-X '^忽略我$')
-W, --filter-words <词数>... 过滤掉特定词数的消息(例:-W 312 -W 91,82)
-N, --filter-lines <行数>... 过滤掉特定行数的消息(例:-N 20 -N 31,30)
-C, --filter-status <状态码>... 过滤掉状态码(黑名单)(例:-C 200 -C 401)
--filter-similar-to <不需要的页面>... 过滤掉与给定页面相似的页面(例:--filter-similar-to http://site.xyz/soft404)
-s, --status-codes <状态码>... 要包含的状态码(白名单)(默认值:所有状态码)
--unique 仅显示唯一响应

客户端设置:
-T, --timeout <秒数> 客户端请求超时前的秒数(默认值:7)
-r, --redirects 允许客户端跟随重定向
-k, --insecure 禁用客户端的 TLS 证书验证
--server-certs <PEM|DER>... 为具有未知证书的服务器添加自定义根证书
--client-cert <PEM> 为双向认证(mTLS)添加 PEM 编码的证书
--client-key <PEM> 为双向认证(mTLS)添加 PEM 编码的私钥

扫描设置:
-t, --threads <线程数> 并发线程数(默认值:50)
-n, --no-recursion 不递归扫描
-d, --depth <递归深度> 最大递归深度,0 表示无限递归(默认值:4)
--force-recursion 强制对所有“已发现”的端点尝试递归(仍遵守递归深度)
--dont-extract-links 不从响应体(HTML、JavaScript 等)中提取链接
-L, --scan-limit <扫描限制> 限制总并发扫描数(默认值:0,即无限制)
--parallel <并行扫描数> 运行并行的 feroxbuster 实例(每个通过标准输入传递的 URL 一个子进程)
--rate-limit <速率限制> 限制每秒每目录的请求数(默认值:0,即无限制)
--response-size-limit <字节> 限制读取的响应体大小(字节)(默认值:4MB)
--time-limit <时间规格> 限制所有扫描的总运行时间(例:--time-limit 10m)
-w, --wordlist <文件> 词表路径或 URL
--auto-tune 遇到大量错误时自动降低扫描速率
--auto-bail 遇到大量错误时自动停止扫描
-D, --dont-filter 不自动过滤通配符响应
--scan-dir-listings 强制扫描递归进入目录列表

动态收集设置:
-E, --collect-extensions 自动发现扩展名并将其添加到 --extensions(除非它们在 --dont-collect 中)
-B, --collect-backups [<备份扩展名>...] 自动请求“已发现”URL 的可能备份扩展名(默认值:~、.bak、.bak2、.old、.1)
-g, --collect-words 自动从响应中发现重要单词并将其添加到词表
-I, --dont-collect <文件扩展名>... 在收集扩展名时忽略的文件扩展名(仅与 --collect-extensions 一起使用)

输出设置:
-v, --verbosity 增加详细程度(使用 -vv 或更多以增强效果。[警告] 4 个 -v 可能过多)
--silent 仅打印 URL(或使用 --json 时打印 JSON)+ 关闭日志记录(适合将 URL 列表管道传输到其他命令)
-q, --quiet 隐藏进度条和横幅(适合带通知的 tmux 窗口)
--json 将日志以 JSON 格式输出到 --output 和 --debug-log,而非普通文本
-o, --output <文件> 写入结果的输出文件(与 --json 一起使用时输出 JSON 条目)
--debug-log <文件> 写入日志条目的输出文件(与 --json 一起使用时输出 JSON 条目)
--no-state 禁用状态输出文件(*.state)
--limit-bars <显示的进度条数量> 任何时候显示的目录扫描进度条数量(默认值:无限制)

更新设置:
-U, --update 将 feroxbuster 更新至最新版本
1
2
3
# 扫描www.baidu.com、随机UA、匹配扩展名、指定cookie、指定get参数、排除相应大小428、排除响应状态码400,401,403,404,500,505、超时7秒、跟随重定向、禁用客户端的 TLS 证书验证、指定字典路径、遇到大量错误时自动降低扫描速率、自动添加备份扩展名、提取重要单词、详细输出、输出为txt。默认:线程数50、四层递归、提取url链接、GET请求
cat targets.txt | feroxbuster -A -x php,jsp,asp,asp -b cookieKey=cookieValue -Q para1=value1,para2=value2 -S 428 -C 400,401,403,404,500,505 -T 5 -r -k -w seclists/Discovery/Web-Content/api
/api-endpoints.txt --auto-tune -B -g -v -o res.txt

mitmproxy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
[10:13:40 shaoxinSEC@WIN11 (master)]# mitmproxy --help
用法: python.exe C:\Users\shaoxinSEC\xxxxx\scripts\.venv\Scripts\mitmproxy [options]

选项:
-h, --help 显示此帮助信息并退出
--version 显示版本号并退出
--options 显示所有选项及其默认值
--commands 显示所有命令及其签名
--set option[=value] 设置一个选项。省略 value 时,布尔值会设为 true,
字符串和整数会设为 None(若允许),序列会被清空。
布尔值可为 true、false 或 toggle。序列通过对同一
选项多次调用 set 来设置。
-q, --quiet 静默模式。
-v, --verbose 提高日志详细程度。
--mode, -m MODE 要启动的代理服务器类型(可多次传入)。Mitmproxy
支持 "regular" (HTTP)、"local"、"transparent"、"socks5"、
"reverse:SPEC"、"upstream:SPEC" 和 "wireguard[:PATH]"。
对于 reverse 和 upstream 模式,SPEC 为如下形式的主机说明:
"http[s]://host[:port]"。对于 WireGuard 模式,PATH 可指向
包含密钥材料的文件;若文件不存在,启动时会自动创建。
你可以附加 `@listen_port` 或 `@listen_host:listen_port`
来覆盖某个特定代理模式的 `listen_host` 或 `listen_port`。
客户端回放等功能会使用第一个 mode 来决定上游服务器。
可多次传入。
--no-anticache
--anticache 移除可能导致服务器返回 304-not-modified 的请求头。
--no-showhost
--showhost 使用 Host 头来构造显示用 URL。该选项默认关闭,
因为恶意应用可能发送误导性的 host 头以规避分析。
若这不是你的顾虑,可启用此选项以获得更好的流量显示。
--no-show-ignored-hosts
--show-ignored-hosts 即使不执行 TLS 拦截,也在 UI 中记录被忽略的流量。
该选项会将被忽略流量内容保留在内存中,可能显著增加
内存使用。未来版本将修复此问题、默认记录被忽略流量,
并移除此选项。
--rfile, -r PATH 从文件读取流量。
--scripts, -s SCRIPT 执行脚本。可多次传入。
--stickycookie FILTER 设置粘性 Cookie 过滤器。匹配请求。
--stickyauth FILTER 设置粘性认证过滤器。匹配请求。
--save-stream-file, -w PATH
在流量到达时流式写入文件。路径前缀加 + 表示追加。
完整路径可使用 python strftime() 格式化,缺失目录会按需创建。
每当格式化后的字符串发生变化,都会打开一个新文件。
--no-anticomp
--anticomp 尝试让服务器发送未压缩数据。
--console-layout {horizontal,single,vertical}
控制台布局。
--no-console-layout-headers
--console-layout-headers
显示布局组件标题

代理选项:
--listen-host HOST 代理服务器绑定地址(可被单独模式覆盖,见 `mode`)。
--listen-port, -p PORT
代理服务器绑定端口(可被单独模式覆盖,见 `mode`)。
默认端口由模式决定。regular HTTP 代理默认监听 8080。
--no-server, -n
--server 启动代理服务器。默认启用。
--ignore-hosts HOST 忽略该主机并直接转发所有流量而不处理。在 transparent
模式下,建议使用 IP 地址(范围)而非主机名。在 regular
模式下,仅忽略 SSL 流量,且应使用主机名。给定值按正则表达式
解释,并在 IP 或主机名上匹配。可多次传入。
--allow-hosts HOST 与 --ignore-hosts 相反。可多次传入。
--tcp-hosts HOST 对所有匹配模式的主机启用通用 TCP SSL 代理模式。类似
--ignore-hosts,但会拦截 SSL 连接。通信内容会在 verbose
模式下打印到日志。可多次传入。
--upstream-auth USER:PASS
为上游代理和反向代理请求添加 HTTP Basic 认证。
格式:username:password。
--proxyauth SPEC 要求代理认证。格式:"username:pass","any" 表示接受任意
用户名/密码组合,"@path" 表示使用 Apache htpasswd 文件,
或 "ldap[s]:url_server_ldap[:port]:dn_auth:password:dn_subtree
[?search_filter_key=...]" 表示 LDAP 认证。
--no-store-streamed-bodies
--store-streamed-bodies
在流式传输时存储 HTTP 请求与响应体(见
`stream_large_bodies`)。这会增加内存消耗,但可以检查
流式响应体内容。
--no-rawtcp
--rawtcp 启用/禁用原始 TCP 连接。默认启用 TCP 连接。
--no-http2
--http2 启用/禁用 HTTP/2 支持。默认启用 HTTP/2。

SSL:
--certs SPEC SSL 证书,格式为 "[domain=]path"。domain 可包含通配符,
若未指定则等于 "*"。path 指向 PEM 格式证书。若 PEM 中
包含私钥则使用该私钥,否则使用配置目录中的默认私钥。
PEM 文件应包含完整证书链,且叶子证书为第一项。
可多次传入。
--cert-passphrase PASS
用于解密 --cert 选项提供私钥的口令。注意:在命令行传递
cert_passphrase 会让口令暴露在系统进程列表中。
建议在 config.yaml 中指定以避免此问题。
--no-ssl-insecure
--ssl-insecure, -k 不校验上游服务器 SSL/TLS 证书。启用后会跳过证书校验,
mitmproxy 自身也将容易受到 TLS 中间人拦截。

客户端回放:
--client-replay, -C PATH
从已保存文件回放客户端请求。可多次传入。

服务端回放:
--server-replay, -S PATH
从已保存文件回放服务端响应。可多次传入。
--no-server-replay-kill-extra
--server-replay-kill-extra
回放期间终止额外请求(即未找到可回放响应的请求)。
[已弃用,建议使用 server_replay_extra='kill']
--server-replay-extra {forward,kill,204,400,404,500}
回放期间对额外请求(未找到可回放响应)采取的行为。
设置为数字字符串会返回对应状态码的空 HTTP 响应。
--no-server-replay-reuse
--server-replay-reuse
使用后不从服务端回放状态中移除流量,从而可多次回放
同一响应。
--no-server-replay-refresh
--server-replay-refresh
通过调整 date、expires、last-modified 头,以及 Cookie
过期时间,来刷新服务端回放响应。

远程映射:
--map-remote, -M PATTERN
使用如下模式将远程资源映射到另一个远程 URL:
"[/flow-filter]/url-regex/replacement",
其中分隔符可为任意字符。可多次传入。

本地映射:
--map-local PATTERN 使用如下模式将远程资源映射到本地文件:
"[/flow-filter]/url-regex/file-or-directory-path",
其中分隔符可为任意字符。可多次传入。

修改 Body:
--modify-body, -B PATTERN
替换模式格式:
"[/flow-filter]/regex/[@]replacement",
其中分隔符可为任意字符。@ 表示可提供文件路径,
从该文件读取替换字符串。可多次传入。

修改 Headers:
--modify-headers, -H PATTERN
Header 修改模式格式:
"[/flow-filter]/header-name/[@]header-value",
其中分隔符可为任意字符。@ 表示可提供文件路径,
从该文件读取 header 值字符串。若 header-value 为空,
则移除已有的 header-name。可多次传入。

过滤器:
过滤表达式语法请在 mitmproxy 帮助中查看。

--intercept FILTER 拦截过滤表达式。
--view-filter FILTER 仅显示匹配的流量。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
[10:20:02 shaoxinSEC@WIN11 (master)]# mitmproxy --options

# 如果HTTP/2连接空闲超过指定秒数,则发送PING帧以防止远程站点关闭连接。设置为0以禁用此功能。类型为int。
http2_ping_keepalive: 58

# 启用/禁用对QUIC和HTTP/3的支持。默认启用。类型为bool。
http3: true

# 在CONNECT请求中包含Host头。默认启用。类型为bool。
http_connect_send_host_header: true

# 忽略指定主机并转发其所有流量而不进行处理。在透明模式下,建议使用IP地址(范围),而非主机名。在常规模式下,仅忽略SSL流量,应使用主机名。提供的值将被解释为正则表达式,并与IP或主机名进行匹配。类型为sequence of str。
ignore_hosts: []

# 拦截过滤器表达式。类型为optional str。
intercept:

# 拦截开关。类型为bool。
intercept_active: false

# 反向代理:原样保留Alt-Svc头,即使它们不指向mitmproxy。启用此选项可能导致客户端绕过代理。类型为bool。
keep_alt_svc_header: false

# 反向代理:保留原始的Host头,而不将其重写为反向代理目标。类型为bool。
keep_host_header: false

# 证书和CA的TLS密钥大小。类型为int。
key_size: 2048

# 绑定代理服务器(们)的地址(可能被各个模式覆盖,见`mode`)。类型为str。
listen_host: ''

# 绑定代理服务器(们)的端口(可能被各个模式覆盖,见`mode`)。默认情况下,端口是模式特定的。默认的常规HTTP代理在端口8080上启动。类型为optional int。
listen_port:

# 使用形式为"[/flow-filter]/url-regex/file-or-directory-path"的模式将远程资源映射到本地文件,其中分隔符可以是任何字符。类型为sequence of str。
map_local: []

# 使用形式为"[/flow-filter]/url-regex/replacement"的模式将远程资源映射到另一个远程URL,其中分隔符可以是任何字符。类型为sequence of str。
map_remote: []

# 要启动的代理服务器类型。可以传递多次。Mitmproxy支持"regular" (HTTP), "local", "transparent", "socks5", "reverse:SPEC", "upstream:SPEC", 和 "wireguard[:PATH]"代理服务器。对于反向和上游代理模式,SPEC是形式为"http[s]://host[:port]"的主机规范。对于WireGuard模式,PATH可以指向包含密钥材料的文件。如果不存在此类文件,将在启动时创建。您可以附加`@listen_port`或`@listen_host:listen_port`来为特定代理模式覆盖`listen_host`或`listen_port`。诸如客户端回放等功能将使用第一个模式来确定使用哪个上游服务器。类型为sequence of str。
mode:
- regular

# 形式为"[/flow-filter]/regex/[@]replacement"的替换模式,其中分隔符可以是任何字符。@允许提供文件路径,该文件路径用于读取替换字符串。类型为sequence of str。
modify_body: []

# 形式为"[/flow-filter]/header-name/[@]header-value"的头部修改模式,其中分隔符可以是任何字符。@允许提供文件路径,该文件路径用于读取头部值字符串。空的header-value会删除现有的header-name头部。类型为sequence of str。
modify_headers: []

# 规范化出站HTTP/2头部名称,但在这样做时发出警告。HTTP/2不允许大写头部名称。此选项确保在发送之前在自定义脚本中设置的HTTP/2头部被转换为小写。类型为bool。
normalize_outbound_headers: true

# 切换mitmproxy入门应用程序。类型为bool。
onboarding: true

# 入门应用程序域名。对于透明模式,如果应用程序域名的DNS条目不存在,请使用IP地址。类型为str。
onboarding_host: mitm.it

# 用于在美化打印时解析Protobuf字段名的.proto文件路径。类型为optional str。
protobuf_definitions:

# 在代理核心中启用调试日志。类型为bool。
proxy_debug: false

# 要求代理身份验证。格式:"username:pass", "any"以接受任何用户/密码组合, "@path"以使用Apache htpasswd文件,或 "ldap[s]:url_server_ldap[:port]:dn_auth:password:dn_subtree[?search_filter_key=...]"用于LDAP身份验证。类型为optional str。
proxyauth:

# 启用/禁用原始TCP连接。默认启用TCP连接。类型为bool。
rawtcp: true

# 仅读取匹配的流量。类型为optional str。
readfile_filter:

# 请求客户端证书(TLS消息'CertificateRequest')以在客户端和mitmproxy之间建立双向TLS连接(与用于mitmproxy和上游的'client_certs'选项结合使用)。类型为bool。
request_client_cert: false

# 从文件读取流量。类型为optional str。
rfile:

# 在流量到达时流式传输到文件。路径前缀+表示追加。完整路径可以使用python strftime()格式化,缺失的目录将根据需要创建。每次格式化字符串更改时都会打开一个新文件。类型为optional str。
save_stream_file:

# 过滤哪些流量写入文件。类型为optional str。
save_stream_filter:

# 执行脚本。类型为sequence of str。
scripts: []

# 启动代理服务器。默认启用。类型为bool。
server: true

# 从保存的文件重放服务器响应。类型为sequence of str。
server_replay: []

# 在重放期间,对于找不到可重放响应的额外请求的行为。设置数字字符串值将返回具有相应状态码的空HTTP响应。有效值为'forward', 'kill', '204', '400', '404', '500'
server_replay_extra: forward

# 在搜索要重放的已保存流量时忽略请求内容。类型为bool。
server_replay_ignore_content: false

# 在搜索要重放的已保存流量时忽略请求目标主机。类型为bool。
server_replay_ignore_host: false

# 在搜索要重放的已保存流量时忽略的请求参数。类型为sequence of str。
server_replay_ignore_params: []

# 在搜索要重放的已保存流量时忽略的请求负载参数(application/x-www-form-urlencoded 或 multipart/form-data)。类型为sequence of str。
server_replay_ignore_payload_params: []

# 在搜索要重放的已保存流量时忽略请求目标端口。类型为bool。
server_replay_ignore_port: false

# 在重放期间杀死额外请求(对于找不到可重放响应的请求)。[已弃用,建议使用 server_replay_extra='kill'] 类型为bool。
server_replay_kill_extra: false

# `server_replay_reuse`的已弃用别名。类型为bool。
server_replay_nopop: false

# 通过调整日期、expires和last-modified头部以及调整cookie过期时间来刷新服务器重放响应。类型为bool。
server_replay_refresh: true

# 使用后不从服务器重放状态中移除流量。这使得可以多次重放同一响应。类型为bool。
server_replay_reuse: false

# 在搜索要重放的已保存流量时需要匹配的请求头部。类型为sequence of str。
server_replay_use_headers: []

# 即使我们不执行TLS拦截,也在UI中记录被忽略的流量。此选项将把被忽略流量的内容保留在内存中,这可能会大大增加内存使用量。未来的版本将修复此问题,默认记录被忽略的流量,并移除此选项。类型为bool。
show_ignored_hosts: false

# 使用Host头部构建用于显示的URL。默认禁用此选项,因为恶意应用程序可能发送误导性的host头部以逃避您的分析。如果这不是问题,请启用此选项以获得更好的流量显示。类型为bool。
showhost: false

# 不验证上游服务器SSL/TLS证书。如果启用此选项,将跳过证书验证,mitmproxy本身将容易受到TLS拦截攻击。类型为bool。
ssl_insecure: false

# 受信任CA证书的PEM格式文件路径。类型为optional str。
ssl_verify_upstream_trusted_ca:

# 用于上游服务器验证的受信任CA证书目录路径,使用c_rehash工具准备。类型为optional str。
ssl_verify_upstream_trusted_confdir:

# 设置粘性身份验证过滤器。与请求匹配。类型为optional str。
stickyauth:

# 设置粘性cookie过滤器。与请求匹配。类型为optional str。
stickycookie:

# 在流式传输时存储HTTP请求和响应体(见`stream_large_bodies`)。这会增加内存消耗,但使得可以检查流式传输的体。类型为bool。
store_streamed_bodies: false

# 如果请求或响应体超过给定阈值,则向客户端流式传输数据。如果流式传输,体将不会以任何方式存储,并且此类响应无法被修改。理解k/m/g后缀,例如3m表示3兆字节。要存储流式传输的体,请见`store_streamed_bodies`。类型为optional str。
stream_large_bodies:

# 从DNS HTTPS记录中剥离加密的ClientHello (ECH) 数据,以便mitmproxy可以生成匹配的证书。类型为bool。
strip_ech: true

# 用于匹配模式的所有主机的通用TCP SSL代理模式。类似于--ignore-hosts,但SSL连接会被拦截。通信内容在详细模式下打印到日志。类型为sequence of str。
tcp_hosts: []

# 非活动TCP连接的超时(秒)。连接在此时间段不活动后将关闭。类型为int。
tcp_timeout: 600

# 在客户端连接上使用特定椭圆曲线进行ECDHE密钥交换。OpenSSL语法,例如"prime256v1"(见`openssl ecparam -list_curves`)。类型为optional str。
tls_ecdh_curve_client:

# 在服务器连接上使用特定椭圆曲线进行ECDHE密钥交换。OpenSSL语法,例如"prime256v1"(见`openssl ecparam -list_curves`)。类型为optional str。
tls_ecdh_curve_server:

# 设置客户端连接的最大TLS版本。有效值为'UNBOUNDED', 'SSL3', 'TLS1', 'TLS1_1', 'TLS1_2', 'TLS1_3'
tls_version_client_max: UNBOUNDED

# 设置客户端连接的最小TLS版本。UNBOUNDED, SSL3, TLS1 和 TLS1_1 是不安全的。有效值为'UNBOUNDED', 'SSL3', 'TLS1', 'TLS1_1', 'TLS1_2', 'TLS1_3'
tls_version_client_min: TLS1_2

# 设置服务器连接的最大TLS版本。有效值为'UNBOUNDED', 'SSL3', 'TLS1', 'TLS1_1', 'TLS1_2', 'TLS1_3'
tls_version_server_max: UNBOUNDED

# 设置服务器连接的最小TLS版本。UNBOUNDED, SSL3, TLS1 和 TLS1_1 是不安全的。有效值为'UNBOUNDED', 'SSL3', 'TLS1', 'TLS1_1', 'TLS1_2', 'TLS1_3'
tls_version_server_min: TLS1_2

# 用于匹配模式的所有主机的通用UDP SSL代理模式。类似于--ignore-hosts,但SSL连接会被拦截。通信内容在详细模式下打印到日志。类型为sequence of str。
udp_hosts: []

# 向上游代理和反向代理请求添加HTTP基本身份验证。格式:username:password。类型为optional str。
upstream_auth:

# 连接到上游服务器以查找证书详细信息。类型为bool。
upstream_cert: true

# 确保传入的HTTP请求格式正确。禁用此选项会使mitmproxy容易受到HTTP走私攻击。类型为bool。
validate_inbound_headers: true

# 将视图限制为匹配的流量。类型为optional str。
view_filter:

# 流量排序顺序。有效值为'time', 'method', 'url', 'size'
view_order: time

# 反转排序顺序。类型为bool。
view_order_reversed: false

# 启用/禁用WebSocket支持。默认启用WebSocket支持。类型为bool。
websocket: true
1
2
# 监听所有IP的8088端口,加上-s参数可指定addon脚本
mitmproxy --listen-host 0.0.0.0 -p 8088