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