声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
No.1
漏洞简介
InfluxDB是一个使用Go语言编写的开源分布式,支持高并发的时序数据库,其使用JWT作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,JWT的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在InfluxDB中执行SQL语句。在InfluxDB中,每条数据都可以粗略看成是虚拟key=value的形式,如语句
INSERTcpu,host=serverA,region=us_westvalue=0.64
表示往数据库中插入一条指标名为cup,标签集host为serverA,region为us_west的,值是0.64的数据。具体的数据概念和含义可以参考InfluxDB官方文档。
InfluxDB提供三种操作方式:
CLIHTTP(包括API接口和Web管理界面)各语言的API库
但实际上以上操作方式其实都是在调用InfluxDB实现的API接口,API接口的两个常用操作是query(查询数据)和write(更改数据)
No.2
产生原因
InfluxDB的Web操作界面默认运行在localhost端口;HTTPAPI接口默认运行在localhost端口;如果直接将只能本机访问到的localhost改为内网或者公网IP,没有配置访问控制的口令,便可能会产生未授权访问漏洞。
No.3
漏洞发现
扫描默认的或者端口
端口HTTPAPI的X-Influxdb-Version标志头
影响版本InfluxDB1.7.6的版本。
No.4
漏洞复现
通过vulhub搭建环境InfluxDB1.6.6
docker-