Drupal 7.56 e Snapd - Exploit - HTB Armageddon Writeup

Drupal é um CMS - Content Management System open source, ou seja, é um gerenciador de conteúdo construído em PHP. 

CVE-2018-7600 - Remote Code Execution

As versões do Drupal anteriores a 7.58 apresentam uma vulnerabilidade em seu código que permite a execução remota de códigos devido ao fato da aplicação não tratar de forma correta requisições em seus formulários.

Exploit-DB Publicação

O exploit 44449 foi publicado em 13/04/2018 com o script em Ruby para explorar a vulnerabilidade. Os autores do exploit são identificados como: Dreadlocked e g0tmilk

Hack The Box 

Na plataforma Hack The Box, a máquina Armageddon é vulnerável a CVE-2018-7600

Writeup 

Através do nmap foi possível identificar as portas 80-http e 22-ssh no servidor. Ao acessar o servidor na porta 80-http foi possível identificar o CMS Drupal. Em seguida, através da técnica de brute-force em diretórios, localizei o arquivo server.info com a versão do Drupal 7.56



Ao pesquisar no google foi possível identificar o exploit 44449 relacionado a CVE-2018-7600. O exploit quando executado com sucesso dá acesso a uma web shell onde é possível iniciar o reconhecimento interno do servidor atacado. 


O servidor não permite conexão externa e, portanto, a tentativa de fazer uma shell reversa falhou. Continuando o reconhecimento interno, consigo visualizar o arquivo passwd e coletar os usuários configurados no servidor. Em seguida, executo a técnica de brute-force na porta 22-ssh para identificar a senha do usuário brucetherealadmin (Sugestivo !!!)  

Usando a ferramenta hydra e a wordlist rockyou.txt a senha do usuário é descoberta. 


O passo seguinte é acessar o serviço SSH com o usuário descoberto e iniciar a busca por vulnerabilidades ou configurações incorretas com objetivo de fazer escalação de privilégio. Na figura baixo executo o comando cat /proc/version para identificar a versão da distro. 


SUDO 

O sudo é de grande importância durante o processo de reconhecimento interno no servidor atacado. Geralmente, ao conseguir uma shell, o usuário não possuí privilégio de administrador no sistema operacional, suas ações são limitadas. 

O sudo permite que determinadas ações com privilégio root possam ser executadas por um usuário "comum" do sistema e, por isso, esse recurso deve ser analisado para identificar quais as permissões atribuídas ao usuário atual.

O comando sudo -l lista as permissões para o usuário brucetherealadmin A imagem abaixo mostra que o usuário tem permissão administrativa para executar o utilitário snap


Ao pesquisar no Google, encontrei informações sobre uma vulnerabilidade nas versões do snapd anteriores a 2.37. A vulnerabilidade afeta todas as distribuições com essa versão ou anterior do snap instalado. O snapd é um gerenciador de pacotes, criado pela Canonical. No início, os pacotes snaps eram disponibilizados para o Ubuntu e, atualmente, o gerenciamento de pacotes do tipo snap também pode ser feito com a instalação do snapd em outras distribuições. 

O servidor atacado é Red Hat e a versão do snap é 2.47 e, portanto, o exploit dirty_sock não funciona de forma direta. 

No entanto, ao pesquisar um pouco mais, encontrei writeup indicando para usar apenas o payload disponível no exploit dirty_sockv2.py O payload é um script com a função de criar o usuário dirty_sock no sistema operacional. 

O servidor atacado possui o python2 instalado permitindo usar as funções print e base64 decoder e direcionando a saída da função para o arquivo xpl.snap



Atribuí permissão de execução para o arquivo criado xpl.snap e, em seguida, executei do comando sudo /usr/bin/snap install --devmode xpl.snap


Para confirmar que o payload foi executado com sucesso, basta verificar no arquivo passwd o usuário dirty_sock adicionado. 


A etapa final antes de efetivar a escalação de privilégios é logar com o usuário dirty_sock e, em seguida, executar o comando sudo -i A senha do usuário deve ser informada e...DONE !! A escalação de privilegio foi efetivada com sucesso. 


Servidor Armageddon Owned !! 

Github

No meu github disponibilizei um script simples com o payload do snap para escalação de privilégios. O script cria o arquivo .snap e atribuí permissão de execução. 


Hack The Box 



Referências: 






Comentários

Postagens mais visitadas