Project Icon

nuclei

快速灵活的多协议漏洞扫描工具

Nuclei是一款基于YAML的开源漏洞扫描工具,支持TCP、DNS、HTTP、SSL等多种协议。它具有高度灵活性,可快速扫描大量目标,实现零误报。Nuclei通过简单的模板语言允许用户自定义各类安全检查。该项目拥有活跃的社区,300多名安全专家贡献了丰富的漏洞模板,持续扩展其应用场景。


Nuclei

基于简单YAML DSL的快速、可定制的漏洞扫描器。

工作原理安装文档致谢常见问题加入 Discord

English中文KoreanIndonesiaSpanish日本語


Nuclei 用于根据模板向目标发送请求,实现零误报并能在大量主机上快速扫描。Nuclei 支持多种协议的扫描,包括 TCP、DNS、HTTP、SSL、File、Whois、Websocket、Headless、Code 等。通过强大灵活的模板,Nuclei 可以用于建模各种安全检查。

我们有一个专门的仓库,收集了由超过 300 名安全研究人员和工程师贡献的各种类型的漏洞模板。

工作原理

nuclei-flow

:exclamation: 免责声明
该项目正在积极开发中。版本更新可能会带来重大变化。更新前请查看发布说明。
该项目主要设计为独立的命令行工具。**将 nuclei 作为服务运行可能存在安全风险。**建议谨慎使用并采取额外的安全措施。

安装 Nuclei

Nuclei 需要 go1.21 才能成功安装。运行以下命令安装最新版本 -

go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Brew
brew install nuclei
Docker
docker pull projectdiscovery/nuclei:latest

更多安装方法可以在这里找到

Nuclei 模板

v2.5.2 版本以来,Nuclei 默认内置了自动模板下载/更新支持。Nuclei-Templates 项目提供了一个由社区贡献的随时可用的模板列表,并不断更新。

你仍然可以随时使用 update-templates 标志更新 nuclei 模板;你可以按照 Nuclei 的模板编写指南为你的个人工作流程和需求编写自己的检查。

YAML DSL 参考语法可以在这里找到。

使用方法

nuclei -h

这将显示该工具的帮助信息。以下是它支持的所有开关。

Nuclei 是一个快速、基于模板的漏洞扫描器,
专注于广泛的可配置性、大规模的可扩展性和易用性。

用法:
  ./nuclei [flags]

标志:
目标:
   -u, -target string[]          要扫描的目标 URL/主机
   -l, -list string              包含要扫描的目标 URL/主机列表的文件路径(每行一个)
   -eh, -exclude-hosts string[]  从输入列表中排除扫描的主机(IP、CIDR、主机名)
   -resume string                使用 resume.cfg 恢复扫描(集群将被禁用)
   -sa, -scan-all-ips            扫描与 DNS 记录关联的所有 IP
   -iv, -ip-version string[]     要扫描的主机名 IP 版本(4,6)-(默认为 4)

目标格式:
   -im, -input-mode string        输入文件模式(list, burp, jsonl, yaml, openapi, swagger)(默认为 "list")
   -ro, -required-only            在生成请求时仅使用输入格式中的必填字段
   -sfv, -skip-format-validation  解析输入文件时跳过格式验证(如缺少变量)

模板:
   -nt, -new-templates                    仅运行最新 nuclei-templates 版本中新增的模板
   -ntv, -new-templates-version string[]  运行特定版本中新增的模板
   -as, -automatic-scan                   使用 wappalyzer 技术检测到标签映射的自动 Web 扫描
   -t, -templates string[]                要运行的模板或模板目录列表(逗号分隔,文件)
   -turl, -template-url string[]          要运行的模板 URL 或包含模板 URL 的列表(逗号分隔,文件)
   -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                                  启用加载基于代码协议的模板
   -dut, -disable-unsigned-templates      禁止运行未签名或签名不匹配的模板

过滤:
   -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[]        根据协议类型排除模板。可能的值: dns, file, http, headless, tcp, workflow, ssl, websocket, whois, code, javascript
   -tc, -template-condition string[]  根据表达式条件运行模板
输出:
   -o, -output string            输出文件以写入发现的问题/漏洞
   -sresp, -store-resp           将通过nuclei的所有请求/响应存储到输出目录
   -srd, -store-resp-dir string  将通过nuclei的所有请求/响应存储到自定义目录(默认为"output")
   -silent                       仅显示发现结果
   -nc, -no-color                禁用输出内容着色(ANSI转义码)
   -j, -jsonl                    以JSONL格式写入输出
   -irr, -include-rr -omit-raw   在JSON、JSONL和Markdown输出中包含请求/响应对(仅针对发现结果)[已废弃,请使用-omit-raw](默认为true)
   -or, -omit-raw                在JSON、JSONL和Markdown输出中省略请求/响应对(仅针对发现结果)
   -ot, -omit-template           在JSON、JSONL输出中省略编码的模板
   -nm, -no-meta                 禁用在命令行输出中打印结果元数据
   -ts, -timestamp               在命令行输出中启用打印时间戳
   -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格式的文件
   -rd, -redact string[]         从查询参数、请求头和正文中编辑给定的键列表

