近日,深信服安全团队发现开源数据库Redis爆出了一个未授权访问漏洞,第一时间进行跟踪以及分析预警。经研究发现,利用该漏洞,攻击者可以实现反弹shell进行任意代码执行。
漏洞名称:Redis未授权访问漏洞
威胁等级:严重
影响范围:Redis 2.x,3.x,4.x,5.x
漏洞类型:任意代码执行漏洞
利用难度:容易
Redis软件介绍
Redis是一款开源的(拥有BSD证书)、使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,提供多种语言的API。
Redis支持多种数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志等。Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区。
Redis从4.0版本开始加入了对外部扩展模块的支持,外部扩展模块可以实现新的Redis命令,新的Redis数据结构,基本上可以做到所有Redis内核可以做的事情。
Redis同时支持主从复制,主要是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据只能由主节点到从节点单向复制。主从复制的主要作用是实现了数据冗余、故障恢复、负载均衡、高可用基石。
截至目前为止,在全球范围内暴露在外网环境中的Redis资产多达18,620台,其中,中国地区对外开放的Redis资产数量排名第一,有5,935台。考虑到该软件为数据库,我们相信真实存在的设备数量将远远超过暴露的数值。
(统计数据仅为对互联网开放的资产,本数据来源于shodan。)
图1 Redis全球范围内情况分布
国内方面,该数据库使用主要分布在北京地区。
(统计数据仅为对互联网开放的资产,本数据来源于shodan。)
图2 Redis中国范围内情况分布
漏洞描述
由于Redis在4.0之后的版本中加入了外部模块扩展功能,使得攻击者可以通过外部模块扩展,引入恶意的.so文件,实现恶意代码执行。
如果Redis版本在4.0以下,同时redis-server以root权限启动,则攻击者可以在服务器上创建任意文件。
漏洞复现
该漏洞的复现除需要外部扩展模块功能外,还要设置主从复制功能。
具体环境配置参考github链接:
https://github.com/Ridter/redis-rce
成功执行后,将获取到目标主机的shell:
影响范围
目前受影响的Redis版本:
Redis 2.x,3.x,4.x,5.x
修复建议
1、禁止外部访问Redis服务端口;
2、禁止使用root权限启动redis服务;
3、配置安全组,限制可连接Redis服务器的IP。
深信服解决方案
该漏洞尚未公开攻击细节,深信服千里目安全实验室将持续关注此次漏洞进展,最快速度给出完整的解决方案。
参考链接
[1].https://redis.io/
[2].https://github.com/n0b0dyCN/redis-rogue-server
[3].https://github.com/RicterZ/RedisModules-ExecuteCommand
[4].https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf
时间轴
2019/7/07
WCTF2019 Final,LC/BC的成员Pavel Toporkov公开漏洞信息
2019/7/09
深信服千里目安全实验室对漏洞进行复现分析
2019/7/10
深信服千里目安全实验室发布该漏洞预警
原文始发于微信公众号(深信服千里目安全实验室):【漏洞预警】Redis未授权访问高危漏洞