
Laboratório de exploração Drupalgeddon3 RCE com ambiente vulnerável baseado em Docker e integração com Metasploit para treinamento prático de exploração de CVE-2018-7602.
Existe uma vulnerabilidade de execução remota de código em vários subsistemas do Drupal 7.x e 8.x. Isso potencialmente permite que invasores explorem múltiplos vetores de ataque em um site Drupal, o que pode resultar no comprometimento do site. Esta vulnerabilidade está relacionada ao núcleo do Drupal - Altamente crítica - Execução Remota de Código - SA-CORE-2018-002. Tanto a SA-CORE-2018-002 quanto esta vulnerabilidade estão sendo exploradas ativamente. --- MITRE
Devido a algumas limitações de rede no Docker para Mac (https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) e Windows, o código abaixo deve ser executado em uma máquina LINUX com docker e docker-compose instalados.
Aqui temos um procedimento em duas etapas: primeiro, a máquina Drupal com uma versão vulnerável 7.57 e, segundo, a máquina atacante com um exploit modificado que nos permite demonstrar o perigo potencial da vulnerabilidade.
# Supondo que você esteja dentro do diretório CVE-2018-7602
cd vulnerable_machine
docker-compose up -d
cd ..
Aviso Certifique-se de que a porta 80 não esteja sendo usada por nenhum outro software antes de executar o comando.
Máquina atacante: Aqui, instanciaremos uma imagem Docker do Metasploit que contém um exploit personalizado (drupal_drupalgeddon3_commander) que será utilizado posteriormente. Para fazer isso, execute:
cd attacking_machine
docker-compose run --rm --service-ports -e MSF_UID=$(id -u) -e MSF_GID=$(id -g) ms
Se você tiver algum problema ao executar os comandos abaixo, envie um e-mail para [email protected] anexando o log de execução e ele terá prazer em ajudá-lo a resolver o problema.
Agora que temos o Drupal em execução, precisamos configurá-lo e criar algum conteúdo usando o Drupal. Para fazer isso, siga os próximos passos:


# Visão geral
Tentaremos usar a vulnerabilidade para executar comandos como ls ou whoami
para mostrar que é possível executar comandos remotamente.
Agora que temos a instância vulnerável do Drupal em execução no localhost. Os próximos passos são começar a usar a instância do Metasploit criada na etapa de configuração do ambiente.
No Metasploit, precisamos recarregar o banco de dados de exploits usando o comando:
reload_all
Com isso, temos acesso ao exploit necessário. Portanto, para preparar as informações necessárias para o exploit, precisaremos dos cookies de sessão de algum usuário logado no site.
Para obtê-los de forma fácil. Supondo que você ainda esteja logado. Vá para as ferramentas do desenvolvedor, olhe o armazenamento de cookies e salve-o para depois. Você deve obter algo como:
#<session_name>=<session_token>
SESS49960de5880e8c687434170f6476605b=DGHZKHWaNC51nrVQHEsTD0_PS68EeNyvGjdzk1SVmss
Um exemplo usando Google Chrome para obter o cookie:

Agora começamos a carregar o exploit com o Metasploit. Para fazer isso, execute os seguintes comandos:
use exploits/unix/webapp/drupal_drupalgeddon3_commander
show options
Como você pode ver, precisamos de alguns parâmetros. Configuramos os parâmetros assim:
set RHOSTS localhost
set DRUPAL_SESSION <session_name>=<session_token>
Depois de fazer isso, podemos executar:
exploit
Obteremos o usuário que está atualmente executando o servidor web. Neste caso, www-data. Porque o comando padrão configurado é whoami. Você também verá algumas informações extras em formato JSON que não são relevantes para nós.
Resultado final do exploit:

Fim da experimentação: Se você conseguiu executar toda a experimentação com sucesso, então é o fim. Parabéns.
Se você quiser continuar experimentando, pode alterar o valor do comando usando a instrução set. Ou modificar o script Ruby usado pelo Metasploit.