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实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并