在进行批量漏洞检测之前,必须先在本地环境中配置好Nuclei引擎。Nuclei是基于Go语言开发的,因此需要先确保Go环境已安装。以下操作以Linux/macOS系统为例,Windows用户建议使用WSL或PowerShell执行类似命令。
1. 安装Go语言环境
如果系统中未安装Go,请执行以下命令快速安装(以Linux为例):
```bash wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin ```执行 go version 确认安装成功,输出类似 go version go1.21.5 linux/amd64 即可。
2. 安装Nuclei
使用Go命令直接拉取并安装最新版本的Nuclei:
```bash go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest ```安装完成后,将Go的bin目录加入系统环境变量(如果尚未配置):
```bash export PATH=$PATH:$(go env GOPATH)/bin ```输入 nuclei -version,如果显示版本号,说明工具安装完毕。
Nuclei的核心威力在于其社区维护的模版库。默认情况下,Nuclei不会自带模版,需要手动下载并更新。
1. 初始化模版库
执行以下命令将官方社区模版库克隆到本地默认目录(通常为 ~/nuclei-templates):
该过程会下载大量YAML格式的漏洞检测模版,涵盖CVE、默认配置、敏感信息泄露等类别。首次下载可能需要几分钟,取决于网络速度。
2. 验证模版目录
确认模版目录是否存在,并查看模版数量:
```bash ls -l ~/nuclei-templates nuclei -stats ```环境配置完成后,即可开始批量检测。本章节将详细讲解如何准备目标列表、编写扫描命令以及如何控制扫描速率以防止被封禁。
批量扫描需要一个包含所有目标URL的文本文件。创建一个名为 targets.txt 的文件,每行一个目标。支持HTTP/HTTPS协议,也支持域名或IP。
targets.txt 内容示例:
```text http://example.com https://test-api.com http://192.168.1.100:8080 https://vulnerable.site/admin ```
使用 -l 参数指定目标文件,-t 指定模版。为了演示效果,我们先使用默认的模版进行全量检测。
参数详解:
执行后,终端会显示扫描进度。默认情况下,Nuclei会发送探测请求并分析响应。
在实际生产环境中,无脑全量扫描会导致目标服务器响应缓慢甚至触发WAF拦截。以下命令是一个经过优化的实战示例,适用于对公网目标进行批量检测。
```bash nuclei -l targets.txt -t cves/ -s critical,high,medium -rate-limit 10 -bulk-size 25 -c 50 -o vuln_report.txt -json ``>核心参数深度解析:
cves 目录下的模版,专注于已知漏洞检测,减少无效请求。你也可以指定特定ID,如 -t cves/CVE-2021-44228.yaml。扫描结束后,如何从海量数据中提取有价值的信息是关键。根据输出格式的不同,分析方式也有所区别。
如果未使用 -json 参数,结果文件将直接包含易读的文本摘要。
查看发现的高危漏洞:
```bash grep "CRITICAL" vuln_report.txt ``>每一条结果通常包含以下信息:
当面对成千上万个目标时,使用 jq 工具处理JSON结果能极大提升效率。假设输出文件为 report.json。
1. 统计漏洞总数:
```bash cat report.json | jq '. | length' ``>2. 提取所有存在漏洞的URL并去重:
```bash cat report.json | jq -r '.["matched-at"]' | sort -u ``>3. 筛选出所有包含 "xss" 关键词的漏洞模版:
```bash cat report.json | jq 'select(.templateID | contains("xss"))' ``>除了使用官方模版,你可以在本地编写简单的YAML文件来批量检测特定指纹。例如,检测目标是否为Spring Boot应用。
创建文件 spring-detect.yaml:
使用自定义模版进行批量扫描:
```bash nuclei -l targets.txt -t spring-detect.yaml -o spring_results.txt ``>通过这种方式,你可以快速从庞大的资产列表中筛选出特定技术栈的资产,然后再针对这些资产进行深度漏洞扫描,实现“资产发现 -> 漏洞验证”的闭环。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图