
Uma implementação em Rust do exploit CVE-2018-7600 que visa instalações vulneráveis do Drupal 7 (<= 7.57)
Uma implementação em Rust do exploit CVE-2018-7600 voltado para instalações vulneráveis do Drupal 7 (<= 7.57). Este CLI reproduz o seguinte fluxo de PoC: envenena um formulário renderizável em cache através do caminho user/password, extrai um form_build_id e, em seguida, aciona o payload em cache pelo endpoint file/ajax para alcançar a execução remota de código por meio da invocação de uma função PHP.
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 certos arrays renderizáveis são armazenados em cache e posteriormente renderizados. Ao injetar metadados de renderização especialmente elaborados em um endpoint que fica em cache, um atacante pode fazer com que funções PHP arbitrárias sejam executadas quando os dados em cache forem posteriormente renderizados ou solicitados.
#post_render é uma função PHP arbitrária (por exemplo, passthru).?q=user/password com os parâmetros de array renderizável elaborados, fazendo com que o Drupal armazene em cache o formulário envenenado.form_build_id, o PoC aciona o payload chamando /file/ajax/name/#value/<form_build_id> com o form_build_id no corpo do POST. Quando o Drupal renderiza o elemento em cache, o callback #post_render é executado com marcação controlada pelo atacante, permitindo a execução de comandos.Este CLI em Rust constrói os parâmetros de requisição, executa a sequência de duas etapas (envenenar e depois acionar) contra um site Drupal 7 alvo, analisa a resposta HTML para obter o form_build_id e, em seguida, aciona o endpoint file/ajax para executar a função especificada pelo atacante.
Como o cliente desabilita a verificação de certificado (para espelhar o PoC original, que usava 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 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 alvo (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 rotear as requisições.Exemplo de fluxo completo:
user/password, inserindo o callback #post_render e #markup contendo o comando.form_build_id dentro de form#user-pass.?q=file/ajax/name/#value/<form_build_id> com o form_build_id para acionar a renderização e executar o comando.Esta ferramenta é apenas para fins educacionais e de testes de penetração autorizados. Use com responsabilidade e somente em sistemas que você possui ou para os quais tem permissão explícita.