Nuclei 是一款高效的漏洞扫描工具,用于检查现代应用程序、基础设施、云平台和网络,以帮助识别和修复可被利用的漏洞。
Nuclei 的核心是基于 YAML 模板 的设计。这些模板以简单明了的 YAML 文件形式定义了检测、评估和处理特定安全漏洞的方法。
每个模板详细描述了一种可能的攻击路径,包括漏洞的描述、严重程度、优先级评分,有时还会附带相关的漏洞利用方式。这种以模板为中心的方法不仅能帮助 Nuclei 识别潜在威胁,还能精准定位具有实际威胁的可利用漏洞,从而具备显著的现实应用价值。
Nuclei 概述
Nuclei 是一款高效且可定制的漏洞扫描器,具备以下特点:
模板驱动:基于简单的 YAML 格式创建和自定义漏洞检测模板。 社区支持:由全球安全社区贡献模板,用以应对最新的漏洞。 精准检测:通过模拟真实场景的步骤,减少误报。 高性能:支持超快速的并行扫描和请求聚合。 集成能力:可嵌入 CI/CD 流水线,用于漏洞检测和回归测试。 多协议支持:涵盖 TCP、DNS、HTTP、SSL、JavaScript 等多种协议。 灵活扩展:可与 Jira、Splunk、GitHub、Elastic 等工具集成。
安装 Nuclei
安装方式一:使用 go
通过 go
编译和安装最新版本:
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -version
安装方式二:从源码构建
git clone https://github.com/projectdiscovery/nuclei.git
cd nuclei/cmd/nuclei
go build
sudo mv nuclei /usr/local/bin/
nuclei -version
安装方式三:直接下载已构建的包
以 Linux 为例:
wget https://github.com/projectdiscovery/nuclei/releases/download/v3.3.2/nuclei_3.3.2_linux_amd64.zip
unzip nuclei_3.3.2_linux_amd64.zip
sudo mv nuclei /usr/local/bin/
nuclei -version
nuclei -update-templates
查看使用帮助
nuclei -h
使用 Nuclei 进行漏洞扫描
本地测试
如果您不希望测试外部目标,可以在本地运行一些漏洞环境(如 DVWA 或 OWASP Juice Shop)。这些环境可以通过 Docker 容器快速部署。例如:
docker --version
# 确保 Docker 已安装
sudo docker pull bkimminich/juice-shop
sudo docker run -d -p 3000:3000 bkimminich/juice-shop
运行后,通过以下地址访问 Juice Shop:
http://<本地实验室IP>:3000
开始扫描
运行以下命令对 Juice Shop 进行扫描:
nuclei -u http://localhost:3000 -o results_test.txt
** -u
**:指定目标 URL。** -o
**:将扫描结果输出到指定的文本文件。
查看扫描结果
扫描结果保存在 results_test.txt
文件中,示例如下:
[dns-rebinding:IPv4] [dns] [unknown] localhost ["127.0.0.1"]
[swagger-api] [http] [info] http://localhost:3000/api-docs/swagger.json [paths="/api-docs/swagger.json"]
[missing-sri] [http] [info] http://localhost:3000 ["//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js","//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"]
[http-missing-security-headers:content-security-policy] [http] [info] http://localhost:3000
[http-missing-security-headers:referrer-policy] [http] [info] http://localhost:3000
...
分析发现的漏洞
以下是部分扫描结果的解析:
DNS 重绑定:检测到本地环境中 localhost 解析到 127.0.0.1
。在生产环境中,需确保正确配置 DNS,以防止 DNS 重绑定攻击。Swagger API:API 文档暴露在 /api-docs/swagger.json
路径下。在生产环境中,应对其进行保护或移除,避免泄露敏感 API 信息。缺少子资源完整性(SRI):外部 JavaScript 库(如 jQuery)未启用 SRI 校验,可能导致脚本在传输过程中被篡改。 缺失安全头:未设置多种重要的安全头,例如内容安全策略(CSP)和跨域资源策略(CORP),可能增加 XSS 或点击劫持等攻击的风险。 暴露的 Metrics:检测到 /metrics
路径暴露了 Kubelet 和 Prometheus 的监控数据,可能泄露敏感的操作信息。robots.txt 文件:检测到 robots.txt
文件,需确保其中未暴露敏感路径。
按需运行模板
Nuclei 支持通过指定模板运行特定的扫描。例如,如果只想运行与 Cisco 相关的模板,可以使用以下命令:
nuclei -t cisco -u http://localhost:3000 -o results_test.txt
批量目标扫描
如果需要扫描多个目标,可以将目标列表保存在一个 .txt
文件中,并使用以下命令:
nuclei -list targets.txt
总结
Nuclei 是一款强大的漏洞扫描工具,其模板驱动的架构、社区支持以及高性能使其成为现代安全测试的首选工具。在本文中,我们展示了 Nuclei 的核心概念、安装方法以及如何使用其扫描本地漏洞环境(如 OWASP Juice Shop)。Nuclei 的功能远不止于此,您还可以通过自定义模板、集成 CI/CD 流水线等方式,进一步发挥其潜力,帮助您快速识别和修复安全漏洞。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...