Redis未授权访问漏洞详解与防护措施解析

创始人
2025-01-13 19:09:24
0 次浏览
0 评论

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

默认情况下,Redis会绑定到0.0.0.0:6379,如果不执行防火墙策略,直接暴露在公网且不配置密码认证(默认值为空),则任何用户都可以访问目标。
服务器将无法访问目标服务器被授权访问Redis并读取其数据。
攻击者可以使用Redisconfig命令进行文件写入操作,例如将SSH公钥写入目标服务器/root/.ssh文件夹中的authorized_keys文件中,然后使用相应的私钥直接SSH到/root/目标服务器的.ssh文件夹。
目标服务器。
该漏洞产生的条件包括:Redis绑定了公网IP地址、未实施安全策略、未设置密码认证。
该漏洞的危害主要体现在攻击者无需身份验证即可访问内部数据,从而导致敏感信息泄露,甚至可以运行flushall命令清除所有数据,并使用EVAL执行Lua代码或保存。
函数将后门文件写入磁盘。
在最严重的情况下,如果Redis以root身份运行,攻击者可以写入SSH公钥文件并通过SSH直接连接到受害者服务器。
根据ZoomEye检测,无需验证即可直接使用的Redis全球分布如下:全球无需验证即可直接使用Redis的前10个国家和地区。
重现漏洞的方法:下载并安装Redis测试版(Ubuntu镜像),安装后启动服务,克隆虚拟机并创建攻击机和目标机(IP地址分别为192.168.0.105和192.168.0.104)。
攻击机使用redis-cli连接目标机的redis服务。
公网开放验证服务,不启用认证。
使用redis编写webshel​​l的步骤如下:目标机器的redis连接不允许,攻击机器无需检查连接即可连接,打开web服务器,使用phpinfo或者路径错误暴露目录,以及确保有文件操作权限。
在/home/bmjoker目录中编写shell,确保使用换行符以确保文件的可执行性。
对于以root身份运行的Redis,可以利用漏洞获取root权限。
启动目标机上的Redis服务,创建SSH公钥存放目录,在攻击机上生成公钥和私钥(密码为空),连接目标机的Redis服务并写入公钥。

写入成功后验证公钥文件,攻击机使用私钥通过SSH连接Redis服务器。
使用crontab弹跳shell:攻击者的服务器监听端口,连接Redis并编写弹跳shell代码,设置计划任务目录和文件名,大约一分钟后获取shell。
要测试未经授权或弱密码条件,可以使用自动测试脚本。
解决方案包括:通过IP绑定限制访问(编辑redis.conf文件中的绑定配置)并设置密码以提供远程连接。
这具体步骤为:去掉redis.conf中对127.0.0.1的绑定注释,并指定允许访问的IP地址;更改requirepass配置中的密码。
这可以在一定程度上防止未经授权的访问,保证服务的安全运行。

Redis未授权访问漏洞(一)先导篇

Redis默认配置暴露问题在不进行安全配置的情况下,Redis将默认连接到0.0.0.0:6379此配置会将Redis服务暴露到公网,而无需添加防火墙规则。
如果不设置密码认证,任何能够登录目标服务器的用户都可以非法访问Redis并读取Redis数据。
攻击者在获得对Redis的未授权访问权限后,可以使用configure命令写入文件。
攻击者可以将自己的ssh公钥写入到目标服务器/root/.ssh文件夹下的authorized_keys文件中,然后使用对应的私钥直接登录服务器、添加计划任务、在Webshel​​l中写入等。
未经授权访问Redis是一种常见的漏洞,会导致大量云服务器被挖矿,例如在阿里云服务器上,当Redis服务配置不正确时,黑客可以攻击并下载篡改密钥的恶意挖矿程序。
Redis的常见用途和案例Redis不仅仅用于缓存,还有很多用途。
它的全称是RemoteDictionaryService(远程词典服务),由antirez于2007年创建,最初用于统计Web访问数据。
随着数据量的增长,Redis于2009年被开发为内存版本以提高性能。
Redis通过键值对以及常见的set和get操作来存储数据。
通过实例演示,设置redis.conf开启服务,通过redis客户端查看运行结果。
从设置键值对到清理数据库,直观地演示了Redis的使用。
安装并配置Redis环境安装Redis环境需要准备Centos7操作系统。
下载并解压Rediszip包,安装GCC依赖,编译安装,编辑配置文件以确保服务可以在本地机器上启动,并设置访问密码。
通过指定配置文件启动Redis,使用客户端,停止服务,配置别名。
Redis持久化机制Redis数据存储在内存中,并提供持久化机制来保证数据的可靠性。
数据通过save命令或自动启用的规则(例如每3600秒保存一次)定期保存到磁盘。
配置文件设置持久化规则以及文件存储的路径和名称。
Redis动态修改配置Redis提供了动态配置修改功能,允许通过配置修改配置,但只在当前会话中生效。
通过这种方式修改配置,保存数据并验证是否已正确保存到文件中。
热门文章
1
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

2
MySQL分区删除技巧与8.0版本新特性... mysql删除分区在MySQL中,删除分区操作主要使用“可替代”的命令与“ dr...

3
Python代码实现:如何判断三角形的三... python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...

4
深度解析:MySQL查询语句执行顺序及优... mysql查询语句执行顺序当这是由于执行SQL的过程时,了解其过程很重要。 ...

5
SQL教程:使用SUBSTRING和IN... sql取特定字符的前面几位字符selectsubstr('L-0FCLDRBCT...

6
MySQL日期差异计算方法:轻松获取日期... MySQL计算时间差两日期相减得月份mysql两时间相减得月MySQL计算时间之...

7
MySQL及SQL查询获取前10条数据方... MySql查询前10条数据sql语句是从MySQL获取前1 0个数据的SQL查询...

8
MySQL启动问题排查与解决指南 Mysql为什么启动不了如果要配置MySQL,则遇到无法启动的问题,可能是由于配...

9
DbVisualizer添加MySQL数... 如何在DbVisualizer中添加本地mysql数据库由于DbVisualiz...

10
SQL字段默认值设置全攻略:轻松实现自动... sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...