
مستودع أبحاث لـ 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 حرج (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| المورّد | Tyche Softwares |
| المنتج | Product Input Fields for WooCommerce (product-input-fields-for-woocommerce) |
| المتأثر | 2.0.0 حتى 2.0.1 (الإضافة قبل 2.0.2) |
| المُصحّح | 2.0.2 |
| ذو صلة | CVE-2024-13359 (رفع ملفات عشوائي محدود حتى 1.12.0) |
| CNA | WPScan |
يحتوي هذا المستودع على إثبات مفهوم من Abraxas Labs لأغراض الاختبار المصرّح به فقط - الإفصاح للمورّد، أو إعادة الإنتاج في المختبر، أو مضيف لديك إذن كتابي بتقييمه.
شغّلت العميل مقابل متجر WooCommerce محلي مع Product Input Fields 2.0.1، ودفع الزوار، والدفع عند الاستلام، وحقل File عام كانت أنواعه المقبولة فارغة. يقوم السكربت بتهيئة الرفع والدفع؛ ولا يتضمن webshell.
يُربط حقل إدخال منتج من نوع File بنموذج الإضافة إلى السلة في الواجهة باسم alg_wc_pif_global_* / alg_wc_pif_local_*. عندما تكون أنواع الملفات المقبولة فارغة، تخزّن الإضافة أي شيء يرسله الزائر. بعد نجاح الطلب، يُحفظ الملف تحت wp-content/uploads/product_input_fields/، وعادةً باسم {item_id}_{original_filename}.
تكون المواقع معرّضة للخطر عندما تتحقق جميع الشروط التالية:
في ظل هذه الظروف، يكون التأثير كتابة ملف عشوائي بصلاحيات مستخدم الويب. وإذا كان دليل الرفع قابلًا للتنفيذ، فهذا يعني الاستيلاء على الموقع.
يبقى العميل في واجهة المتجر. ولا يتضمن webshell بلغة PHP أو reverse shell.
GET إلى رابط المنتج، وجمع أسماء حقول ملفات PIF ومعرّف المنتج في 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 ملوّنة، ثم الخطوات الأربع أعلاه. ولا يتواصل إلا مع الروابط التي تمرّرها على سطر الأوامر.
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