
Ce dépôt contient tout le travail lié au développement du PoC pour CVE-2024-48208, et comment une simple lecture OOB(Out-of-bound) peut entraîner des évasions de jail ainsi qu'un contrôle d'accès défaillant.
Le dépôt contient tout le travail lié au développement du PoC montrant comment une simple lecture OOB (hors limites) peut entraîner des évasions de jail ainsi qu'un contrôle d'accès cassé.
La description originale de la CVE est la suivante :

La PR GitHub sur le dépôt officiel détaille comment la fonction domlsd() du fichier ls.c est vulnérable à une lecture OOB, en raison d'un incrément non vérifié du pointeur de base, ce qui peut amener le pointeur à pointer vers un tampon en dehors du tampon cmd, comme on peut le remarquer aux lignes 1053 et 1054.

En déboguant le tampon dans GDB, nous avons remarqué que la lecture OOB faisait atterrir l'utilisateur dans ce que l'on appelle le replybuf.
Après une analyse plus approfondie, nous avons découvert que le replybuf est un tampon qui est rempli par la réponse que le serveur a fournie au client. Le replybuf est défini dans le fichier ftpd.c, comme indiqué ci-dessous :

Donc, pour résumer :
base vers une partie du replybuf.replybuf contient la réponse fournie au client.Maintenant, dans la PR GitHub originale, l'auteur de la CVE n'a pas envisagé/démontré ce qui se passerait si la condition suivante dans ls.c:1055 renvoyait vrai ?

Nous avons commencé à réfléchir à cela, et il s'avère que si un attaquant peut faire en sorte que chdir(base) renvoie vrai, alors la fonction domlsd() continue avec la liste des fichiers.
L'équipe a envisagé les scénarios, fournis dans VMsetup.txt, concernant des administrateurs système configurant des environnements restreints, et a décidé de construire un exploit qui fonctionnerait comme suit :
L'utilisateur restreint se connectera au serveur FTP vulnérable et s'authentifiera avec ses identifiants.
nc <server-ip> <ftp-port>
USER <username>
PASS <password>
L'utilisateur passera ensuite en mode EPSV.
EPSV
L'utilisateur note le numéro de port renvoyé, car il devra s'y connecter pour lire les résultats de la liste.
L'utilisateur peut maintenant créer un fichier de lien (cela dépend de l'offset du tampon qui peut être facilement automatisé en fonction de la dernière réponse reçue) pointant vers le répertoire depuis lequel il souhaite lister les fichiers.
L'utilisateur envoie la commande malveillante (cela dépend de l'offset sélectionné).
MLSD -........<plus de 4096 pour faire déborder le tampon cmd>
L'utilisateur peut ensuite établir une autre connexion vers le numéro de port noté précédemment, pour lire la liste.
Nous avons développé un script d'exploitation automatisé pure.py qui effectue les mêmes étapes, et qui est basé sur d'autres scripts que nous avons développés au fil du temps pour les tests, disponibles dans le répertoire dev_files.
Pour reproduire la vulnérabilité, vous pouvez suivre un guide étape par étape pour une configuration de machine virtuelle dans VMsetup.txt
Pour créer un conteneur docker de l'instance vulnérable, vous pouvez vous référer à Dockersetup.txt