Nuclei漏洞扫描工具全面使用教程
Nuclei漏洞扫描工具全面使用教程
1. 工具概述
Nuclei 是一种可快速利用的漏洞扫描程序,旨在探测现代应用程序、基础设施、云平台和网络,帮助识别和缓解漏洞。
Nuclei 的核心是利用模板(表示为简单的 YAML 文件)来描述检测、排名和解决特定安全漏洞的方法。每个模板都描述了可能的攻击路线,详细说明了漏洞、其严重性、优先级以及偶尔出现的相关漏洞。这种以模板为中心的方法确保 Nuclei 不仅可以识别潜在威胁,还可以精确定位具有切实现实影响的可利用漏洞。
安装Nuclei的几种方式:
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
brew install nuclei
docker pull projectdiscovery/nuclei:latest
或者直接下载二进制版本:
https://github.com/projectdiscovery/nuclei/releases
验证安装:
2. 参数解析
目标:
-u / -l
:指定扫描的目标URL/主机及主机列表.txt-resume
:使用指定的resume.cfg文件恢复扫描-sa
:扫描由目标解析出来的所有IP(针对域名对应多个IP的情况)-iv
:指定要扫描的主机名的IP版本(4,6)-(默认为4)
模板:
-tl
:列出所有可用的模板
例如:
nuclei -tl
-nt
:仅运行最新发布的nuclei模板-t
:指定要运行的模板或者模板目录(以逗号分隔或目录形式)-turl
:指定要运行的模板URL或模板目录URL(以逗号分隔或目录形式)
过滤:
-a
:执行指定作者的模板(逗号分隔,文件)-tags
:执行带指定tag的模板(逗号分隔,文件)-etags
:排除带指定tag的模板(逗号分隔,文件)-id
:执行指定id的模板(逗号分隔,文件)-eid
:排除指定id的模板(逗号分隔,文件)-s
:根据严重程度运行模板,可选值有:info,low,medium,high,critical-es
:根据严重程度排除模板,可选值有:info,low,medium,high,critical-pt
:根据类型运行模板,可选值有:dns, file, http, headless, network, workflow, ssl, websocket, whois-ept
:根据类型排除模板,可选值有:dns, file, http, headless, network, workflow, ssl, websocket, whois
输出:
-o
:输出发现的问题到文件-sresp
:将nuclei的所有请求和响应输出到目录-srd
:将nuclei的所有请求和响应输出到指定目录(默认:output)-ms
:显示匹配失败状态-me
:以markdown格式导出结果-se
:以SARIF格式导出结果-je
:以JSON格式导出结果-jle
:以JSONL(ine)格式导出结果
配置:
-fr
:为HTTP模板启用重定向-mr
:HTTP模板最大重定向次数(默认:10)-dr
:为HTTP模板禁用重定向-H
:指定在所有http请求中包含的自定义header、cookie,以header:value的格式指定(cli,文件)-sip
:指定用于网络扫描的源IP
限速:
-rl
:每秒最大请求量(默认:150)-rlm
:每分钟最大请求量-bs
:每个模板最大并行检测数(默认:25)-c
:并行执行的最大模板数量(默认:25)-hbs
:每个模板并行运行的无头主机最大数量(默认:10)-headc
:并行指定无头主机最大数量(默认:10)
优化:
-timeout
:超时时间(默认为10秒)-retries
:重试次数(默认:1)-ldp
:指定HTTP/HTTPS默认端口(例如:host:80,host:443)
调试:
-debug
:显示所有请求和响应-dreq
:显示所有请求-dresp
:显示所有响应-p
:使用http/socks5代理-version
:显示版本-v / -vv
:显示详细/超级详细信息-hc
:运行诊断检查
升级:
-up
:更新Nuclei到最新版本-ut
:更新Nuclei模板到最新版
统计:
-stats
:显示正在扫描的统计信息-sj
:将统计信息以JSONL格式输出到文件-si
:显示统计信息更新的间隔秒数(默认:5)
云服务:
-auth
:配置projectdiscovery云(pdcp)API密钥-cup
:将扫描结果上传到pdcp仪表板
3. 如何运行Nuclei
默认情况下,所有模板(nuclei-ignore 列表除外)都从默认模板安装路径执行
模板仓库
nuclei -u https://archeodata.sinica.edu.tw/
自定义模板目录或多个模板目录可以按如下方式执行:
nuclei -u https://example.com -t cves/ -t exposures/
指定单个模板进行测试:
nuclei -u https://archeodata.sinica.edu.tw/ -t ssl\deprecated-tls.yaml
同样,可以针对 URL 列表执行模板:
nuclei -list http_urls.txt
4. 使用Nuclei结果仪表板
Nuclei 现在允许与 ProjectDiscovery云平台无缝集成,以简化 Nuclei 结果的可视化并快速生成报告
请按照以下步骤设置 PDCP 结果仪表板:
访问 https://cloud.projectdiscovery.io 以创建免费的 PDCP API 密钥
查看API:使用命令,在出现提示时输入您的 API 密钥。
nuclei -auth
- 之后,要执行扫描并将结果直接上传到云端,请在运行细胞核扫描时使用该选项。
-cloud-upload
例如:
nuclei -u https://convocation.apps.sinica.edu.tw/ -t cves/ -p http://127.0.0.1:7890 -cloud-upload -ms
- 扫描完成后,命令行界面上将显示一个 URL。请访问此 URL,在 CloudDashboard上查看结果
5. 配合自研
ProjectDiscovery 云平台 API v1 围绕 REST 进行组织。API 具有面向资源的 URL,在大多数情况下接受和返回 JSON,并且 API 使用标准的 HTTP 响应代码、身份验证和动词。这给了我们自研扫描行为很大的支持:
扫描API 文档
6. 模板编辑器使用
Nuclei Template Editor 是一款多功能云托管工具,专为创建、运行和共享 Nuclei 模板而设计。它为寻求管理和执行模板的个人和专业用户提供了有用的功能
Nuclei Template Editor 使用方法:
- 单击“创建新模板”按钮以打开一个新的编辑器
- 编写和修改模板。编辑器利用语法突出显示、片段建议等工具来简化您的写作过程
- 编写完模板后,输入您的测试目标,然后单击“扫描”按钮以验证模板的准确性
- 也可以点击share分享你编写的模板:
https://cloud.projectdiscovery.io/@dahezhiquan/doCtfjTUDJpD2FzpC6arDU