Redis未授权访问漏洞的修复措施

gscq073240 2021-08-30 原文

一、漏洞情况分析

Redis是一套开源的使用ANSIC编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。Redis默认情况下会开启6379端口,在未开启认证的情况下,可导致任意用户在可以访问目标服务器的情况下未授权访问Redis,读取Redis的数据。该漏洞在较早前就已经被发现,而近期研究者给出了更为危险的利用方法。攻击者可利用Redis的相关方法,将自己的公钥写入目标服务器 /root/.ssh 文件夹的authotrized_keys文件中,进而可以直接登录目标服务器。CNVD对该漏洞的综合评级为“高危”。

二、漏洞影响范围

Redis 暴露在公网(即绑定在0.0.0.0:6379,目标IP公网可访问),并且没有开启相关认证和添加相关安全策略情况下可受影响而导致被利用。根据CNVD成员单位知道创宇公司提供的相关检测结果,存在无验证可直接利用 Redis 服务的目标全球有49099,其中中国有16477。其中已经被黑的比例分别是全球65%(3.1万),中国67.5%(1.1万)。

三、漏洞修复建议

目前,厂商尚未发布该漏洞的修复补丁。CNVD建议参考如下临时加固措施(注:CNVD成员单位绿盟科技公司提供了相关建议):

(一)网络加固
绑定127.0.0.1,redis默认是监听的127.0.0.1上,如果仅仅是本地通信,请确保监听在本地。这种方式缓解了redis的风险。在/etc/redis/redis.conf中配置如下:
bind127.0.0.1

(二)设置防火墙
如果需要其他机器访问,或者设置了slave模式,需添加相应的防火墙设置。命令如下:
iptables -A INPUT -sx.x.x.x -p tcp --dport 6379 -j ACCEPT

(三)添加认证

redis默认没有开启密码认证,打开/etc/redis/redis.conf配置文件, (requirepass 密码)可设置认证密码,保存redis.conf,重启redis(/etc/init.d/redis-serverrestart)之后,需要执行(auth 密码)。示例如下:

  1. root@kali:~# redis-cli -h192.168.10.212
  2. redis192.168.10.212:6379> keys *
  3. (error) ERR operation notpermitted
  4. redis192.168.10.212:6379> auth @nsF0cus!@#
  5. OK

(四)设置单独账户
设置一个单独的redis账户:创建一个redis账户,通过该账户启动。示例如下:
setsid sudo -u redis/usr/bin/redis-server /etc/redis/redis.conf\'

(五)重命名重要命令
由于redis没有做基本的权限分离,无管理账号和普通账号之分,导致攻击者登录后可执行任意操作,因此需要隐藏重要命令,例如:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL`。

其中在redis2.8.1和RedisRedis3.x (< 3.0.2)存在有eval沙箱逃逸漏洞,攻击者利用漏洞可执行任意lua代码。设置方法如下,还编辑redis.conf文件:

  1. rename-command CONFIG ""
  2. rename-command flushall ""
  3. rename-command flushdb ""
  4. rename-command shutdown shutdown_dvwa

上述配置将config,flushdb,flushall设置为了空,即禁用该命令,我们也可以命名为一些攻击者难以猜测,我们自己却容易记住的的名字。保存之后,执行/etc/init.d/redis-server restart 重启生效。

版权声明:本文为gscq073240原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gscq073240/articles/6501197.html

Redis未授权访问漏洞的修复措施的更多相关文章

随机推荐

  1. vue 3DES加密、解密

    3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryptio […]...

  2. 这个 Spring 循环依赖的坑,90% 以上的人都不知道

        1. 前言 这两天工作遇到了一个挺有意思的Spring循环依赖的问题,但是这个和以往遇到的循环依赖问题 […]...

  3. Android学习笔记1 android adb启动失败问题 adb server is out of date. killing… – work hard work smart

    下面是Android的学习笔记,原文地址。 我是使用adb devices出现如下红字错误, 使用第一种方法方 […]...

  4. R语言爬虫:爬取包含所有R包的名称及介绍

    第一种方法 library("rvest") page <- read_html("https://cr […]...

  5. 阿里云图床搭建,一次书写,随处分享

    其实我一开始是拒绝搭建图床的,一方面如果一旦需要更换,文章的链接地址就都得改,很麻烦,而且阿里云OSS还要钱, […]...

  6. 计算机软件资格考试网站 – cn2022

    计算机软件资格考试网站 计算机软件资格考试网站 软考在线http://www.netandnet.net/ 是 […]...

  7. 数据结构之树学习笔记

    一.树中的节点关系和一些概念 1.基本概念 树中节点数可以使用n来表示 空树:n为0的树 节点的度:指节点的子 […]...

  8. 数据结构与算法-排序(一)冒泡排序

    摘要 冒泡排序相对来说,多少都有些了解,就是多循环几轮,每一轮找出最大值放在尾部,直到数组中的元素有序为止。 […]...