Nuclei POC编写小白速通指南

目录

Nuclei POC编写小白速通指南

1、Nuclei是什么?

2、为什么用Nuclei

优点:

缺点:

3、Nuclei工具安装方式

安装前言:

安装Go环境教程

windows环境安装Go、Nuclei

Linux环境安装Go、Nuclei

其他环境安装Go、Nuclei

4、Nuclei工具参数详解

1.Nuclei -h

2.更新Nuclei

yaml是什么?

yaml模板内容参数解读如下:

yaml POC模板


Nuclei POC编写小白速通指南

1、Nuclei是什么?

是出家人沙仁必备,行走江湖的一大利器(bushi

是一款基于YAML语法模板的定制化快速漏洞扫描器;可以对主机进行批量快速扫描。

2、为什么用Nuclei

优点:

  1. 支持HTTP、DNS、TCP、SSL、FILE协议

  2. 可以进行大规模扫描。

  3. 基于带外的检测。

  4. 能够轻松编写自己的模板。

  5. 基于go语言

缺点:

nuclei在攻防演练中有个非常致命的问题,慢!

因为nuclei的spray规则是所有目标打全量的poc,如此大量的请求包对网络来说绝对是个灾难,要是遇到封的快的环境,也许还没探测到存在的漏洞就已经被ban了。

3、Nuclei工具安装方式

安装前言:

需要先安装Go语言,配置好环境

安装Go环境教程
windows环境安装Go、Nuclei

下载Go环境:所有版本 - The Go Programming Language (google.cn)

选择自己电脑所对应的版本,点击下载;

下载完成之后,放到自己的目录下,然后解压

桌面空白处鼠标右击此电脑—>属性—>高级系统设置—>配置环境变量

需要新建两个环境变量配置

然后将新建的GOROOT配置到 Path 这个环境变量中去,在系统变量中找到 Path,点击编辑->新建,输入%GOROOT%\bin,点击确定。

确定,确定,在确定,最后应用直到桌面。

win+R输入cmd打开终端,输入 go version ,go env

查看一下配置的环境有无问题

可以在cmd终端查看

输入

echo %GOPATH%

echo %GOROOT%

出现以上画面 那你就配置成功了嗷!

不过咱的配置到这儿只完成了99%,还差一步,老铁别急,且看我细细道来

接下来还要配置GO111MODULE、GOPROXY、GOSUMDB

为啥要配置这仨小玩意儿捏?

GO111MODULE——>on表示开启mod模式(项目管理需要用到)

输入 go env -w GO111MODULE=on

GOPROXY——>使用go get 安装第三方库的地址

输入 go env -w GOPROXY=https://mirrors.aliyun.com/goproxy

GOSUMDB——>包的MD5校验

输入 go env -w GOSUMDB=off

再次输入 go env

ok了,老铁没毛病

接下来接着在cmd命令行里安装Nuclei,命令如下:

go get -u github.com/projectdiscovery/nuclei/v2/cmd/nuclei

验证安装 运行以下命令来验证Nuclei来验证Nuclei是否正确安装:

nuclei   -version

如果一切正常,你就能看到Nuclei的版本号。

Linux环境安装Go、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

其他环境安装Go、Nuclei

kali一键安装 不需要安装Go语言,且仅限kali操作系统

apt   install   nuclei

安装完成之后,使用如下命令,检测是否安装成功

nuclei   -version

出现如上图的画面就证明你已经安装成功了嗷!

MacOS一键安装 不需要安装Go语言,仅限MacOS操作系统

brew   install nuclei

Docker一键安装 不需要安装Go语言

docker  pull  projectdiscovery/nuclei:latest

直接下载发行版 不需要安装Go语言,适合各类操作系统

https://github.com/projectdiscovery/nuclei/releases

4、Nuclei工具参数详解

1.Nuclei -h

用法:
  nuclei [命令]
 
命令:
目标:
   -u, -target string[]                 指定扫描的URL/主机
   -l, -list string                     指定需要扫描的URL/主机文件(一行一个)
 
模板:
   -t, -templates string[]              指定需要扫描的模板或者模板的路径
   -nt, -new-templates                  只扫描最新版本中添加的模板
   -w, -workflows string[]              指定扫描中的工作流或者工作流目录
   -validate                            验证通过的模板
   -tl                                  列出所有可用的模板
 
过滤:
   -tags string[]                       执行有标记的模板子集
   -etags, -exclude-tags string[]       执行标记为排除的模板
   -itags, -include-tags string[]       不执行具有攻击性的模板
   -et, -exclude-templates string[]     要排除的模板或者模板目录
   -it, -include-templates string[]     执行默认或配置中排除的模板
   -s, -severity value[]                根据严重性运行模板,允许的值有:info,low,medium,high,critical   
   -es, -exclude-severity value[]       根据严重性排除模板,允许的值有:info,low,medium,high,critical   
   -a, -author string[]                 执行指定作者的模板
 
输出:
   -o, -output string                   输出发现的问题到文件
   -silent                              只显示结果
   -nc, -no-color                       禁用输出内容着色(ANSI转义码)
   -json                                输出为jsonL(ines)
   -irr, -include-rr                    在JSONL中输出对应的请求和相应(仅结果)
   -nm, -no-meta                        不显示匹配的元数据
   -nts, -no-timestamp                  不在输出中显示时间戳
   -rdb, -report-db string              本地的Nuclei结果数据库(始终使用该数据库保存结果)       
   -me, -markdown-export string         以markdown导出结果
   -se, -sarif-export string            以SARIF导出结果
 
配置:
   -config string                       指定Nuclei的配置文件
   -rc, -report-config string           指定Nuclei报告模板文件
   -H, -header string[]                 指定报告中的标题:value格式
   -V, -var value                       通过var=value指定var值
   -r, -resolvers string                指定Nuclei的解析文件
   -sr, -system-resolvers               当DNS错误时使用系统DNS
   -passive                             启用被动扫描处理HTTP响应
   -ev, env-vars                        在模板中使用环境变量
 
交互:
   -inserver, -ineractsh-server string  使用interactsh反连检测平台(默认为"https://interact.sh")
   -itoken, -interactsh-token string    指定反连检测平台的身份凭证
   -interactions-cache-size int         指定保存在交互缓存中的请求数(默认:5000)
   -interactions-eviction int           聪缓存中删除请求前等待的时间(默认为60秒)
   -interactions-poll-duration int      每个轮询前等待时间(默认为5秒)
   -interactions-cooldown-period int    退出轮询前的等待时间(默认为5秒)
   -ni, -no-interactsh                  禁用反连检测平台,同时排除基于反连检测的模板
 
限速:
   -r1, -rate-limit int                 每秒最大请求量(默认:150)
   -rlm, -rate-limit-minute int         每分钟最大请求量
   -bs, -bulk-size int                  每个模板最大并行检测数(默认:25)
   -c, -concurrency int                 并行执行的最大模板数量(默认:25)
 
 
优化:
   -timeout int                         超时时间(默认为5秒)
   -retries int                         重试次数(默认:1)
   -mhe, -max-host-error int            某主机扫描失败次数,跳过该主机(默认:30)
   -project                             使用项目文件夹避免多次发送同一请求
   -project-path string                 设置特定的项目文件夹
   -spm, -stop-at-first-path            得到一个结果后停止(或许会中断模板和工作流的逻辑)
   -stream                              流模式 - 在不整理输入的情况下详细描述
 
无界面浏览器:
    -headless                           启用需要无界面浏览器的模板
    -page-timeout int                   在无界面下超时秒数(默认:20)
    -sb, -show-brower                   在无界面浏览器运行模板时,显示浏览器
    -sc, -system-chrome                 不使用Nuclei自带的浏览器,使用本地浏览器
 
调试:
    -debug                              显示所有请求和响应
    -debug-req                          显示所有请求
    -debug-resp                         显示所有响应
    -proxy, -proxy-url string           使用HTTP代理
    -proxy-socks-url string             使用SOCK5代理
    -tlog, -trace-log string            写入请求日志到文件
    -version                            显示版本信息
    -v, -verbose                        显示详细信息
    -vv                                 显示额外的详细信息
    -tv, -templates-version             显示已安装的模板版本
 
升级:
    -update                             更新Nuclei到最新版本
    -ut, -update-templates              更新Nuclei模板到最新版
    -ud, -update-directory string       覆盖安装模板
    -duc, -disable-update-check         禁用更新
 
统计:
    -stats                              显示正在扫描的统计信息
    -sj, -stats-json                    将统计信息以JSONL格式输出到文件
    -si, -stats-inerval int             显示统计信息更新的间隔秒数(默认:5)
    -m, -metrics                        显示Nuclei端口信息
    -mp, -metrics-port int              更改Nuclei默认端口(默认:9092)

2.更新Nuclei

使用nuclei -update命令来将您的Nuclei更新到最新版本。

使用nuclei -update-templates命令来将您的核心模板nuclei-templates更新到最新版本,另外Nuclei本身每24小时也会进行一次自动更新。

yaml是什么?

是一个可读性高,用来表达数据序列化的格式。

切记

YAML不允许使用制表符

元素部分之间必须有空间

YAML区分大小写

YAML文档标准后缀名是: 1、.yaml 2、.yml

yaml模板内容参数解读如下:

id: 定义了该漏洞验证请求的唯一标识符。

info: 定义了漏洞验证请求的相关信息。

name: 指定了漏洞验证请求的名称。 author: 指定了该漏洞验证请求的作者。

severity: high: 指定了该漏洞验证请求的严重程度。 description: 提供描述信息。

requests: 定义了一个请求列表,包含了漏洞验证请求。

raw: 定义了一个原始请求(HTTP请求)。

matchers-condition: and: 定义了匹配条件的逻辑关系,表示所有匹配条件都必须满足。

matchers: 定义了一组匹配条件,用于验证漏洞存在性。 type: word: 指定了匹配条件的类型为关键词匹配。

part: header: 指定了关键词匹配的范围是HTTP头部。

words: 指定了需要匹配的关键词。

type: status: 指定了匹配条件的类型为状态码。

status: 指定了需要匹配的HTTP响应状态码,表示需要匹配HTTP响应状态码是否为200。

yaml POC模板

id: Vulnerability template
​
info:
  name: Vulnerability template
  author: I9nite
  severity: high
  description:描述信息
requests:
  - raw: GET
    matchers-condition: and
    matchers:
      - type: word
        part: header
        words:
          - 'There are loopholes'
      - type: status
        status:
          - 200
          
  • 31
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三七怪鸽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值