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

0x1.前言

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

0x2.背景

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

图片

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

图片

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

图片

后续利用我先不讲,我们先好好讲一下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在本地虚拟机上搭建:

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

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

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

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

图片

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

图片

16

图片

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

然后我们来进行测试:

debug敏感泄露

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的名称

图片

查看series

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

0x6.总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】Redis常用命令-getsetkeysexistsexpirettltype

文章目录 读取文档注意事项set命令get命令全局/通用命令KEYSEXISTSDELEXPIRETTLTYPE 读取文档注意事项 官方文档链接:https://redis.io/ 注意:redis的命令不区分大小写 在redis文档给出的语法格式说明: []:相当于一个独立的单元&a…

golang 发起 http 请求,获取访问域名的 ip 地址(net, httptrace)

前言 今天碰到了个需求,我要知道程序对外访问的 http 请求域名的 ip 地址。 直接查看 golang 的 net/http 包,发现 Response 中并没有我想要的 ip 信息。 考虑到在 OSI 七层模型中,ip 是网络层协议,而 http 是应用层协议。去翻…

计算机视觉的监督学习与无监督学习

什么是监督学习? 监督学习是一种机器学习算法,它从一组已标记的 合成数据生成器中生成的训练数据中学习。这意味着数据科学家已经用正确的标签(例如,“猫”或“狗”)标记了训练集中的每个数据点,以便算法可…

设计模式总结

1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。 在软件设计中可能会遇到很多类似的问题,在每次遇到类似问题时我们不必全都新想…

MYSQL 多表联查详解

目录 一、一个案例引发的多表连接 二、笛卡尔积的错误和与正确的多表查询 2.1、笛卡尔积错误展示 2.2、笛卡尔积解决方法 2.3、练习 三、多表查询分类 3.1、等值连接 vs 非等值连接 3.2、自连接 vs 非自连接 3.3、内连接 vs 外连接 内连接(inner join&…

第2篇 机器学习基础 —(4)k-means聚类算法

前言:Hello大家好,我是小哥谈。聚类算法是一种无监督学习方法,它将数据集中的对象分成若干个组或者簇,使得同一组内的对象相似度较高,不同组之间的对象相似度较低。聚类算法可以用于数据挖掘、图像分割、文本分类等领域…

记录--这个前端Api管理方案会更好?

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 简介 大家好,前端小白一枚,目前接触后台管理系统比较多,经常遇到不同对象的增删改查的接口,如何对Api进行一个有比较好的管理是个问题。在学习偏函数的时…

C#中使用LINQtoSQL管理SQL数据库之添加、修改和删除

目录 一、添加数据 二、修改数据 三、删除数据 四、添加、修改和删除的源码 五、生成效果 1.VS和SSMS原始记录 2.删除ID2和5的记录 3.添加记录ID2、5和8 4.修改ID3和ID4的记录 用LINQtoSQL管理SQL Server数据库时,主要有添加、修改和删除3种操作。 项目中创…

app开发之后需要做什么

在完成app的开发之后,还有一系列的工作需要进行,以确保app的顺利上线和用户的良好体验。下面将从原理和详细介绍两个方面来介绍app开发之后需要做的工作。 一、原理介绍 1. 测试与调试:在app开发完成后,需要进行全面的测试与调试…

[论文笔记]RetroMAE

引言 RetroMAE,中文题目为 通过掩码自编码器预训练面向检索的语言模型。 尽管现在已经在许多重要的自然语言处理任务上进行了预训练,但对于密集检索来说,仍然需要探索有效的预训练策略。 本篇工作,作者提出RetroMAE,一个新的基于掩码自编码器(Masked Auto-Encoder,MAE)…

十种排序算法(1) - 准备测试函数和工具

1.准备工作 我们先写一堆工具&#xff0c;后续要用&#xff0c;不然这些写在代码里可读性巨差 #pragma once #include<stdio.h>//为C语言定义bool类型 typedef int bool; #define false 0 #define true 1//用于交互a和b inline void swap(int* a, int* b) {/*int c *a…

AutoDL 云/本地部署 百川2、GLM2

AutoDL 云上部署 百川2、GLM2 AutoDL 云上部署 百川2、GLM2配置环境体验常见问题huggingface访问不了&#xff0c;使用学术资源加速大文件上传&#xff0c;百度、阿里网盘都可CUDA 空间不足系统盘空间不足省钱绝招软件源 本地部署 百川2、GLM2根据显存大小选模型拉取docker镜像…

MySQL-----事务

事务的概念 事务是一种机制&#xff0c;一个操作序列。包含了一组数据库的操作命令&#xff0c;所有的命令都是一个整体&#xff0c;向系统提交或者撤销的操作&#xff0c;要么都执行&#xff0c;要么都不执行。 是一个不可分割的单位 事务的ACID特点 ACID&#xff0c;是指在可…

【Algorithm】最容易理解的蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)算法

看了不少解读和笔记&#xff0c;本文把最容易理解的解读做个总结。 1. 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method)&#xff0c;是一种“统计模拟方法”。20世纪40年代&#xff0c;为建造核武器&#xff0c;冯.诺伊曼 等人发明了该算法。因赌城蒙特卡洛而得名&#xff0c…

R语言用jsonlite库写的一个图片爬虫

以下是一个使用R语言和jsonlite库下载图片的程序。首先&#xff0c;我们需要导入jsonlite库和options()函数&#xff0c;然后将代理服务器的主机名和端口号设置为"duoip"和"8000"。接着&#xff0c;我们将URL设置为"https://yun.baidu.com/"&…

LeetCode 143. 重排链表(双指针、快慢指针)

题目&#xff1a; 链接&#xff1a;LeetCode 143. 重排链表 难度&#xff1a;中等 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不…

Redis入门指南学习笔记(2):常用数据类型解析

一.前言 本文主要介绍Redis中包含几种主要数据类型&#xff1a;字符串类型、哈希类型、列表类型、集合类型和有序集合类型。 二.字符串类型 字符串类型是Redis中最基本的数据类型&#xff0c;它是其他4种数据类型的基础&#xff0c;其他数据类型与字符串类型的差别从某种角度…

欧科云链研究院:如何降低Web3风险,提升虚拟资产创新的安全合规

在香港Web3.0行业&#xff0c;技术推动了虚拟资产投资市场的快速增长&#xff0c;但另一方面&#xff0c;JPEX诈骗案等行业风险事件也接连发生&#xff0c;为Web3行业发展提供了重要警示。在近期的香港立法会施政报告答问会上&#xff0c;行政长官李家超表示&#xff0c;与诈骗…

自己动手实现一个深度学习算法——三、神经网络的学习

文章目录 1.从数据中学习1&#xff09;数据驱动2&#xff09;训练数据和测试数据 2.损失函数1)均方误差2)交叉熵误差3)mini-batch学习 3.数值微分1&#xff09;概念2&#xff09;数值微分实现 4.梯度1&#xff09;实现2&#xff09;梯度法3&#xff09;梯度法实现4&#xff09;…

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

从零开始的目标检测和关键点检测&#xff08;二&#xff09;&#xff1a;训练一个Glue的RTMDet模型 一、config文件解读二、开始训练三、数据集分析四、ncnn部署 从零开始的目标检测和关键点检测&#xff08;一&#xff09;&#xff1a;用labelme标注数据集 从零开始的目标检测…