Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2015-3306-lab — Lab Docker reproductible + exploit raw-socket pour CVE-2015-3306 (ProFTPD mod_copy copie arbitraire de fichiers avant authentification) — un exercice d'apprentissage du patch-diffing | Kitploit
Outils/GitHubGitHub/diegslva/cve-2015-3306-lab
Frameworks d'ExploitationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationLabs et Pratique
GitHubdiegslva/cve-2015-3306-lab

cve-2015-3306-lab

Lab Docker reproductible + exploit raw-socket pour CVE-2015-3306 (ProFTPD mod_copy copie arbitraire de fichiers avant authentification) — un exercice d'apprentissage du patch-diffing

Voir le dépôt
il y a 8h 41mPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2015-3306 — ProFTPD mod_copy Copie Arbitraire de Fichiers Pré-Authentification

Un laboratoire entièrement reproductible et un exploit écrit à la main pour CVE-2015-3306 — conçu comme un exercice d'apprentissage en recherche de vulnérabilités : analyse de correctifs, déclenchement manuel et développement d'exploit par socket brute.

Le bug

Le module mod_copy de ProFTPD implémente la paire de commandes SITE CPFR / SITE CPTO, qui copie des fichiers côté serveur sans transférer de données au client.

Dans la version 1.3.5, aucun des deux gestionnaires ne vérifiait si la session était authentifiée. Le module supposait simplement « personne n'enverra de commandes SITE avant de se connecter » — une hypothèse erronée qui est devenue une CVE. Tout client non authentifié pouvait copier n'importe quel fichier lisible par le processus serveur vers n'importe quel emplacement accessible en écriture par celui-ci.

Le correctif

Le correctif (commit 212d54271f, publié dans la version 1.3.5a) fait deux choses :

  1. Ajoute une barrière d'authentification en haut de copy_cpfr et 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);
    }
    
  2. Ajoute une directive CopyEngine on|off — auparavant, le module ne pouvait même pas être désactivé dans les builds qui l'incluaient.

Le diff unifié complet se trouve dans patch.diff. Lire les correctifs est la compétence clé : le correctif vous indique où se trouvait la blessure.

Le laboratoire

Le Dockerfile compile ProFTPD 1.3.5 (la dernière version vulnérable) à partir de l'archive source officielle avec mod_copy activé :

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 dans proftpd.conf épingle le canal de données — l'architecture à deux canaux de FTP (contrôle + données dynamiques) est la raison pour laquelle les mappages de conteneurs naïfs échouent : le port de contrôle fonctionne, le port de données non.

L'exploit

exploit.py utilise des sockets brutes — pas de ftplib, car les bibliothèques masquent le protocole, et masquer le protocole est exactement ce contre quoi nous luttons :

root@kitploit:~
SITE CPFR /etc/segredo.txt   -> 350  (aucun USER/PASS envoyé : c'est LE bug)
SITE CPTO /home/ftp/...      -> 250  (copie arbitraire effectuée)
USER ftp / PASS ...          -> 230  (la connexion n'est que le chemin d'exfiltration)
PASV / RETR                  -> 150 -> 226  (drapeau capturé)
DELE                         -> 250  (nettoyage : aucun IOC laissé derrière)

Leçons apprises (le véritable objectif de ce dépôt)

  • Le bannière != la vérité. Debian rétroporte des correctifs sans incrémenter les versions ; les honeypots (Dionaea et al.) imitent délibérément les bannières vulnérables.
  • Bug exploitable != exploit automatique. L'environnement (permissions du système de fichiers, AllowOverwrite, mappages de ports) détermine l'impact final.
  • L'idempotence compte. Un bon exploit s'exécute deux fois de suite — des noms de destination uniques (time.time_ns(), pas time.time()), et aucune dépendance à un état résiduel.
  • Les réponses FTP ont une machine à états. 1xx est préliminaire (attendez-en plus), 2xx complète, 3xx intermédiaire, 5xx erreur. RETR répond deux fois : 150, puis 226. Videz les deux avant la commande suivante.
  • Les journaux de la cible sont la vérité terrain. Quand le client dit « 550 » et que vous ne savez pas pourquoi, le journal de débogage du serveur (-d10) vous indique exactement quelle vérification a été déclenchée.
  • Le nettoyage est de l'OPSEC. Un exploit qui laisse des fichiers derrière lui est un exploit qui laisse des preuves derrière lui.

Références

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

Avertissement

Pour l'éducation et une utilisation en laboratoire autorisée uniquement. Exécuter cela contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite de test est illégal.

Télécharger l’outil