Redis未授权访问漏洞复现笔记

admin 2024年4月24日06:37:44评论4 views字数 1908阅读6分21秒阅读模式

Redis 介绍

Redis 是非关系型数据库系统,没有库表列的逻辑结构,仅仅以键值对的方式存储数据。

Redis 数据库经常用于Web 应用的缓存。

Redis 可以与文件系统进行交互。

Redis 监听TCP/6379

漏洞原理

  1. Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上

  2. 如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

  3. 攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器

漏洞危害

Redis未授权访问漏洞复现笔记

漏洞影响版本

Redis 2.x,3.x,4.x,5.x

Redis未授权主要是配置不当造成的所以不管哪个版本只要配置有问题就造成危害

Redis环境安装

官网地址:https://redis.io/

下载地址:http://download.redis.io/releases/

漏洞复现

复现环境

攻击机kali(redis3.2.0,192.168.110.236)

靶机(redis3.2.11 192.168.91.119)

攻击方法

要成功的利用Redis未授权访问的漏洞需要如下几点

  1. redis服务以root账户运行

  2. redis无密码或弱密码进行认证

  3. redis监听在0.0.0.0公网上或内网中

首先可以使用Nmap的检测脚本 对 Redis进行未授权检测

nmap -A -p 6379 –script redis-info 192.168.91.119

Redis未授权访问漏洞复现笔记

连接数据库查看 info, 确定未授权访问

redis-cli -h 192.168.91.119 -p 6379

Redis未授权访问漏洞复现笔记

Linux 获取权限

SSH公钥

生成密钥在攻击机中

ssh-keygen -t rsa

Redis未授权访问漏洞复现笔记

将公钥导入key.txt文件(前后用nn换行,避免和Redis里其他缓存数据混合)

Redis未授权访问漏洞复现笔记

再把 key.txt 文件内容写入目标主机的缓冲里

Redis未授权访问漏洞复现笔记

再通过设置参数,写入指定文件

Redis未授权访问漏洞复现笔记

如上则为成功写入SSH密钥文件,攻击机可无需密码远程连接目标主机SSH

WebShell

当SSH不允许远程登录时,也可以通过写入 Web目录控制目标主机

Redis未授权访问漏洞复现笔记

Redis未授权访问漏洞复现笔记

定时任务

也可以通过写入定时任务反弹Shell,获取权限

攻击机监听端口
nc -lvvp 9999

Redis未授权访问漏洞复现笔记

Redis未授权访问漏洞复现笔记

Redis未授权访问漏洞复现笔记

Windows 获取权限

Webshell

攻击成功的前提为:需要准确的知道Web目录位置
可通过 phpinfo 或者 网站报错得知

Redis未授权访问漏洞复现笔记

这里测试的目标路径为:/var/www/html

Redis未授权访问漏洞复现笔记

成功写入木马,并可连接控制服务器

Redis未授权访问漏洞复现笔记

安全加固

  • 升级redis到最新版本(至少在5.x版本以上)

  • 将redis默认端口号6379改为其他端口号

  • 修改redis.conf文件,设置认证密码

  • 利用软硬件防火墙对访问redis服务器的流量进行过滤

  • 开启保护模式 --protected-mode yes

  • 禁止root权限启动redis服务

#创建redis用户组groupadd redis#创建redis用户,并且不可登录useradd -g redis -s /sbin/nologin -M redis#配置文件和目录的用户和用户组chown -R redis:redis /data/redis/chown -R redis:redis /usr/local/redis/chown -R redis:redis /data/logs/redis/#重启redis

修改redis.conf文件重命名危险命令,空表示禁用

rename-command FLUSHALL "" rename-command CONFIG "" rename-command EVAL ""

保证authorized_keys文件的安全

authorized_keys的权限设置为对拥有者只读,其他用户没有任何权限

chmod 400 ~/.ssh/authorized_keys

为保证authorized_keys的权限不会被改掉,还需要设置该文件的immutable位权限

chattr +i ~/.ssh/authorized_keys

然而,用户还可以重命名/.ssh,然后新建新的/.ssh目录和authorized_keys文件。要避免这种情况,需要设置~./ssh的 immutable位权限

chattr +i ~/.ssh

如果需要添加新的公钥,需要移除authorized_keys的 immutable 位权限。然后,添加好新的公钥之后,按照上述步骤重 新加上immutable位权限 注:chattr设置文件的隐藏属性(+i 让一个文件“不能被删除、改名,设置连接也无法写入或添加据)。

原文始发于微信公众号(网络安全学习爱好者):Redis未授权访问漏洞复现笔记

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月24日06:37:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Redis未授权访问漏洞复现笔记https://cn-sec.com/archives/2083927.html

发表评论

匿名网友 填写信息