Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-49844 — # CVE-2025-49844(RediShell)扫描器与教学指南 针对 Redis Lua 脚本 use-after-free 漏洞(CVE-2025-49844,即 RediShell)的扫描器与教学指南。用于检查 Redis 服务器是否存在暴露风险,提供修复步骤,并解释漏洞利用机制以供学习参考。 | Kitploit
工具/GitHubGitHub/angelusrivera/cve-2025-49844
漏洞扫描器漏洞分析漏洞利用渗透测试学习与教育红队数据库安全
GitHubangelusrivera/cve-2025-49844

CVE-2025-49844

# CVE-2025-49844(RediShell)扫描器与教学指南 针对 Redis Lua 脚本 use-after-free 漏洞(CVE-2025-49844,即 RediShell)的扫描器与教学指南。用于检查 Redis 服务器是否存在暴露风险,提供修复步骤,并解释漏洞利用机制以供学习参考。

查看仓库
111011个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

🚨 CVE-2025-49844 (RediShell) - 完整指南

⚠️ 仅供学习,切勿用于黑客攻击 ;) ⚠️

嘿!这是我做的一个简单工具,用来帮助人们检查他们的 Redis 服务器是否存在此漏洞。它并非用于实际攻击——仅用于学习和保护你自己的东西。

这是怎么回事?

好的,亲爱的朋友们,这是 2025 年最有趣的重大失误之一,CVE-2025-49844。本质上,如果有人能在你的 Redis 服务器上运行 Lua 脚本,他们就能访问内存。

重要信息

  • 严重程度:极其严重(9.9/10)
  • 受影响对象:任何使用 Redis 8.2.1 或更早版本的用户
  • 后果:代码执行
  • 攻击方式:通过 Lua 脚本(Redis 用它来做各种高级数据库操作)

让我们开始吧!

第一步:构建这个工具

root@kitploit:~
# 首先,准备好 Go 环境
cd scanner
go mod tidy

# 然后构建扫描器
go build -o rscan redis-scanner.go

第二步:检查你的服务器

root@kitploit:~
# 检查单台服务器
./rscan -host your-server.com -port 6379

# 使用密码检查(如果有的话)
./rscan -host your-server.com -port 6379 -auth yourpassword

# 同时检查多台服务器
./rscan -host server1.com,server2.com,server3.com

# 或者从文件读取服务器列表
./rscan -file hosts.txt

第三步:修复问题

root@kitploit:~
# 关闭 Lua 脚本功能(这能阻止攻击)
redis-cli ACL SETUSER default -@scripting

# 或者直接将 Redis 更新到最新版本

结果是什么意思?

  • 🚨 危险! - 你的 Redis 存在漏洞(旧版本 + Lua 脚本可用)
  • 🛡️ 良好! - 你的 Redis 已受保护(Lua 已禁用或版本较新)
  • ✅ 很好! - 你的 Redis 是安全的(8.2.2 或更新版本)
  • ❌ 糟糕! - 无法连接或出现错误

这个内存漏洞是如何运作的

问题所在

这就是所谓的"释放后使用"(use-after-free)漏洞。本质上,Redis 的内存管理系统有时会对自己已经清理过的内存产生混淆。

正常情况应该是:

  1. 📝 Redis 在内存中创建一些数据
  2. 🔍 使用这些数据做某些事情
  3. 🗑️ 使用完毕后清理内存
  4. ✅ 一切安全无恙

实际情况(漏洞):

  1. 📝 Redis 在内存中创建一些数据
  2. 🔍 使用这些数据做某些事情
  3. 🗑️ 清理内存
  4. 🔍 再次尝试使用这些数据(但数据已经没了!)
  5. 💥 一切崩溃,然后被利用来搞事情 ;)

黑客如何利用这一点

  • 攻击目标:Redis 的 Lua 脚本系统
  • 使用的命令:EVAL 和 EVALSHA(用于运行 Lua 脚本)
  • 攻击目的:覆盖内存并运行任意代码

