CVE-2018-7600 - Execução Remota de Código no Drupal 7
Uma implementação em Rust do Exploit CVE-2018-7600 direcionado a instalações vulneráveis do Drupal 7 (<= 7.57). Esta CLI reproduz o seguinte fluxo de PoC: ele envenena um formulário renderizável em cache por meio do caminho usuário/senha, extrai um form_build_id e, em seguida, aciona o payload em cache por meio do endpoint arquivo/Ajax para obter execução remota de código por meio de uma invocação de função PHP.
Visão Geral da Vulnerabilidade
CVE-2018-7600 é uma vulnerabilidade de execução remota de código que afeta o Drupal 7 (e o Drupal 8 em um contexto diferente). No Drupal 7, o problema decorre da sanitização insuficiente quando determinados arrays renderizáveis são armazenados em cache e posteriormente renderizados. Ao injetar metadados de renderização especialmente criados em um endpoint armazenado em cache, um invasor pode fazer com que funções PHP arbitrárias sejam executadas quando os dados em cache forem renderizados ou solicitados posteriormente.
Detalhes Técnicos
- O exploit explora o sistema de renderização e o cache do Drupal para inserir um array renderizável cujo retorno de chamada
#post_renderé uma função PHP arbitrária (por exemplo,passthru). - O fluxo de PoC normalmente envia para
?q=user/passwordcom os parâmetros do array renderizável criado, para que o Drupal armazene em cache o formulário envenenado. - Após o envenenamento e o recebimento de um
form_build_id, o PoC aciona o payload chamando/file/ajax/name/#value/<form_build_id>com oform_build_idno corpo do POST. Quando o Drupal renderiza o elemento em cache, o retorno de chamada#post_renderé executado com marcação controlada pelo invasor, permitindo a execução do comando.
Descrição
Esta construção da CLI Rust executa a sequência de duas etapas (envenenar e depois disparar) contra os parâmetros de solicitação de um site Drupal 7 alvo, analisa a resposta HTML em busca de form_build_id e, em seguida, dispara o endpoint file/ajax para executar a função especificada pelo invasor.
Como o cliente desabilita a verificação de certificado (para espelhar a PoC original que passou verify=False), a ferramenta funcionará contra alvos que usam certificados TLS autoassinados ou inválidos. Esse comportamento pode ser alterado no código-fonte se você preferir exigir certificados válidos.
Uso
Uso básico (o comando padrão é whoami, a função padrão é passthru):
cargo run -- -u http://target.com/
Execute um comando e função personalizados:
cargo run -- -u http://target.com/ -c "whoami" -f "passthru"
Use um proxy HTTP/S (formato: http://127.0.0.1:8080/):
cargo run -- -u http://target.com/ -p http://127.0.0.1:8080/
Resumo das opções da CLI:
-u,target: URL do site Drupal de destino (ex.:http://target.com/).-c,--command: Comando a ser executado no alvo (padrão:whoami).-f,--function: Função PHP a ser usada como vetor de ataque (padrão:passthru).-p,--proxy: URL de proxy opcional para roteamento de solicitações.
Exemplo de fluxo completo:
- Envenene o formulário
user/password, inserindo o callback#post_rendere#markupcontendo o comando. - Analise a resposta para encontrar
form_build_iddentro deform#user-pass. - POSTE para
?q=file/ajax/name/#value/<form_build_id>com oform_build_idpara acionar a renderização e executar o comando.
Aviso Legal
Esta ferramenta é apenas para fins educacionais e de testes de penetração autorizados. Use com responsabilidade e apenas em sistemas de sua propriedade ou para os quais tenha permissão explícita.****