配置:
   -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[]                  以header:value格式包含在所有HTTP请求中的自定义头/cookie(命令行,文件)
   -V, -var value                        以key=value格式的自定义变量
   -r, -resolvers string                 包含nuclei解析器列表的文件
   -sr, -system-resolvers                使用系统DNS解析作为错误回退
   -dc, -disable-clustering              禁用请求聚类
   -passive                              启用被动HTTP响应处理模式
   -fh2, -force-http2                    强制在请求中使用HTTP2连接
   -ev, -env-vars                        允许在模板中使用环境变量
   -cc, -client-cert string              用于对扫描主机进行身份验证的客户端证书文件(PEM编码)
   -ck, -client-key string               用于对扫描主机进行身份验证的客户端密钥文件(PEM编码)
   -ca, -client-ca string                用于对扫描主机进行身份验证的客户端证书颁发机构文件(PEM编码)
   -sml, -show-match-line                显示文件模板的匹配行,仅适用于提取器
   -ztls                                 使用ztls库,自动回退到标准库以支持tls13 [已废弃] 默认启用自动回退到ztls
   -sni string                           要使用的TLS SNI主机名(默认:输入域名)
   -dka, -dialer-keep-alive value        网络请求的保持连接持续时间
   -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               启用实验性客户端hello(ja3)TLS随机化
   -hae, -http-api-endpoint string       实验性HTTP API端点

INTERACTSH:
   -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                  禁用interactsh服务器进行OAST测试,排除基于OAST的模板

模糊测试:
   -ft, -fuzzing-type string     覆盖模板中设置的模糊测试类型(replace、prefix、postfix、infix)
   -fm, -fuzzing-mode string     覆盖模板中设置的模糊测试模式(multiple、single)
   -fuzz                         启用加载模糊测试模板(已废弃:请使用-dast代替)
   -dast                         启用/运行dast(模糊测试)nuclei模板
   -dfp, -display-fuzz-points    在输出中显示模糊测试点以进行调试
   -fuzz-param-frequency int     跳过前不感兴趣参数的模糊测试频率(默认为10)
   -fa, -fuzz-aggression string  模糊测试攻击程度控制有效载荷数量(low、medium、high)(默认为"low")

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)(默认为shodan)
   -uf, -uncover-field string     要返回的uncover字段(ip,port,host)(默认为"ip:port")
   -ul, -uncover-limit int        要返回的uncover结果数量(默认为100)
   -ur, -uncover-ratelimit int    覆盖未知速率限制引擎的速率限制(默认为60 req/min)(默认为60)

速率限制:
   -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)

优化:
   -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             设置特定的项目路径(默认为"/tmp")
   -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                        禁用stdin处理

无头:
   -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                    显示所有请求和响应
   -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       可选的nuclei内存配置文件转储文件
   -vv                       显示加载用于扫描的模板
   -svd, -show-var-dump      显示变量转储以进行调试
   -ep, -enable-pprof        启用pprof调试服务器
   -tv, -templates-version   显示已安装的nuclei-templates版本
   -hc, -health-check        运行诊断检查

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

统计:
   -stats                    显示正在运行的扫描的统计信息
   -sj, -stats-json          以JSONL格式显示统计信息
   -si, -stats-interval int  显示统计更新之间等待的秒数(默认5)
   -mp, -metrics-port int    暴露nuclei指标的端口(默认9092)

云:
   -auth                      配置projectdiscovery云(pdcp) api密钥(默认为true)
   -tid, -team-id string      将扫描结果上传到给定的团队ID(可选)(默认"none")
   -cup, -cloud-upload        将扫描结果上传到pdcp仪表板
   -sid, -scan-id string      将扫描结果上传到现有的扫描ID(可选)
   -sname, -scan-name string  设置扫描名称(可选)

身份验证:
   -sf, -secret-file string[]  包含nuclei认证扫描机密的配置文件路径
   -ps, -prefetch-secrets      从机密文件预取机密

示例:
在单个主机上运行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/

更多文档可在以下网址获取: https://docs.nuclei.sh/getting-started/running

运行Nuclei

有关运行Nuclei的详细信息,请参阅https://docs.projectdiscovery.io/tools/nuclei/running

从Go代码使用Nuclei

使用Nuclei作为库/SDK的完整指南可在[godoc](https://pkg.go.dev/github.com/projectdiscovery/nuclei/v3/lib#section-readme)上找到

资源

您可以在https://docs.projectdiscovery.io/tools/nuclei/访问Nuclei的主要文档,并在[ProjectDiscovery云平台](https://cloud.projectdiscovery.io)上了解更多关于云端Nuclei的信息

有关Nuclei的更多资源和视频,请参阅https://docs.projectdiscovery.io/tools/nuclei/resources!

鸣谢

感谢所有出色的[社区贡献者发送PR](https://github.com/projectdiscovery/nuclei/graphs/contributors)并保持这个项目更新。:heart:

如果您有想法或某种改进,欢迎您贡献并参与项目,随时发送您的PR。

另外,请查看以下类似的开源项目,它们可能适合您的工作流程:

[FFuF](https://github.com/ffuf/ffuf), [Qsfuzz](https://github.com/ameenmaali/qsfuzz), [Inception](https://github.com/proabiral/inception), [Snallygaster](https://github.com/hannob/snallygaster), [Gofingerprint](https://github.com/Static-Flow/gofingerprint), [Sn1per](https://github.com/1N3/Sn1per/tree/master/templates), [Google tsunami](https://github.com/google/tsunami-security-scanner), [Jaeles](https://github.com/jaeles-project/jaeles), [ChopChop](https://github.com/michelin/ChopChop)

许可证

Nuclei在[MIT许可证](https://github.com/projectdiscovery/nuclei/blob/main/LICENSE.md)下分发
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号