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
验证安装:
目标:
1、-u / -l
指定扫描的目标URL/主机及主机列表.txt
2、-resume
使用指定的resume.cfg文件恢复扫描
3、-sa
扫描由目标解析出来的所有IP(针对域名对应多个IP的情况)
4、-iv
指定要扫描的主机名的IP版本(4,6)-(默认为4)
模板:
5、-tl
列出所有可用的模板
例如:nuclei -tl
6、-nt
仅运行最新发布的nuclei模板
7、-t
指定要运行的模板或者模板目录(以逗号分隔或目录形式)
8、-turl
指定要运行的模板URL或模板目录URL(以逗号分隔或目录形式)
过滤:
9、-a,执行指定作者的模板(逗号分隔,文件)
10、-tags,执行带指定tag的模板(逗号分隔,文件)
11、-etags,排除带指定tag的模板(逗号分隔,文件)
12、-id,执行指定id的模板(逗号分隔,文件)
13、-eid,排除指定id的模板(逗号分隔,文件)
14、-s,根据严重程度运行模板,可选值有:info,low,medium,high,critical
15、-es,根据严重程度排除模板,可选值有:info,low,medium,high,critical
16、-pt
根据类型运行模板,可选值有:dns, file, http, headless, network, workflow, ssl, websocket, whois
17、-ept
根据类型排除模板,可选值有:dns, file, http, headless, network, workflow, ssl, websocket, whois
输出:
18、-o,输出发现的问题到文件
19、-sresp,将nuclei的所有请求和响应输出到目录
20、-srd,将nuclei的所有请求和响应输出到指定目录(默认:output)
21、-ms,显示匹配失败状态
22、-me,以markdown格式导出结果
23、-se,以SARIF格式导出结果
24、-je,以JSON格式导出结果
25、-jle,以JSONL(ine)格式导出结果
配置:
26、-fr,为HTTP模板启用重定向
27、-mr,HTTP模板最大重定向次数(默认:10)
28、-dr,为HTTP模板禁用重定向
29、-H,指定在所有http请求中包含的自定义header、cookie,以header:value
的格式指定(cli,文件)
30、-sip,指定用于网络扫描的源IP
限速:
31、-rl,每秒最大请求量(默认:150)
32、-rlm,每分钟最大请求量
33、-bs,每个模板最大并行检测数(默认:25)
34、-c,并行执行的最大模板数量(默认:25)
35、-hbs,每个模板并行运行的无头主机最大数量(默认:10)
36、-headc,并行指定无头主机最大数量(默认:10)
优化:
37、-timeout,超时时间(默认为10秒)
38、-retries,重试次数(默认:1)
39、-ldp,指定HTTP/HTTPS默认端口(例如:host:80,host:443)
调试:
40、-debug,显示所有请求和响应
41、-dreq,显示所有请求
42、-dresp,显示所有响应
43、-p,使用http/socks5代理
44、-version,显示版本
45、-v / -vv
,显示详细/超级详细信息
46、-hc,运行诊断检查
升级:
47、-up,更新Nuclei到最新版本
48、-ut,更新Nuclei模板到最新版
统计:
49、-stats,显示正在扫描的统计信息
50、-sj,将统计信息以JSONL格式输出到文件
51、-si,显示统计信息更新的间隔秒数(默认:5)
云服务:
52、-auth,配置projectdiscovery云(pdcp)API密钥
53、-cup,将扫描结果上传到pdcp仪表板
默认情况下,所有模板(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
Nuclei 现在允许与 ProjectDiscovery 云平台无缝集成,以简化 Nuclei 结果的可视化并快速生成报告
请按照以下步骤设置 PDCP 结果仪表板:
1、访问 https://cloud.projectdiscovery.io
以创建免费的 PDCP API 密钥
查看API:
2、使用命令,在出现提示时输入您的 API 密钥。nuclei -auth
3、之后,要执行扫描并将结果直接上传到云端,请在运行细胞核扫描时使用该选项。-cloud-upload
例如:
nuclei -u https://convocation.apps.sinica.edu.tw/ -t cves/ -p http://127.0.0.1:7890 -cloud-upload -ms
4、扫描完成后,命令行界面上将显示一个 URL。请访问此 URL,在 Cloud Dashboard 上查看结果
ProjectDiscovery 云平台 API v1 围绕 REST 进行组织。API 具有面向资源的 URL,在大多数情况下接受和返回 JSON,并且 API 使用标准的 HTTP 响应代码、身份验证和动词。这给了我们自研扫描行为很大的支持:
扫描API 文档
Nuclei Template Editor 是一款多功能云托管工具,专为创建、运行和共享 Nuclei 模板而设计。它为寻求管理和执行模板的个人和专业用户提供了有用的功能
Nuclei Template Editor
使用方法:
1、单击“创建新模板”按钮以打开一个新的编辑器
2、编写和修改模板。编辑器利用语法突出显示、片段建议等工具来简化您的写作过程
3、编写完模板后,输入您的测试目标,然后单击“扫描”按钮以验证模板的准确性
4、也可以点击share分享你编写的模板:
https://cloud.projectdiscovery.io/@dahezhiquan/doCtfjTUDJpD2FzpC6arDU
5、模板快捷键