相关阅读

视频讲解

本期视频我们将为大家带来由社区驱动的漏扫神器Nuclei,现社区贡献已经高达4733个漏洞POC,值得注意的是Nuclei非常智能,例如几个POC可能发出的请求是类似的,它会自动进行归并、筛选后减少同样请求的发出,在渗透测试过程中体验还是很棒的!大家也可以自己学着写一下yaml模板,随时可以支持新的0day、nday漏洞

图文讲解

工具介绍

Nuclei使用零误报的定制模板向目标发送请求,同时可以对主机进行批量快速扫描。Nuclei提供TCP、DNS、HTTP、FILE等各类协议的扫描,通过强大且灵活的模板,可以使用Nuclei模拟各种安全检查。

我们的模板仓库包含超过300安全研究员和工程师提供的模板。

工作流程

  • 创建你的YAML模板
  • 针对目标进行漏洞验证
图片[1]-【渗透工具系列】社区驱动的漏洞扫描神器Nuclei-FancyPig's blog

安装教程

您可以通过go直接安装Nuclei(官方提示是需要go1.18以上版本才能安装成功)

go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest

安装完成后直接输入nuclei运行

漏洞POC更新

自从v2.5.2起,Nuclei就内置了自动下载更新模板的功能。Nuclei模板仓库随时更新社区中可用的模板列表。

您仍然可以随时使用update-templates命令更新模板,您可以根据模板指南为您的个人工作流和需求编写模板。

YAML的语法规范在这里

用法

nuclei -h

这将显示Nuclei的帮助,以下是所有支持的命令。

Nuclei是一款注重于可配置性、可扩展性和易用性的基于模板的快速漏洞扫描器。

用法:
  nuclei [命令]

命令:
目标:
   -u, -target string[]                  指定扫描的URL/主机
   -l, -list string                      指定需要扫描的URL/主机文件(一行一个)
   -resume string                        断点续扫(将禁用集群)

模板:
   -nt, -new-templates                   只扫描最新版本中添加的模板
   -ntv, -new-templates-version string[] 运行在特定版本中添加的新模板
   -as, -automatic-scan                  在自动web扫描中使用wappalyzer技术检测的指纹
   -t, -templates string[]               指定需要扫描的模板或者模板的路径(逗号分隔,文件)
   -tu, -template-url string[]           从URL加载模板(逗号分隔,文件)
   -w, -workflows string[]               指定扫描中的工作流或者工作流目录(逗号分隔,文件)
   -wu, -workflow-url string[]           从URL加载工作流(逗号分隔,文件)
   -validate                             验证通过的模板
   -nss, -no-strict-syntax               禁用模板的严格检查
   -tl                                   列出所有可用的模板

过滤:
   -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
   -es, -exclude-severity value[]        根据严重程度排除模板,可候选的值有:info,low,medium,high,critical
   -pt, -type value[]                    根据协议运行模板,可候选的值有:dns, file, http, headless, network, workflow, ssl, websocket, whois
   -ept, -exclude-type value[]           根据协议排除模板,可候选的值有:dns, file, http, headless, network, workflow, ssl, websocket, whois
   -tc, -template-condition string[]      根据表达式运行模板

输出:
   -o, -output string                    输出发现的问题到文件
   -sresp, -store-resp                   将nuclei的所有请求和响应输出到目录
   -srd, -store-resp-dir string          将nuclei的所有请求和响应输出到指定目录(默认:output)
   -silent                               只显示结果
   -nc, -no-color                        禁用输出内容着色(ANSI转义码)
   -json                                 输出为jsonL(ines)
   -irr, -include-rr                     在JSONL中输出对应的请求和相应(仅结果)
   -nm, -no-meta                         不显示匹配的元数据
   -nts, -no-timestamp                   不在输出中显示时间戳
   -rdb, -report-db string               本地的Nuclei结果数据库(始终使用该数据库保存结果)
   -ms, -matcher-status                  显示匹配失败状态
   -me, -markdown-export string          以markdown导出结果
   -se, -sarif-export string             以SARIF导出结果

配置:
   -config string                        指定Nuclei的配置文件
   -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、cookie,以header:value的方式(cli,文件)
   -V, -var value                        通过key=value指定var值
   -r, -resolvers string                 指定Nuclei的解析文件
   -sr, -system-resolvers                当DNS错误时使用系统DNS
   -passive                              启用被动扫描处理HTTP响应
   -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
   -sni string                           指定tls sni的主机名(默认为输入的域名)
   -i, -interface string                 指定网卡
   -sip, -source-ip string               指定源IP
   -config-directory string              重写默认配置路径($home/.config)
   -rsr, -response-size-read int         最大读取响应大小(默认:10485760字节)
   -rss, -response-size-save int         最大储存响应大小(默认:10485760字节)

