工具介绍《Nuclei》

一、Nuclei 简介

Nuclei 是由 ProjectDiscovery 开发的一款基于 YAML 模板的快速漏洞扫描器,专注于通过零误报的定制化模板实现高效安全检测。其核心设计理念是“以攻击性安全增强防御”,通过社区驱动的模板生态覆盖广泛漏洞场景。

1. 技术特点
  • 多协议支持:涵盖 HTTP、DNS、TCP、SSL、Websocket 等协议,适应复杂网络环境。
  • 高性能架构:基于 Go 语言开发,支持大规模并发扫描(默认 150 请求/秒)。
  • 零误报机制:模板通过严格语法校验,确保检测结果准确性。
  • 灵活扩展性:用户可自定义模板或直接使用社区维护的 nuclei-templates(含 300+ 研究员贡献的 2000+ 模板)。
2. 核心优势
  • 企业级应用:支持云平台集成(Nuclei Cloud),提供远程扫描、历史记录、调度任务等功能。
  • WAF 绕过:内置智能重试机制(RetryableHTTP 库),自动处理防火墙拦截。
  • 跨场景适配:适用于渗透测试、红队演练、漏洞验证及日常安全监控。

二、安装与配置

Nuclei 支持多种安装方式,覆盖主流操作系统和环境:

1. 安装方法
  • 安装 Nuclei 本体

    • 通过官方预编译二进制文件安装(推荐):
      • 下载地址:https://github.com/projectdiscovery/nuclei/releases
      • 选择 nuclei_X.X.X_windows_amd64.zip,解压后添加到系统环境变量 PATH 中即可使用。
    • 或通过 Go 语言环境编译安装:
      go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
      
  • Docker 部署

    docker pull projectdiscovery/nuclei:latest
    
  • 预编译包:从 GitHub Releases 下载对应平台的二进制文件。

  • 包管理器

    # Kali Linux
    apt install nuclei
    # macOS
    brew install nuclei
    
  • 获取 Nuclei-templates (也可以使用Nuclei中的命令进行下载)

    • 克隆官方模板库到本地:
      git clone https://github.com/projectdiscovery/nuclei-templates.git
      
    • 默认存储路径为 C:\Users\<用户名>\nuclei-templates,可通过修改配置文件 .templates-config.json 自定义存储位置(如 D 盘)。
2. 模板管理
  • 首次运行自动下载模板:默认存储于 ~/nuclei-templates
  • 手动更新模板
    nuclei -ut  # 更新至最新版本
    

三、核心功能与使用场景

1.Nuclei参数作用详解
### 基础扫描参数  
-target <目标>       # 指定单个目标URL/IP,或包含多个目标的文件路径(如targets.txt)  
-l <文件路径>        # 等效于 -target,用于指定目标列表文件(别名参数)  
-t <模板路径>        # 指定扫描模板,支持单个模板文件、多个模板路径或模板目录(如 -t cves/)  

### 并发与性能控制  
-c <数值>            # 设置并发请求数(默认10),高并发可加速扫描但可能触发防火墙(如 -c 50)  
-rate-limit <数值>   # 限制每秒最大请求数(默认150),防止过载目标服务器  
-timeout <秒数>      # 设置请求超时时间(默认5秒),如 -timeout 30  
-retries <次数>      # 设置失败请求的重试次数(默认1次)  

### 输出与日志  
-o <文件路径>        # 将结果输出到指定文件,支持格式:txt/json/yaml/html(如 -o output.html)  
-json               # 强制以JSON格式输出结果  
-silent             # 仅显示成功匹配的漏洞结果,隐藏调试信息  
-v                  # 显示详细请求日志,用于调试  

### 高级配置  
-p <端口>            # 指定扫描端口(如 -p 80,443)  
-H "头信息"          # 自定义HTTP请求头(如 -H "User-Agent: CustomAgent")  
-ssl-verify         # 禁用SSL证书验证(参数值设为false)  
-proxy-url <代理>    # 设置HTTP/Socks5代理(如 -proxy-url http://127.0.0.1:8080)  

### 模板管理  
-update-templates   # 更新本地漏洞模板库  
-severity <等级>     # 按漏洞严重性过滤模板(如 -severity critical,high)  
-exclude <路径>      # 排除特定模板或目录  

### 特殊功能  
-code               # 启用代码执行模块(默认禁用),需配合签名模板使用  
-project            # 避免重复发送相同请求,提升扫描效率  
-method <方法>       # 指定HTTP请求方法(如POST/PUT),默认GET  
2. 基础扫描命令
  • 单目标扫描
    nuclei -u http://target.com -t cves/ -o result.txt
    
  • 批量目标扫描
    nuclei -l targets.txt -t workflows/ -o results.json
    
  • 管道输入(结合子域名工具):
    subfinder -d example.com | nuclei -t exposures/ -silent
    
3. 模板筛选与过滤
  • 按标签/作者
    nuclei -tags cve -a pdteam  # 运行 PDTeam 团队的 CVE 模板
    
  • 按严重性
    nuclei -severity critical,high  # 仅扫描高危漏洞
    
  • 排除特定模板
    nuclei -exclude-tags misconfig -eid CVE-2023-1234
    
4. 高级参数配置
  • 并发控制
    nuclei -c 50 -rl 200  # 50 并发,200 请求/秒
    
  • 代理与调试
    nuclei -proxy-url socks5://127.0.0.1:1080 -debug  # 使用代理并显示请求详情
    
  • 结果输出格式
    nuclei -jle -o results.jsonl  # JSON Lines 格式输出
    

