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

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

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

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

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

Категории

Все категории
Loading categories
superset-g3-v0-import-sql-plant — Proof-of-concept-лаборатория для уязвимости авторизации в Apache Superset 6.1.0, где редактор дашборда с ролью Gamma внедряет SQL в датасет через импорт дашборда в неверсионированном v0, который выполняется при обновлении графика. | Kitploit
Инструменты/GitHubGitHub/abraxas/superset-g3-v0-import-sql-plant
Аутентификация и авторизацияПовышение привилегийАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьСтатьи и ИсследованияЛаборатории и Практика

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHubabraxas/superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

Proof-of-concept-лаборатория для уязвимости авторизации в Apache Superset 6.1.0, где редактор дашборда с ролью Gamma внедряет SQL в датасет через импорт дашборда в неверсионированном v0, который выполняется при обновлении графика.

Репозиторий
11 день назадЕщё не проверено

Abraxas Labs - superset-g3-v0-import-sql-plant

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  superset-g3-v0-import-sql-plant

superset-g3-v0-import-sql-plant

Коллега с обычной учётной записью редактора дашбордов может спрятать свой собственный запрос к базе данных внутри графика, которому другие люди уже доверяют. Когда кто-либо в следующий раз откроет этот график, запрос выполнится через подключение к данным компании. Они смогут прочитать таблицы, к которым им никогда не предоставляли доступ. Им не нужно дополнительное разрешение «выполнять мой собственный SQL», которое должно это ограничивать. Они не могут зарегистрировать новый логин к хранилищу и не могут выполнить INSERT или DELETE через этот путь графика.

Класс: Остаточная привилегия Доступ: Удалённый

Apache Superset 6.1.0 (c83fb2bb) - Apache Software Foundation

У стандартной роли Gamma есть can_write для Dashboard, поэтому POST /api/v1/dashboard/import/ входит в матрицу. В не-ZIP JSON нет metadata.yaml, поэтому диспетчер пробует v1, затем переходит к неверсионированному v0. decode_dashboards восстанавливает SqlaTable. import_dataset ищет по table_name + schema + database_id (из params.database_name), а datasource.override(i_datasource) копирует export_fields, включая sql, без raise_for_access и без записи в Dataset. Затем POST /api/v1/chart/data компилирует этот SQL как виртуальный FROM на аналитическом подключении датасета.

SQL Gamma без sql_lab. REST PUT для Dataset остаётся 403. ZIP v1 остаётся пустым.

IDCVE пока нет
КлассОстаточная привилегия (остаток CVE-2026-23982 / CVE-2024-26016)
ДоступУдалённый (аутентифицированный HTTP; стандартная Gamma)
CWECWE-863, CWE-284
CVSSВысокий: 7.6 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
ПродуктApache Superset
Затронуто6.1.0 (c83fb2bb1dcfac41ac51bcebd82471f4a7180d18); GitHub Latest GA на момент поиска
Аутентификациястандартная Gamma (can_write Dashboard). Не без аутентификации. Не Admin (вне области).
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Что может сделать злоумышленник

Требуется учётная запись Gamma (или любая с правом записи Dashboard) и датасет, который они позже смогут построить на графике: тот же table_name + schema на Database, чей database_name указан в JSON params. Дополнительное разрешение относится к объекту датасета, а не к каждой таблице, которую называет внедрённый SQL. raise_for_access для chart/data проверяет объект-источник данных (datasource_access / schema / owner). get_from_clause отклоняет только has_mutation().

ПривилегияМетод / точка сбросаРазведка / целостность / доступностьПодтверждено в лаборатории или выведено
Перезапись виртуального SQL набора данных с совпадающим именемGamma POST /api/v1/dashboard/import/ не-ZIP JSON; v0 import_dataset datasource.override копирует export_fields, включая sqlЦелостность (dataset.sql)Подтверждено в лаборатории. Импорт 200; dataset.sql = SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness
Выполнение этого SQL на аналитическом URI набора данныхPOST /api/v1/chart/data после внедрения; get_from_clause оборачивает сохранённый sql как TextAsFromРазведка (SELECT любой таблицы, которую может читать пользователь URI)Подтверждено в лаборатории. 200; скомпилировано FROM (SELECT 'SUPERSET-G3-V0-IMPORT-SQL-PLANT-WITNESS' AS witness) AS virtual_table
Сокрытие запроса в графике, который другие пользователи с правами уже открылиТо же внедрение; владельцы / другие субъекты datasource_access выполняют при обновленииЦелостность + разведка (другие люди выполняют внедрение)Выведено. В лаборатории Gamma уже имела грант, поэтому выполнила сама
Поломка дашбордов, использовавших старый SQLЗамена sql физической таблицы на SELECT атакующегоДоступностьВыведено
Отрицательный: выполнение в SQL LabPOST /api/v1/sqllab/execute/н/дПодтверждено в лаборатории. 403
Отрицательный: перезапись через Dataset RESTPUT /api/v1/dataset/{id} с sqlн/дПодтверждено в лаборатории. 403; sql остался пустым (родственный CVE-2026-23982)
Отрицательный: v1 ZIP с metadata.yamlтот же endpoint импорта, ZIP-пакетн/дПодтверждено в лаборатории. 200; sql остался пустым (класс CVE-2024-26016)

Закрыто по этому остатку: неаутентифицированный импорт; регистрация нового URI базы данных (импорт набора данных v0 не создаёт соединение; отсутствие params.database_name даёт DatabaseNotFoundError); DML через chart/data (has_mutation()); построение графика Gamma для набора данных, который она не может читать (403); новый вставленный уникальный table_name (PVM создан, но не привязан к Gamma). Не RCE. Не Admin. Разделение продакшн-хранилища ограничивает SELECT пользователем этого URI. Аналитический URI в лаборатории был тем же Postgres, что и метаданные, поэтому межтабличный доступ, включая ab_user, выведен, а не подтверждён вторым оракулом.

Как я это нашёл

Я зафиксировал Apache Superset 6.1.0. Admin эквивалентен ОС и вне области рассмотрения. Я искал остатки в соответствии с собственной матрицей ролей Apache: Gamma, Alpha, sql_lab, встроенный гость, Public.

Волна 6.0.0 уже закрыла sqlExpression в chart/data (CVE-2026-23980), SQL в Dataset REST (CVE-2026-23982) и DO $$ / EXPLAIN ANALYZE в SQL Lab (CVE-2026-23984). Авторизация импорта для версионированного ZIP — CVE-2024-26016. Неверсионированный v0 по-прежнему последний в command_versions, потому что «файлы не версионируются».

import_ в Dashboard сопоставляется с записью. Не-ZIP JSON — это {filename: bytes} без metadata.yaml. Диспетчер пробует v1, ловит IncorrectVersionError, запускает v0. decode_dashboards превращает __SqlaTable__ в живую модель. import_dataset выполняет поиск и переопределение. export_fields включает sql. Во время запроса сохранённый SQL считается доверенным: get_from_clause после has_mutation().

Уже зафиксированные неверные пути: рассмотрение v1 ZIP как остатка (sql остался пустым); Dataset REST PUT (403); SQL Lab как Gamma (403); раздувание до любого объекта Database (v0 не регистрирует URI); обратная оболочка. Театр. Свидетель — виртуальный FROM.

Лаборатория

python3 superset-g3-v0-import-sql-plant-Abraxas-Labs.py

или:

cd lab
./run.sh
Скачать инструмент