使用nuclei扩充自己的武器库-nuclei3 sdk开发指南

一、nuclei是什么 

Nuclei 是一个快速、灵活、可扩展的开源漏洞扫描工具,用于发现 Web 应用程序中的安全问题。它允许安全研究人员和渗透测试人员轻松地定义和执行定制的漏洞扫描任务。

Nuclei 使用模板来定义漏洞扫描任务。这些模板是基于 YAML 格式的,允许用户根据需要定制扫描规则和操作。Nuclei 官方社区包含一个内置的模板库,其中包含常见的漏洞检测规则,例如 XSS、SQL 注入、路径遍历等。

Nuclei3版本以上迎来了重大更新,官方开始支持nuclei作为sdk的形式,嵌入到开发者自己的工具当中。当然,目前仅限于golang语言。

二、获取nuclei SDK

要将 nuclei 作为库添加到go项目中,可以使用以下命令:

go get -u github.com/projectdiscovery/nuclei/v3/lib

如果有IDE环境的话,也可以直接引用,让IDE自动拉取sdk:

import nuclei "github.com/projectdiscovery/nuclei/v3/lib"

三、编写代码

新建一个main.go文件,首先引用nuclei sdk包

package main

import (
	"fmt"
	nuclei "github.com/projectdiscovery/nuclei/v3/lib"
	"github.com/projectdiscovery/nuclei/v3/pkg/output"
)

声明一个main函数,使用sdk包扫描一个目标:

func main(){
    // 创建nuclei引擎对象,设置只扫描http服务漏洞模板
	ne, err := nuclei.NewNucleiEngine(
		nuclei.WithTemplateFilters(nuclei.TemplateFilters{ProtocolTypes: "http"}),
	)
	if err != nil {
		panic(err)
	}

	// 设置扫描目标,这里是一个字符串切片,可以同时扫描多个
	ne.LoadTargets([]string{"http://example.com"}, false)
    // 设置扫描出漏洞的回调函数,用results变量保存漏洞
	results := make([]*output.ResultEvent, 0)
	WriteCallback := func(event *output.ResultEvent) {

		if len(event.Response) > 10240 {
			event.Response = event.Response[:10240]
		}
		results = append(results, event)
	}
    // 执行扫描
	err = ne.ExecuteWithCallback(WriteCallback)
	if err != nil {
		panic(err)
	}
	defer ne.Close()
    // 打印漏洞个数
	fmt.Println(len(results))
}

四、运行样例代码

go run main.go

五、更多设置

nuclei3 sdk提供了丰富的扫描参数设置,例如:

// 设置UA
ne.GetExecuterOptions().Options.CustomHeaders = []string{"User-Agent: test hello"}
// 不缓存
ne.GetExecuterOptions().DoNotCache = true
// 每次扫描前尝试更新官方社区模板库
ne.GetExecuterOptions().Options.UpdateTemplates = true

更多设置请查看手册:

nuclei package - github.com/projectdiscovery/nuclei/v3/lib - Go Packages

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值