如何修复

立即执行(前 24 小时内)

  1. 找出你所有的 Redis 服务器(可能比你想象的要多)
  2. 检查它们的版本(任何 8.2.1 或更早的版本都有问题,你需要更新!)
  3. 关闭 Lua 脚本(这能立即阻止攻击)
  4. 规划升级方案(这才是真正的修复)

快速修复(立即阻止攻击!)

root@kitploit:~
# 关闭 Lua 脚本(这能阻止攻击)
redis-cli ACL SETUSER default -@scripting

# 或者编辑你的 redis.conf 文件并添加这一行:
disable-commands eval evalsha

# 然后重启 Redis
sudo systemctl restart redis

锁定你的网络

root@kitploit:~
# 只允许特定 IP 连接 Redis
iptables -A INPUT -p tcp --dport 6379 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP

# 让 Redis 只监听特定的网络接口
bind 127.0.0.1 10.0.0.100

设置合适的密码

root@kitploit:~
# 设置强密码
redis-cli CONFIG SET requirepass "fuckredis1234ilovehacking!"

# 创建权限受限的用户
redis-cli ACL SETUSER appuser on >password +@read +@write -@scripting
redis-cli ACL SETUSER readonly on >password +@read -@scripting

更新 Redis(真正的修复)

root@kitploit:~
# 先备份数据(始终如此!)
sudo cp -r /var/lib/redis /var/lib/redis.backup.$(date +%Y%m%d)

# 更新到已修复的版本
# 在 Ubuntu/Debian 上:
sudo apt update && sudo apt install redis-server=8.2.2*

# 在 CentOS/RHEL 上:
sudo yum update redis

# 确认更新成功
redis-server --version

测试你的修复是否有效

确保脚本已被阻止

root@kitploit:~
# 如果修复生效,以下命令应该失败
redis-cli -a "YourPassword" EVAL "return 'test'" 0
# 应该显示:(error) ERR unknown command 'EVAL'

检查你的网络安全

root@kitploit:~
# 查看 Redis 是否可从网络访问
nmap -p 6379 your-redis-server

# 测试是否需要密码
redis-cli -h your-redis-server -p 6379 ping
# 应该要求输入密码

如何发现这种攻击

网络中的迹象

  • Lua 脚本使用频率异常增加
  • 有人发送非常大或复杂的脚本
  • 大量脚本以极快的速度运行
  • 明显可疑的脚本

服务器上的迹象

  • Redis 频繁崩溃或重启
  • 内存使用量忽高忽低
  • Redis 建立异常的网络连接
  • 访问了本不该访问的文件

检查你的日志

root@kitploit:~
# 查找异常的 Lua 脚本活动
grep -i "eval\|evalsha" /var/log/redis/redis.log

# 检查失败的登录尝试
grep -i "auth" /var/log/redis/redis.log

# 查找脚本错误
grep -i "script" /var/log/redis/redis.log

这个漏洞利用难度有多大?

相当复杂(如果你不了解内部机制的话)

  • 你需要理解 Redis 的内部工作原理
  • 内存技巧:你必须干扰 Redis 的内存管理方式
  • Lua 技能:你需要擅长编写 Lua 脚本
  • 完美时机:你必须在精确的时刻触发漏洞

真实利用的样子

  1. 创建异常的内存模式:编写 Lua 脚本让 Redis 以特定方式排列内存
  2. 欺骗清理过程:让 Redis 在错误的时间清理内存
  3. 破坏内存:让 Redis 使用已被删除的内存
  4. 运行你的代码:利用被破坏的内存执行任意操作

这到底有多严重?

被攻击后会怎样

  • 完全控制:黑客可以在你的服务器上运行任何东西
  • 所有数据:他们可以看到你 Redis 数据库中的一切
  • 横向扩散:他们可能利用你的服务器攻击其他系统
  • 隐藏持久:即使你认为已修复,他们仍能保持访问权限

