156
0
基于简单 YAML DSL 的快速且可定制的漏洞扫描程序。
基于简单 YAML DSL 的快速且可定制的漏洞扫描程序。
工作流程 • 安装 • 对于安全工程师 • 对于开发者 • 文档 • 致谢 • 常见问题 • 加入Discord
English • 中文 • Korean • Indonesia • Spanish
Nuclei使用零误报的定制模板向目标发送请求,同时可以对主机进行批量快速扫描。Nuclei提供TCP、DNS、HTTP、FILE等各类协议的扫描,通过强大且灵活的模板,可以使用Nuclei模拟各种安全检查。
我们的模板仓库包含超过300名安全研究员和工程师提供的模板。
:exclamation: 免责声明 |
---|
这个项目正在积极开发中。预计发布会带来突破性的更改。更新前请查看版本更改日志。 |
这个项目主要是为了作为一个独立的命令行工具而构建的。 将Nuclei作为服务运行可能存在安全风险。 强烈建议谨慎使用,并采取额外的安全措施。 |
Nuclei需要 go1.21 才能安装成功。执行下列命令安装最新版本的Nuclei
1go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
1brew install nuclei
1docker pull projectdiscovery/nuclei:latest
更多的安装方式 请点击此处.
Nuclei模板自从v2.5.2起,Nuclei就内置了自动下载和更新模板的功能。Nuclei模板仓库随时更新社区中可用的模板列表。 您仍然可以随时使用 YAML的语法规范在这里。 |
1nuclei -h
这将显示Nuclei的帮助,以下是所有支持的命令。
1Nuclei是一款注重于可配置性、可扩展性和易用性的基于模板的快速漏洞扫描器。 2 3用法: 4 nuclei [命令] 5 6命令: 7目标: 8 -u, -target string[] 指定扫描的目标URL/主机(多个目标则指定多个-u参数) 9 -l, -list string 指定包含要扫描的目标URL/主机列表的文件路径(一行一个) 10 -resume string 使用指定的resume.cfg文件恢复扫描(将禁用请求聚类) 11 -sa, -scan-all-ips 扫描由目标解析出来的所有IP(针对域名对应多个IP的情况) 12 -iv, -ip-version string[] 要扫描的主机名的IP版本(4,6)-(默认为4) 13 14模板: 15 -nt, -new-templates 仅运行最新发布的nuclei模板 16 -ntv, -new-templates-version string[] 仅运行特定版本中添加的新模板 17 -as, -automatic-scan 基于Wappalyzer技术的标签映射自动扫描 18 -t, -templates string[] 指定要运行的模板或者模板目录(以逗号分隔或目录形式) 19 -turl, -template-url string[] 指定要运行的模板URL或模板目录URL(以逗号分隔或目录形式) 20 -w, -workflows string[] 指定要运行的工作流或工作流目录(以逗号分隔或目录形式) 21 -wurl, -workflow-url string[] 指定要运行的工作流URL或工作流目录URL(以逗号分隔或目录形式) 22 -validate 使用nuclei验证模板有效性 23 -nss, -no-strict-syntax 禁用对模板的严格检查 24 -td, -template-display 显示模板内容 25 -tl 列出所有可用的模板 26 -sign 使用NUCLEI_SIGNATURE_PRIVATE_KEY环境变量中的私钥对模板进行签名 27 -code 启用加载基于协议的代码模板 28 29过滤: 30 -a, -author string[] 执行指定作者的模板(逗号分隔,文件) 31 -tags string[] 执行带指定tag的模板(逗号分隔,文件) 32 -etags, -exclude-tags string[] 排除带指定tag的模板(逗号分隔,文件) 33 -itags, -include-tags string[] 执行带有指定tag的模板,即使是被默认或者配置排除的模板 34 -id, -template-id string[] 执行指定id的模板(逗号分隔,文件) 35 -eid, -exclude-id string[] 排除指定id的模板(逗号分隔,文件) 36 -it, -include-templates string[] 执行指定模板,即使是被默认或配置排除的模板 37 -et, -exclude-templates string[] 排除指定模板或者模板目录(逗号分隔,文件) 38 -em, -exclude-matchers string[] 排除指定模板matcher 39 -s, -severity value[] 根据严重程度运行模板,可选值有:info,low,medium,high,critical 40 -es, -exclude-severity value[] 根据严重程度排除模板,可选值有:info,low,medium,high,critical 41 -pt, -type value[] 根据类型运行模板,可选值有:dns, file, http, headless, network, workflow, ssl, websocket, whois 42 -ept, -exclude-type value[] 根据类型排除模板,可选值有:dns, file, http, headless, network, workflow, ssl, websocket, whois 43 -tc, -template-condition string[] 根据表达式运行模板 44 45 46输出: 47 -o, -output string 输出发现的问题到文件 48 -sresp, -store-resp 将nuclei的所有请求和响应输出到目录 49 -srd, -store-resp-dir string 将nuclei的所有请求和响应输出到指定目录(默认:output) 50 -silent 只显示结果 51 -nc, -no-color 禁用输出内容着色(ANSI转义码) 52 -j, -jsonl 输出格式为jsonL(ines) 53 -irr, -include-rr 在JSON、JSONL和Markdown中输出请求/响应对(仅结果)[已弃用,使用-omit-raw替代] 54 -or, -omit-raw 在JSON、JSONL和Markdown中不输出请求/响应对 55 -ot, -omit-template 省略JSON、JSONL输出中的编码模板 56 -nm, -no-meta 在cli输出中不打印元数据 57 -ts, -timestamp 在cli输出中打印时间戳 58 -rdb, -report-db string 本地的nuclei结果数据库(始终使用该数据库保存结果) 59 -ms, -matcher-status 显示匹配失败状态 60 -me, -markdown-export string 以markdown格式导出结果 61 -se, -sarif-export string 以SARIF格式导出结果 62 -je, -json-export string 以JSON格式导出结果 63 -jle, -jsonl-export string 以JSONL(ine)格式导出结果 64 65 66配置: 67 -config string 指定nuclei的配置文件 68 -fr, -follow-redirects 为HTTP模板启用重定向 69 -fhr, -follow-host-redirects 允许在同一主机上重定向 70 -mr, -max-redirects int HTTP模板最大重定向次数(默认:10) 71 -dr, -disable-redirects 为HTTP模板禁用重定向 72 -rc, -report-config string 指定nuclei报告模板文件 73 -H, -header string[] 指定在所有http请求中包含的自定义header、cookie,以header:value的格式指定(cli,文件) 74 -V, -var value 以key=value格式自定义变量 75 -r, -resolvers string 指定包含DNS解析服务列表的文件 76 -sr, -system-resolvers 当DNS错误时使用系统DNS解析服务 77 -dc, -disable-clustering 关闭请求聚类功能 78 -passive 启用被动模式处理本地HTTP响应数据 79 -fh2, -force-http2 强制使用http2连接 80 -ev, env-vars 启用在模板中使用环境变量 81 -cc, -client-cert string 用于对扫描的主机进行身份验证的客户端证书文件(PEM 编码) 82 -ck, -client-key string 用于对扫描的主机进行身份验证的客户端密钥文件(PEM 编码) 83 -ca, -client-ca string 用于对扫描的主机进行身份验证的客户端证书颁发机构文件(PEM 编码) 84 -sml, -show-match-line 显示文件模板的匹配值,只适用于提取器 85 -ztls 使用ztls库,带有自动回退到标准库tls13 [已弃用] 默认情况下启用对ztls的自动回退 86 -sni string 指定tls sni的主机名(默认为输入的域名) 87 -lfa, -allow-local-file-access 允许访问本地文件(payload文件) 88 -lna, -restrict-local-network-access 阻止对本地/私有网络的连接 89 -i, -interface string 指定用于网络扫描的网卡 90 -at, -attack-type string payload的组合模式(batteringram,pitchfork,clusterbomb) 91 -sip, -source-ip string 指定用于网络扫描的源IP 92 -rsr, -response-size-read int 最大读取响应大小(默认:10485760字节) 93 -rss, -response-size-save int 最大储存响应大小(默认:1048576字节) 94 -reset 删除所有nuclei配置和数据文件(包括nuclei-templates) 95 -tlsi, -tls-impersonate 启用实验性的Client Hello(ja3)TLS 随机化功能 96 97 98交互: 99 -inserver, -ineractsh-server string 使用interactsh反连检测平台(默认为oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me) 100 -itoken, -interactsh-token string 指定反连检测平台的身份凭证 101 -interactions-cache-size int 指定保存在交互缓存中的请求数(默认:5000) 102 -interactions-eviction int 从缓存中删除请求前等待的时间(默认为60秒) 103 -interactions-poll-duration int 每个轮询前等待时间(默认为5秒) 104 -interactions-cooldown-period int 退出轮询前的等待时间(默认为5秒) 105 -ni, -no-interactsh 禁用反连检测平台,同时排除基于反连检测的模板 106 107 108模糊测试: 109 -ft, -fuzzing-type string 覆盖模板中设置的模糊测试类型(replace、prefix、postfix、infix) 110 -fm, -fuzzing-mode string 覆盖模板中设置的模糊测试模式(multiple、single) 111 112 113UNCOVER引擎: 114 -uc, -uncover 启动uncover引擎 115 -uq, -uncover-query string[] uncover查询语句 116 -ue, -uncover-engine string[] 指定uncover查询引擎 (shodan,censys,fofa,shodan-idb,quake,hunter,zoomeye,netlas,criminalip,publicwww,hunterhow) (默认 shodan) 117 -uf, -uncover-field string 查询字段 (ip,port,host) (默认 "ip:port") 118 -ul, -uncover-limit int 查询结果数 (默认 100) 119 -ur, -uncover-ratelimit int 查询速率,默认每分钟60个请求(默认 60) 120 121 122限速: 123 -rl, -rate-limit int 每秒最大请求量(默认:150) 124 -rlm, -rate-limit-minute int 每分钟最大请求量 125 -bs, -bulk-size int 每个模板最大并行检测数(默认:25) 126 -c, -concurrency int 并行执行的最大模板数量(默认:25) 127 -hbs, -headless-bulk-size int 每个模板并行运行的无头主机最大数量(默认:10) 128 -headc, -headless-concurrency int 并行指定无头主机最大数量(默认:10) 129 130 131优化: 132 -timeout int 超时时间(默认为10秒) 133 -retries int 重试次数(默认:1) 134 -ldp, -leave-default-ports 指定HTTP/HTTPS默认端口(例如:host:80,host:443) 135 -mhe, -max-host-error int 某主机扫描失败次数,跳过该主机(默认:30) 136 -te, -track-error string[] 将给定错误添加到最大主机错误监视列表(标准、文件) 137 -nmhe, -no-mhe disable skipping host from scan based on errors 138 -project 使用项目文件夹避免多次发送同一请求 139 -project-path string 设置特定的项目文件夹 140 -spm, -stop-at-first-path 得到一个结果后停止(或许会中断模板和工作流的逻辑) 141 -stream 流模式 - 在不整理输入的情况下详细描述 142 -ss, -scan-strategy value 扫描时使用的策略(auto/host-spray/template-spray) (默认 auto) 143 -irt, -input-read-timeout duration 输入读取超时时间(默认:3分钟) 144 -nh, -no-httpx 禁用对非URL输入进行httpx探测 145 -no-stdin 禁用标准输入 146 147无界面浏览器: 148 -headless 启用需要无界面浏览器的模板 149 -page-timeout int 在无界面下超时秒数(默认:20) 150 -sb, -show-brower 在无界面浏览器运行模板时,显示浏览器 151 -ho, -headless-options string[] 使用附加选项启动无界面浏览器 152 -sc, -system-chrome 不使用Nuclei自带的浏览器,使用本地浏览器 153 -lha, -list-headless-action 列出可用的无界面操作 154 155调试: 156 -debug 显示所有请求和响应 157 -dreq, -debug-req 显示所有请求 158 -dresp, -debug-resp 显示所有响应 159 -p, -proxy string[] 使用http/socks5代理(逗号分隔,文件) 160 -pi, -proxy-internal 代理所有请求 161 -ldf, -list-dsl-function 列出所有支持的DSL函数签名 162 -tlog, -trace-log string 写入跟踪日志到文件 163 -elog, -error-log string 写入错误日志到文件 164 -version 显示版本信息 165 -hm, -hang-monitor 启用对nuclei挂起协程的监控 166 -v, -verbose 显示详细信息 167 -profile-mem string 将Nuclei的内存转储成文件 168 -vv 显示额外的详细信息 169 -svd, -show-var-dump 显示用于调试的变量输出 170 -ep, -enable-pprof 启用pprof调试服务器 171 -tv, -templates-version 显示已安装的模板版本 172 -hc, -health-check 运行诊断检查 173 174升级: 175 -up, -update 更新Nuclei到最新版本 176 -ut, -update-templates 更新Nuclei模板到最新版 177 -ud, -update-template-dir string 指定模板目录 178 -duc, -disable-update-check 禁用nuclei程序与模板更新 179 180统计: 181 -stats 显示正在扫描的统计信息 182 -sj, -stats-json 将统计信息以JSONL格式输出到文件 183 -si, -stats-inerval int 显示统计信息更新的间隔秒数(默认:5) 184 -mp, -metrics-port int 更改metrics服务的端口(默认:9092) 185 186云服务: 187 -auth 配置projectdiscovery云服务(pdcp)API密钥 188 -cup, -cloud-upload 将扫描结果上传到pdcp仪表板 189 -sid, -scan-id string 将扫描结果上传到指定的扫描ID 190 191例子: 192扫描一个单独的URL: 193 $ nuclei -target example.com 194 195对URL运行指定的模板: 196 $ nuclei -target example.com -t http/cves/ -t ssl 197 198扫描hosts.txt中的多个URL: 199 $ nuclei -list hosts.txt 200 201输出结果为JSON格式: 202 $ nuclei -target example.com -json-export output.json 203 204使用已排序的Markdown输出(使用环境变量)运行nuclei: 205 $ MARKDOWN_EXPORT_SORT_MODE=template nuclei -target example.com -markdown-export nuclei_report/ 206
更多信息请参考文档: https://docs.nuclei.sh/getting-started/running
使用社区提供的模板扫描单个目标
1nuclei -u https://example.com
使用社区提供的模板扫描多个目标
1nuclei -list urls.txt
Example of urls.txt
:
1http://example.com 2http://app.example.com 3http://test.example.com 4http://uat.example.com
更多关于Nuclei的详细实例可以在这里找到
Nuclei提供了大量有助于安全工程师在工作流定制相关的功能。通过各种扫描功能(如DNS、HTTP、TCP),安全工程师可以更轻松的使用Nuclei创建一套自定义的检查方式。
对于赏金猎人: Nuclei允许您定制自己的测试方法,可以轻松的运行您的程序。此外Nuclei可以更容易的集成到您的漏洞扫描工作流中。
欢迎查看我们其他的开源项目,可能有适合您的赏金猎人工作流:github.com/projectdiscovery,我们还使用Chaos绘制了每日的DNS数据。 |
对于渗透测试: Nuclei通过增加手动、自动的过程,极大地改变了安全评估的方式。一些公司已经在用Nuclei升级他们的手动测试步骤,可以使用Nulcei对数千台主机使用同样的流程自动化测试。 渗透测试员可以使用公共模板或者自定义模板来更快的完成渗透测试,特别是漏洞验证时,可以轻松的验证漏洞是否修复。 |
Nuclei构建很简单,通过数百名安全研究员的社区模板,Nuclei可以随时扫描来了解安全威胁。Nuclei通常用来用于复测,以确定漏洞是否被修复。
我们有个讨论组,黑客提交自己的模板后可以获得赏金,这可以减少资产的漏洞,并且减少重复。如果你想实行该计划,可以联系我。我们非常乐意提供帮助,或者在讨论组中发布相关信息。
有关使用Nuclei作为Library/SDK的完整指南,请访问godoc
感谢所有社区贡献者提供的PR,并不断更新此项目:heart:
如果你有想法或某种改进,欢迎你参与该项目,随时发送你的PR。
另外您可以了解其他类似的开源项目:
FFuF, Qsfuzz, Inception, Snallygaster, Gofingerprint, Sn1per, Google tsunami, Jaeles, ChopChop
Nuclei使用MIT许可证
长亭科技
1.5k
7
一款足够简单、足够好用、足够强的免费 WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护你的网站不受黑客攻击。
长亭科技
763
2
洞鉴是一款从资产视角出发,集Web漏洞扫描、主机服务漏洞扫描、基线合规检查于一体,实现资产风险闭环管理的安全评估系统。