此 PoC 演示了 CVE-2023-28858 中描述的漏洞,其中 4.5.3 之前的 redis-py 在管道操作期间取消异步 Redis 命令后保持连接打开,导致响应数据被发送到不相关请求的客户端一种一对一的方式。
先决条件:
确保您具备以下条件:Python 3.7+
在 localhost:6379 上运行的 Redis 服务器
安装易受攻击的redis-py版本(4.3.5):pip install redis==4.3.5
过程
将 PoC 代码保存为poc_cve_2023_28858.py:
运行 PoC 脚本:
python poc_cve_2023_28858.py
如果存在漏洞,输出将显示预期值和接收值不匹配:
Expected 'value1', got: value2
这表明由于在管道操作期间取消异步 Redis 命令后连接保持打开状态,因此响应数据以一对一的方式发送到客户端。将 redis-py 更新到固定版本 4.3.6、4.4.3 或 4.5.3 将解决此漏洞。
项目地址:https://github.com/improbably-you/poc_cve_2023_28858