现在只对常读和星标的公众号才展示大图推送,建议大家能把渗透安全团队“设为星标”,否则可能就看不到了啦!
一、工具简介
Nuclei是一款基于YAML语法模板开发的定制化快速漏洞扫描器,它使用Go语言开发,具有很强的可配置性,可扩展性和易用性。
官网地址:https://nuclei.projectdiscovery.io
Nuclei项目地址:https://github.com/projectdiscovery/nuclei
Nuclei-Templates项目地址:https://github.com/projectdiscovery/nuclei-templates
建议直接使用发行版:https://github.com/projectdiscovery/nuclei/releases,无需我们安装GO环境。
二、功能介绍
1、HTTP/DNS/TCP/文件支持
2、完全可配置的模板
3、大规模扫描
4、基于带外的检测
5、轻松编写自己的模板
三、工具安装
1、安装go语言
由于Nuclei需要最新的go才能安装,安装之前需要先使用一下命令安装go语言。
sudo apt update
sudo apt install golang-go
安装完成后,可使用go version命令来查看GO语言的版本。
2、安装Nuclei
Nuclei官方提供了各种安装方式,用户可以根据自己的实际情况选择合适的安装方式。
#【在线源码编译安装】-需安装Go语言
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
#【本地源码编译安装】-需安装Go语言
git clone https://github.com/projectdiscovery/nuclei.git
cd nuclei/v2/cmd/nuclei
go build
mv nuclei /usr/local/bin/
nuclei -version
#【kali一键安装】-【推荐】-不需要安装Go语言,且仅限kali操作系统
apt install nuclei
#【macOS一键安装】-【推荐】-不需要安装Go语言,且仅限macOS操作系统
brew install nuclei
#【docker一键安装】-【推荐】-不需要安装Go语言
docker pull projectdiscovery/nuclei:latest
#【直接下载发行版】-【推荐】-不需要安装Go语言,适合各类操作系统
https://github.com/projectdiscovery/nuclei/releases
安装成功后,在终端窗口输入nuclei -version可以查看nuclei版本。
同时字v2.4.0版本以来,Nuclei内置对自动更新/下载模板的支持,初次运行Nuclei会自动下载最新的nuclei-templates到当前用户根目录(/home/当前用户/nuclei-templates)。
Nuclei-Templates项目提供了一个社区贡献的现成模板列表,该列表将不断更新,用户也可以自己下载最新版模板到本地。
Nuclei-Templates下载地址:https://github.com/projectdiscovery/nuclei-templates
四、工具使用
1)nuclei -h
这将显示nuclei的帮助,一下时所有支持的命令
标志:
目标:
-u, -target string[] 要扫描的目标 URL/主机
-l, -list 包含要扫描的目标 URL/主机列表的文件的字符串路径(每行一个)
-resume 字符串使用 resume.cfg 恢复扫描(集群将被禁用)
-sa, -scan-all-ips 扫描所有与 dns 记录关联的 IP
-iv, -ip-version string[] 要扫描主机名的 IP 版本 (4,6) -(默认 4)
模板:
-nt, -new-templates 只运行在最新的 nuclei-templates 版本中添加的新模板
-ntv, -new-templates-version string[] 运行在特定版本中添加的新模板
-as, -automatic-scan 使用 wappalyzer 技术检测到标签映射的自动网络扫描
-t, -templates string[] 要运行的模板列表或模板目录(逗号分隔,文件)
-tu, -template-url string[] 要运行的模板 url 列表(逗号分隔,文件)
-w, -workflows string[] 要运行的工作流或工作流目录列表(逗号分隔,文件)
-wu, -workflow-url string[] 要运行的工作流 url 列表(逗号分隔,文件)
-validate 验证传递给核的模板
-nss, -no-strict-syntax 禁用对模板的严格语法检查
-td, -template-display 显示模板内容
-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[] 根据严重性运行的模板。可能的值:信息、低、中、高、严重、未知
-es, -exclude-severity value[] 根据严重性排除的模板。可能的值:信息、低、中、高、严重、未知
-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 传递的请求/响应存储到自定义目录(默认“输出”)
- 仅静默显示结果
-nc, -no-color 禁用输出内容着色(ANSI 转义码)
-json 以 JSONL(ines) 格式写入输出
-irr, -include-rr 在 JSONL 输出中包含请求/响应对(仅用于结果)
-nm, -no-meta 在 cli 输出中禁用打印结果元数据
-ts, -timestamp 启用在 cli 输出中打印时间戳
-rdb, -report-db string nuclei报告数据库(总是用它来持久化报告数据)
-ms, -matcher-status 显示匹配失败状态
-me, -markdown-export string目录以markdown格式导出结果
-se, -sarif-export 字符串文件以 SARIF 格式导出结果
配置:
-config string 内核配置文件的路径
-fr, -follow-redirects 为 http 模板启用跟随重定向
-fhr, -follow-host-redirects 遵循同一主机上的重定向
-mr, -max-redirects int HTTP 模板要遵循的最大重定向数(默认为 10)
-dr, -disable-redirects 禁用 http 模板的重定向
-rc, -report-config string 核报告模块配置文件
-H, -header string[] 自定义标头/cookie,以标头:值格式(cli,文件)包含在所有 http 请求中
-V, -var value key=value 格式的自定义变量
-r, -resolvers 包含核解析器列表的字符串文件
-sr, -system-resolvers 使用系统 DNS 解析作为错误回退
五、更新Nuclei
使用nuclei -update命令来讲您的Nuclei更新到最新的版本。
使用nuclei -update-templates命令将您的核心模板nuclei-templates更新到最新的版本,另外Nuclei本身每24小时也会进行一次自动更新。
六、使用
1、扫描单个目标
nuclei -u http://192.168.61.1/
#使用socks5代理
nuclei -u http://192.168.61.1/ -p socks5://127.0.0.1:1080
#使用http代理
nuclei -u http://192.168.61.1/ -p http://127.0.0.1:8080
2、扫描多个目标
nuclei -list urls.txt
#使用socks5代理
nuclei -list urls.txt -p socks5://127.0.0.1:1080
#使用http代理
nuclei -list urls.txt -p http://127.0.0.1:8080
其中urls.txt为扫描目标的url。
3、自定义报告格式
Nuclei提供了扫描结果输出功能,用户可以根据自己的需求,自定义输出各种类型的报告格式,包括文本,JSON,Markdown等。
#输出结果为JSON格式
nuclei -u https://example.com -json
#输出结果保存到result.txt文件
nuclei -u https://example.com -o result.txt
#输出结果保存到Markdown格式文件
nuclei -u https://example.com -me result
★
原文始发于微信公众号(渗透安全团队):工具 | Nuclei漏洞扫描详解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论