Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2015-3306-lab — Lab Docker riproducibile + exploit raw-socket per CVE-2015-3306 (copia arbitraria di file pre-autenticazione in ProFTPD mod_copy) — un esercizio di apprendimento sul patch-diffing | Kitploit
Strumenti/GitHubGitHub/diegslva/cve-2015-3306-lab
Framework di ExploitAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubdiegslva/cve-2015-3306-lab

cve-2015-3306-lab

Lab Docker riproducibile + exploit raw-socket per CVE-2015-3306 (copia arbitraria di file pre-autenticazione in ProFTPD mod_copy) — un esercizio di apprendimento sul patch-diffing

Vedi Repository
8h 43m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2015-3306 — ProFTPD mod_copy Copia Arbitraria di File Pre-Auth

Un laboratorio completamente riproducibile e un exploit scritto a mano per CVE-2015-3306 — realizzato come esercizio di apprendimento nella ricerca di vulnerabilità: analisi dei patch, attivazione manuale e sviluppo di exploit tramite socket raw.

Il bug

Il modulo mod_copy di ProFTPD implementa la coppia di comandi SITE CPFR / SITE CPTO, che copia file lato server senza trasferire dati al client.

Nella versione 1.3.5, nessuno dei due handler verificava se la sessione fosse autenticata. Il modulo semplicemente assumeva "nessuno invierà comandi SITE prima del login" — un'assunzione errata che è diventata una CVE. Qualsiasi client non autenticato poteva copiare qualsiasi file leggibile dal processo server in qualsiasi posizione scrivibile da esso.

La patch

La correzione (commit 212d54271f, rilasciata nella 1.3.5a) fa due cose:

  1. Aggiunge un controllo di autenticazione all'inizio di copy_cpfr e :
copy_cpto
root@kitploit:~
authenticated = get_param_ptr(cmd->server->conf, "authenticated", FALSE);
if (authenticated == NULL || *authenticated == FALSE) {
  pr_response_add_err(R_530, _("Please login with USER and PASS"));
  errno = EPERM;
  return PR_ERROR(cmd);
}
  • Aggiunge una direttiva CopyEngine on|off — in precedenza il modulo non poteva nemmeno essere disabilitato nelle build che lo includevano.
  • Il diff unificato completo è in patch.diff. Leggere le patch è l'abilità: la correzione ti dice dove si trovava la ferita.

    Il laboratorio

    Il Dockerfile compila ProFTPD 1.3.5 (l'ultima release vulnerabile) dal tarball sorgente ufficiale con mod_copy abilitato:

    root@kitploit:~
    docker build -t proftpd-135 .
    docker run -d --name lab135 -p 127.0.0.1:2121:21 -p 127.0.0.1:30000-30010:30000-30010 proftpd-135
    docker exec lab135 chmod 777 /home/ftp
    

    PassivePorts in proftpd.conf fissa il canale dati — l'architettura a due canali di FTP (controllo + dati dinamici) è il motivo per cui i mapping container ingenui falliscono: la porta di controllo funziona, quella dati no.

    L'exploit

    exploit.py usa socket raw — niente ftplib, perché le librerie nascondono il protocollo, e nascondere il protocollo è esattamente ciò contro cui stiamo combattendo:

    root@kitploit:~
    SITE CPFR /etc/segredo.txt   -> 350  (nessun USER/PASS inviato: questo È il bug)
    SITE CPTO /home/ftp/...      -> 250  (copia arbitraria eseguita)
    USER ftp / PASS ...          -> 230  (il login è solo il percorso di esfiltrazione)
    PASV / RETR                  -> 150 -> 226  (flag catturato)
    DELE                         -> 250  (pulizia: nessun IOC lasciato indietro)
    

    Lezioni apprese (il vero scopo di questo repo)

    • Il banner != verità. Debian applica backport delle correzioni senza aggiornare le versioni; gli honeypot (Dionaea et al.) imitano deliberatamente banner vulnerabili.
    • Bug sfruttabile != exploit automatico. L'ambiente (permessi del filesystem, AllowOverwrite, mapping delle porte) determina l'impatto finale.
    • L'idempotenza conta. Un buon exploit viene eseguito due volte di fila — nomi di destinazione univoci (time.time_ns(), non time.time()), e nessuna dipendenza da stato residuo.
    • Le risposte FTP hanno una macchina a stati. 1xx è preliminare (aspettati altro), 2xx completato, 3xx intermedio, 5xx errore. RETR risponde due volte: 150, poi 226. Scarica entrambe prima del comando successivo.
    • I log del target sono la verità di base. Quando il client dice "550" e non sai perché, il log di debug del server (-d10) ti dice esattamente quale controllo è scattato.
    • La pulizia è OPSEC. Un exploit che lascia file dietro di sé è un exploit che lascia prove dietro di sé.

    Riferimenti

    • Commit della correzione: https://github.com/proftpd/proftpd/commit/212d54271f
    • CVE: https://nvd.nist.gov/vuln/detail/CVE-2015-3306

    Disclaimer

    Solo per scopi educativi e uso in laboratorio autorizzato. Eseguirlo contro sistemi che non possiedi o per cui non hai il permesso scritto di testare è illegale.

    Scarica lo strumento