这对你的业务意味着什么

  • 数据泄露:你所有的敏感信息都可能被盗
  • 一切崩溃:你的 Redis 服务可能停止工作
  • 法律麻烦:你可能因未保护数据而被罚款
  • 信任崩塌:客户发现后可能会流失

让我们深入技术细节

Redis 的哪些部分存在漏洞

  • Lua 脚本引擎(eval 和 evalsha 命令)
  • Redis 的内存管理方式
  • 垃圾回收系统(清理未使用的内存)

内存是如何被破坏的

漏洞发生在以下情况:

  • 你在 Lua 中创建特定模式的对象
  • 你干扰 Redis 对内存引用的计数方式
  • 你迫使 Redis 在错误的时间清理内存
  • 你利用 Redis 管理内存的时机

受影响的版本

  • Redis 8.2.1 及更早版本
  • 任何启用了 Lua 脚本的版本
  • 这个漏洞已经存在了大约 13 年(天哪!)

利用代码长什么样(仅供学习)

基本结构(这实际上不会生效)

root@kitploit:~
-- 这只是为了展示结构
local function create_memory_pattern()
    -- 创建干扰 Redis 内存清理的对象
    local objects = {}
    for i = 1, 1000 do
        objects[i] = {data = "pattern_" .. i}
    end
    return objects
end

local function trigger_gc()
    -- 迫使 Redis 在错误的时间清理内存
    collectgarbage("collect")
    -- 内存漏洞就发生在这里
end

-- 主要攻击结构
local objects = create_memory_pattern()
-- 干扰内存引用
-- 强制垃圾回收
-- 利用被破坏的内存运行代码

如何保护自己

锁定你的网络

  • 设置防火墙规则
  • 不要让 Redis 暴露在整个互联网上
  • 监控你的网络流量
  • 开启日志记录

控制访问权限

  • 使用强密码
  • 设置用户权限(ACL)
  • 只给人们他们需要的访问权限
  • 定期检查谁有访问权限

警惕异常情况

  • 查看你的日志
  • 监控 Redis 的性能表现
  • 留意异常行为
  • 为出问题时制定应对计划

想安全地测试一下?

如果你想在不破坏任何真实系统的情况下看看这是如何运作的,可以使用 Docker:

root@kitploit:~
# 启动一个测试用 Redis(这个是有漏洞的)
docker run -d --name redis-test -p 6379:6379 redis:6.0

# 测试它
cd scanner
./rscan -host localhost -port 6379

# 停止有漏洞的版本,启动一个已修复的版本
docker stop redis-test
docker run -d --name redis-fixed -p 6379:6379 redis:6.0 redis-server --rename-command EVAL "" --rename-command EVALSHA ""
./rscan -host localhost -port 6379

# 完成后清理
docker stop redis-fixed && docker rm redis-fixed

高级功能(如果你需要)

所有选项

root@kitploit:~
cd scanner
./rscan --help

扫描多台服务器

创建一个这样的 hosts.txt 文件:

root@kitploit:~
# 把你的服务器放在这里
server1.com
server2.com:6380
192.168.1.100
redis.example.com:6379

加快扫描速度

root@kitploit:~
# 使用更多工作线程来加快扫描(如果你有很多服务器)
./rscan -host server1.com,server2.com -workers 20

你需要什么

  • Go 1.21+(用于构建扫描器)
  • redis-cli(用于连接 Redis)
  • Docker(可选,用于安全测试)

如果升级搞坏了东西

root@kitploit:~
# 回滚到你的备份
sudo systemctl stop redis
sudo rm -rf /var/lib/redis
sudo cp -r /var/lib/redis.backup.$(date +%Y%m%d) /var/lib/redis
sudo systemctl start redis

法律声明

这只是为了学习和保护你自己的东西。不要用它去攻击别人的服务器——那是违法的。别犯傻。

参考来源 !!

  • 官方 CVE 页面
  • Wiz 研究博客
  • Redis 安全文档
  • CVE 详情
下载工具