四、实战应用案例

1. 快速漏洞验证
# 检测 Spring4Shell(CVE-2022-22965)
nuclei -u http://target.com -id CVE-2022-22965 -silent
2. 自动化资产扫描
# 组合工具链:子域名发现 → 存活检测 → 漏洞扫描
subfinder -d example.com | httpx -silent | nuclei -t cves/ -o report.md
3. 自定义模板开发

通过 YAML 定义检测逻辑(示例模板):

id: example-xss
info:
  name: Reflected XSS Detection
  severity: medium
  author: yourname

http:
  - method: GET
    path: "{{BaseURL}}/search?q=<script>alert(1)</script>"
    matchers:
      - type: word
        words: ["<script>alert(1)</script>"]

五、Nuclei 在渗透测试中的高级用法

1、自动化资产发现与漏洞扫描
1. 结合子域名发现工具

通过将 SubfinderAmass 等工具与 Nuclei 结合,自动化发现目标资产并扫描漏洞:

subfinder -d example.com | httpx -silent | nuclei -t cves/ -o results.txt
  • 步骤解析
    1. 使用 subfinder 发现目标域名子域名。
    2. 使用 httpx 过滤存活资产。
    3. 使用 nuclei 扫描已知 CVE 漏洞。
2. 结合端口扫描工具

NmapMasscan 的端口扫描结果输入 Nuclei:

nmap -p 80,443,8080 target.com -oG - | awk '/open/{print $2}' | nuclei -t exposures/ -silent
2、高级漏洞检测与利用
1. 自定义模板实现漏洞利用

通过编写自定义模板实现漏洞利用,例如检测并利用 SQL 注入漏洞:

id: sql-injection
info:
  name: SQL Injection Vulnerability
  severity: high
  author: yourname

http:
  - method: GET
    path: "{{BaseURL}}/search?q=1' OR '1'='1"
    matchers:
      - type: word
        words: ["error in your SQL syntax"]
  • 使用方式
    nuclei -u http://target.com -t sql-injection.yaml -silent
    
2. 利用工作流模板实现多步攻击

Nuclei 的工作流模板(Workflow Templates)可以定义多步骤攻击流程,例如先检测漏洞,再尝试利用:

id: workflow-cve-exploit
info:
  name: CVE Exploit Workflow
  author: yourname

workflows:
  - template: cves/CVE-2023-1234.yaml
  - template: exploits/CVE-2023-1234-exploit.yaml
  • 使用方式
    nuclei -u http://target.com -w workflow-cve-exploit.yaml
    
3、绕过 WAF 和防御机制
1. 使用代理和重试机制

通过代理和重试机制绕过 WAF 拦截:

nuclei -u http://target.com -t cves/ -proxy-url socks5://127.0.0.1:1080 -retries 3
  • 参数解析
    • -proxy-url:使用代理隐藏真实 IP。
    • -retries:自动重试被拦截的请求。
2. 自定义请求头伪装流量

通过自定义请求头伪装正常流量:

nuclei -u http://target.com -t cves/ -H "User-Agent: Mozilla/5.0" -H "X-Forwarded-For: 127.0.0.1"
4、高级结果分析与报告生成
1. 实时扫描监控

使用 -stats 参数实时监控扫描进度:

nuclei -u http://target.com -t cves/ -stats
2. 生成多种格式报告

支持 JSON、Markdown、HTML 等多种报告格式:

nuclei -u http://target.com -t cves/ -o results.json -jle  # JSON Lines 格式
nuclei -u http://target.com -t cves/ -o report.md -me      # Markdown 格式
5、红队场景中的高级用法
1. 自动化内网渗透

结合 NucleiProxychains 实现自动化内网渗透:

proxychains nuclei -l intranet_targets.txt -t cves/ -o intranet_results.txt
2. 利用模板实现凭证爆破

通过自定义模板实现弱密码爆破:

id: basic-auth-brute
info:
  name: Basic Auth Brute Force
  severity: high
  author: yourname

http:
  - method: GET
    path: "{{BaseURL}}/admin"
    headers:
      Authorization: "Basic {{base64('admin:password')}}"
    matchers:
      - type: status
        status: [200]
  • 使用方式
    nuclei -u http://target.com -t basic-auth-brute.yaml -silent
    
3. 自动化漏洞利用链

通过工作流模板实现漏洞利用链,例如先检测漏洞,再上传 Webshell:

id: exploit-chain
info:
  name: Vulnerability Exploit Chain
  author: yourname

workflows:
  - template: cves/CVE-2023-1234.yaml
  - template: exploits/upload-webshell.yaml
6、结合 Nuclei Cloud 实现团队协作
1. 远程扫描与结果共享

通过 Nuclei Cloud 实现远程扫描和结果共享:

nuclei -u http://target.com -t cves/ -cloud
2. 任务调度与历史记录

在 Nuclei Cloud 中创建定时任务并查看历史记录:

nuclei -cloud -l targets.txt -t cves/ -schedule "0 0 * * *"

六、最佳实践与注意事项

  1. 性能优化

    • 控制并发量(-c 25)避免目标过载。
    • 使用 -timeout 10 调整超时时间应对网络延迟。
  2. 规避防御

    • 启用 -retries 3 自动重试 WAF 拦截请求。
    • 通过 -H "User-Agent: Mozilla/5.0" 伪装正常流量。
  3. 结果分析

    • 使用 -stats 实时查看扫描进度。
    • 结合 -me report.md 生成 Markdown 格式报告。

七、扩展资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值