
Репозиторий исследований для CVE-2026-19089 — уязвимости удалённого выполнения команд в WooCommerce Product Input Fields от Tyche Softwares. Содержит черновой исследовательский скрипт и заметки для авторизованного лабораторного тестирования.

Product Input Fields for WooCommerce < 2.0.2 — неаутентифицированная загрузка произвольных файлов
Плагин Product Input Fields for WooCommerce от Tyche Softwares не проверяет типы загружаемых файлов, когда настройка допустимых типов поля оставлена пустой (в собственной документации это описывается как «принимать все файлы»). Неаутентифицированный гость может прикрепить произвольный файл при добавлении в корзину, завершить оформление заказа и получить объект в каталоге загрузок плагина. На хостах, где это дерево каталогов исполняется как PHP, тот же путь приводит к удалённому выполнению кода.
| CVE | CVE-2026-19089 |
| CWE | CWE-434: Unrestricted Upload of File with Dangerous Type |
| CVSS 3.1 | 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Vendor | Tyche Softwares |
| Product | Product Input Fields for WooCommerce (product-input-fields-for-woocommerce) |
| Affected | 2.0.0 по 2.0.1 (плагин до 2.0.2) |
| Patched | 2.0.2 |
| Related | CVE-2024-13359 (ограниченная AFU до 1.12.0) |
| CNA | WPScan |
Этот репозиторий содержит proof-of-concept от Abraxas Labs только для авторизованного тестирования — раскрытия вендору, воспроизведения в лаборатории или хоста, на оценку которого у вас есть письменное разрешение.
Я запускал клиент против локального магазина WooCommerce с Product Input Fields 2.0.1, гостевым оформлением заказа и оплатой при доставке, а также глобальным полем File с пустыми допустимыми типами. Скрипт выполняет подготовку загрузки и оформление заказа; он не содержит веб-шелла.
Поле ввода товара типа File привязывается к форме добавления в корзину витрины как alg_wc_pif_global_* / alg_wc_pif_local_*. Когда допустимые типы файлов пусты, плагин сохраняет всё, что отправил гость. После успешного заказа файл сохраняется в wp-content/uploads/product_input_fields/, обычно с именем {item_id}_{original_filename}.
Сайты уязвимы, когда все следующие условия выполнены:
При этих условиях воздействие — запись произвольного файла от имени веб-пользователя. Если каталог загрузок исполняемый, это захват сайта.
Клиент остаётся на витрине. Он не содержит PHP-вебшелла или обратного шелла.
GET по URL товара, сбор имён полей файлов PIF и id товара для add-to-cart.POST add-to-cart с безобидным PNG-маркером (image/png) под именем поля PIF. Имя файла по умолчанию — pifx.php, чтобы в лаборатории было видно, разрешил ли плагин опасное расширение. Маркер не является исполняемым PHP./?wc-ajax=checkout с оплатой при доставке.redirect оформления заказа, если он присутствует, затем перебор wp-content/uploads/product_input_fields/{1..499}_{name} и POST x в поисках свидетеля SHELL_OK. [ LIVE ] выводится только когда этот свидетель возвращается.CVE-2026-19089-WooCommerce-Tyche-Abraxas-Labs.py — небольшой клиент на Python 3: цветной figlet-баннер, затем четыре шага выше. Он обращается только к URL, которые вы передаёте в командной строке.
requestsНа macOS с Homebrew Python (PEP 668) используйте venv вместо системного pip install:
python3 -m venv .venv
.venv/bin/pip install requests
CVE-2026-19089-WooCommerce-Tyche-Abraxas-Labs.py <base_url> <product_url> [shell_name]
.venv/bin/python3 CVE-2026-19089-WooCommerce-Tyche-Abraxas-Labs.py \
https://shop.example \
https://shop.example/product/demo/
Третий аргумент задаёт имя загружаемого файла; по умолчанию — pifx.php.
При менее чем двух аргументах скрипт выводит баннер и справку, затем завершается с кодом 1. Это безопасный способ убедиться, что клиент запускается.
WooCommerce с гостевым оформлением заказа и рабочим платёжным шлюзом (клиент отправляет payment_method=cod), Product Input Fields до 2.0.2, и опубликованный товар, поле File которого принимает любой тип. Против 2.0.2+ или поля со строгим списком разрешённых типов объект не должен сохраниться как загрузка .php.
Не направляйте это на любой хост, которым вы не владеете или на тестирование которого у вас нет письменного разрешения.
wp-content/uploads/product_input_fields/ (и woocommerce_uploads/alg_uploads/product_input_fields/ в некоторых конфигурациях), удалите неожиданные объекты и смените секреты для wp-admin.Только для исследований и образовательных целей. Не запускайте, не развёртывайте и не используйте этот материал против любого хоста, если у вас нет явного письменного разрешения как от стороны, размещающей этот репозиторий, так и от владельца целевых систем.
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null