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

news2025/1/17 1:12:17

一、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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1519024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是MVC三层结构

1.MVC(三层结构) MVC(Model-View-Controller)是一种常见的软件设计模式,用于将应用程序的逻辑和界面分离成三个不同的组件。每个组件负责特定的任务,从而提高代码的可维护性和可扩展性。 以前的模式。 遇到…

kettle 9.4和Pentoho 9.4下载及安装方法简介

kettle 9.4和Pentoho 9.4下载及安装方法简介 下载地址: https://sourceforge.net/projects/pentaho/files/ 下载步骤: #------------- 一、点击选项卡:summary/ 二、点击第一行链接 https://www.hitachivantara.com/en-us/products/pentaho…

姿态旋转的哥氏定理以及速度微分的推导

姿态旋转中涉及到坐标系的转换,在有相对旋转的两个坐标系中观察一个向量的变化,用到了哥氏定理。 例如在i系中观察e系下的运动,则 哥氏定理的公式 wie是e相对于i的角运动 注意符号i在前e在后。 wie是e相对于i的角运动 注意符号i在前e在…

WRF模型教程(ububtu系统)-WPS(WRF Pre-Processing System)概述

一、WPS简介 WRF 预处理系统 (WRF Pre-Processing System,WPS) ,集成了基于Fortran和C编写的程序,这些程序主要用于处理输入到real.exe的数据。WPS主要有三个程序和一些辅助程序。 二、各程序介绍 主要的程序为geogrid.exe、ungrib.exe、met…

一篇文章带你了解低保真与高保真原型图区别

在原型设计中,低保真原型和高保真原型的区别主要体现在细节和功能上。那么我们在设计原型的时候是用低保真原型还是高保真原型呢?两者最好的使用场景是什么?对此,即时设计做了相应的分析。让我们来看看! 1、低保真原型…

[蓝桥杯]-最大的通过数-CPP-二分查找、前缀和

目录 一、题目描述: 二、整体思路: 三、代码: 一、题目描述: 二、整体思路: 首先要知道不是他们同时选择序号一样的关卡通关,而是两人同时进行两个入口闯关。就是说两条通道存在相同关卡编号的的关卡被通…

3冠达成!原知因制药荣获2024年度JMR消费者评选三大No.1

近日,日本调查机构(JMR)公布了2024年度公众对品牌形象的调查结果,除了人们熟知的资生堂、CPB、POLA、小林制药、DHC等品牌依然获得不错的口碑外,日本高端健康品牌原知因制药凭借优秀的产品实力及良好的社会口碑&#x…

Python新手必学:输入输出全攻略

初学Python编程时,其中一个最基础、也是最重要的部分就是如何处理输入和输出。无论是简单的用户输入,还是程序输出结果,都很重要。现在,我们将一起学习Python输入输出的各种技巧和方法,让你在编写代码时得心应手。 目…

HTML5:七天学会基础动画网页11

CSS3动画 CSS3过渡的基本用法: CSS3过渡是元素从一种样式逐渐改变为另一种样式的效果。 过渡属性-transition 值与说明 transition-property 必需,指定CSS属性的name,transition效果即哪个属性发生过渡。 transition-duration 必需,t…

YOLOv9改进策略:注意力机制 |通道注意力和空间注意力CBAM | GAM超越CBAM,不计成本提高精度

💡💡💡本文改进内容:通道注意力和空间注意力CBAM,全新注意力GAM:超越CBAM,不计成本提高精度 改进结构图如下: YOLOv9魔术师专栏 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️…

LeetCode2115. 从给定原材料中找到所有可以做出的菜

拓扑排序 题面 题目链接:2115. 从给定原材料中找到所有可以做出的菜 - 力扣(LeetCode) 你有 n 道不同菜的信息。给你一个字符串数组 recipes 和一个二维字符串数组 ingredients 。第 i 道菜的名字为 recipes[i] ,如果你有它 所有…

openstack(T)启动实例状态为错误,如何解决

---基本服务得是正常的 ---1.在web界面看是什么错误 点击你的实例名称,在概况里面去查看 当时我的error :编码500 消息 No valid host was found. 错误原因 1:资源不足 2:未开启虚拟机cpu虚拟化 解决: 1.资源不…

Element-Plus: Select组件实现滚动分页加载

Element-Plus的select组件并没有自带滚动分页加载的功能,其虽然提供了自定义下拉菜单的底部的方式可以自定义上一页及下一页操作按钮的方式进行分页加载切换: 但如果不想通过点击分页按钮的方式,利用滚动触底进行下一页加载的话,…

Arrays对象数组排序 --java学习笔记

假设有四个学生对象: name:"小明",height:168.8,age:22 name:"小红",height:178.5,age:20 name:"小智",height:160.1,age:21 name:"小白",height:230.6,age:22 现在需要按身高对他们进行排序 对象进行排序,默…

19.ADC模数转换器知识点+AD单通道AD多通道应用程序示例

0. 江协科技/江科大-STM32标准库开发-各章节详细笔记-查阅传送门_江协科技stm32笔记-CSDN博客文章浏览阅读2.9k次,点赞44次,收藏128次。江协科技/江科大-STM32标准库开发-各章节详细笔记-传送门至各个章节笔记。基本上课程讲的每句都详细记录&#xff0c…

修改 MySQL update_time 默认值的坑

由于按规范需要对 update_time 字段需要对它做默认值的设置 现在有一个原始的表是这样的 CREATE TABLE test_up (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键id,update_time datetime default null COMMENT 操作时间,PRIMARY KEY (id) ) ENGINEInnoDB DEF…

xss——pdfxss,mxss,uxss,flashxss

uxss(但是需要很低的版本才可以使用)(但是csdn也会有过滤) 浏览器插件漏洞 搜索这个跨站语句,然后用翻译功能,它会触发跨站、 测试的时候可以去不断的测试它的所有功能,看也没有触发跨站 flas…

C语言笔记:控制流

ACM金牌带你零基础直达C语言精通-课程资料 本笔记属于船说系列课程之一,课程链接:ACM金牌带你零基础直达C语言精通 你也可以选择购买『船说系列课程-年度会员』产品『船票』,畅享一年内无限制学习已上线的所有船说系列课程:船票购…

1335:【例2-4】连通块

【算法分析】 设数组vis,vis[i][j]表示(i,j)位置已经访问过。遍历地图中的每个位置,尝试从每个位置开始进行搜索。如果该位置不是0且没有访问过,那么访问该位置,并尝试从其上下左右四个位置开始搜索。在看一个新的位置时&#xff…

网络机顶盒什么牌子好?小编盘点零差评网络机顶盒排行榜

在挑选网络机顶盒的时候我们往往会参考销量和口碑,小编花费一个月时间整理了热门网络机顶盒的用户评价情况,整理了这份口碑最好的网络机顶盒排行榜,跟着我一起看看网络机顶盒什么牌子好吧。 NO.1、泰捷WEBOX WE40S网络机顶盒 在混迹网络机顶…