交互:
   -inserver, -ineractsh-server string   使用interactsh反连检测平台(默认为oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me)
   -itoken, -interactsh-token string     指定反连检测平台的身份凭证
   -interactions-cache-size int          指定保存在交互缓存中的请求数(默认:5000)
   -interactions-eviction int            从缓存中删除请求前等待的时间(默认为60秒)
   -interactions-poll-duration int       每个轮询前等待时间(默认为5秒)
   -interactions-cooldown-period int     退出轮询前的等待时间(默认为5秒)
   -ni, -no-interactsh                   禁用反连检测平台,同时排除基于反连检测的模板

限速:
   -rl, -rate-limit int                  每秒最大请求量(默认:150)
   -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)

优化:
   -timeout int                          超时时间(默认为10秒)
   -retries int                          重试次数(默认:1)
   -ldp, -leave-default-ports            指定HTTP/HTTPS默认端口(例如:host:80,host:443)
   -mhe, -max-host-error int             某主机扫描失败次数,跳过该主机(默认:30)
   -project                              使用项目文件夹避免多次发送同一请求
   -project-path string                  设置特定的项目文件夹
   -spm, -stop-at-first-path             得到一个结果后停止(或许会中断模板和工作流的逻辑)
   -stream                               流模式 - 在不整理输入的情况下详细描述
   -irt, -input-read-timeout duration    输入读取超时时间(默认:3分钟)
   -no-stdin                             禁用标准输入

无界面浏览器:
    -headless                            启用需要无界面浏览器的模板
    -page-timeout int                    在无界面下超时秒数(默认:20)
    -sb, -show-brower                    在无界面浏览器运行模板时,显示浏览器
    -sc, -system-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                             显示版本信息
    -hm, -hang-monitor                   启用Nuclei的监控
    -v, -verbose                         显示详细信息
    -profile-mem string                  将Nuclei的内存转储成文件
    -vv                                  显示额外的详细信息
    -ep, -enable-pprof                   启用pprof调试服务器
    -tv, -templates-version              显示已安装的模板版本
    -hc, -health-check                   运行诊断检查

升级:
    -update                              更新Nuclei到最新版本
    -ut, -update-templates               更新Nuclei模板到最新版
    -ud, -update-directory string        覆盖安装模板
    -duc, -disable-update-check          禁用更新

统计:
    -stats                               显示正在扫描的统计信息
    -sj, -stats-json                     将统计信息以JSONL格式输出到文件
    -si, -stats-inerval int              显示统计信息更新的间隔秒数(默认:5)
    -m, -metrics                         显示Nuclei端口信息
    -mp, -metrics-port int               更改Nuclei默认端口(默认:9092)

常见参数

选项标签描述信息使用样例
-c并发请求数(默认为10nuclei -c 100
-l要运行模板的URL列表nuclei -l urls.txt
-t需跨主机检测的模板输入文件nuclei -t git-core.yaml
-t需跨主机检测的模板输入文件nuclei -t “path/*.yaml”
-nC输出中不使用高亮颜色nuclei -nC
-o保存输出结果文件(可选)nuclei -o output.txt
-silent在输出中仅显示找到的结果nuclei -silent
-retries重试失败请求的次数(默认值1)nuclei -retries 1
-timeout超时前等待的秒数(默认为5)nuclei -timeout 5
-v显示详细输出nuclei -v
-version显示Nuclei版本nuclei -version
-proxy-url代理URLnuclei -proxy-url http://user:pass@this.is.a.proxy:8080
-proxy-socks-url代理Socks URLnuclei -proxy-socks-url socks5://user:pass@this.is.a.proxy.socks:9050

运行Nuclei

使用社区提供的模板扫描单个目标

nuclei -u https://example.com

使用社区提供的模板扫描多个目标

nuclei -list urls.txt

Example of urls.txt:

http://example.com
http://app.example.com
http://test.example.com
http://uat.example.com

更多关于Nuclei的详细实例可以在这里找到

© 版权声明
THE END
喜欢就支持一下吧
点赞17赞赏 分享
评论 共5条

请登录后发表评论