
CVE-2026-85097 के लिए डिटेक्शन, वेरिफिकेशन और इंसिडेंट-रिस्पॉन्स टूलकिट: रिमोट Bricksforge असेसमेंट, लॉग IOC हंटिंग, फाइलसिस्टम इम्प्लांट ऑडिट, साथ ही Sigma और WAF नियम।
Bricksforge WordPress प्लगइन में अनधिप्रमाणित मनमाना फ़ाइल अपलोड → RCE
CVE-2026-85097 के लिए डिटेक्शन, सत्यापन और घटना-प्रतिक्रिया टूलकिट, जो WordPress के लिए Bricksforge प्लगइन में एक CVSS 10.0 अनधिप्रमाणित मनमाना फ़ाइल अपलोड है और जिसका वास्तविक दुनिया में सक्रिय रूप से शोषण किया जा रहा है।
एक स्क्रिप्ट, तीन मोड: किसी लक्ष्य का दूरस्थ मूल्यांकन करें, शोषण के लिए ऐतिहासिक लॉग की खोज करें, और छोड़े गए इम्प्लांट के लिए वेब रूट का ऑडिट करें।
____ _ _ _ __ ___ _ _
| __ ) _ __(_) | _| | __/ _| ___ _ __ __ _ / _ \ ___| | _| | ___ _ __
| _ \| '__| | |/ / |/ / |_ / _ \| '__/ _` | | | / __| |/ / |/ _ \| '_ \
| |_) | | | | <| <| _| (_) | | | (_| | |_| \__ \ <| | (_) | | | |
|____/|_| |_|_|\_\_|\_\_| \___/|_| \__, |\___/|___/_|\_\_|\___/|_| |_|
|___/
CVE-2026-85097 | Unauthenticated Arbitrary File Upload -> RCE
CVSS 10.0 CRITICAL | Bricksforge <= 3.1.8.9 | Fixed 3.1.8.10
| फ़ील्ड | मान |
|---|---|
| CVE | CVE-2026-85097 |
| उत्पाद | Bricksforge (WordPress प्लगइन, Bricks Builder के लिए ऐडऑन) |
| प्रकार | अनधिकृत मनमाना फ़ाइल अपलोड → रिमोट कोड एक्ज़ीक्यूशन |
| CWE | CWE-434: खतरनाक प्रकार वाली फ़ाइल का अप्रतिबंधित अपलोड |
| CVSS | 10.0 CRITICAL: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H (वेक्टर अनुमानित, देखें सीमाएँ) |
| प्रमाणीकरण | कोई नहीं |
| प्रभावित | <= 3.1.8.9 |
| ठीक किया गया | 3.1.8.10 (प्रेस में संदर्भित विक्रेता रिलीज़ लाइन: 4.0.1) |
| शोषण | वास्तविक दुनिया में सक्रिय |
| पहली बार देखा गया | 2026-10-07 21:47:17 UTC |
| इंस्टॉलेशन | ~6,000 |
| देखे गए स्रोत IP | 63 अद्वितीय (शीर्ष 6 ≈ अनुरोधों का 46%) |
| प्राथमिक एंडपॉइंट | POST /wp-json/bricksforge/v1/form_submit |
| फ़ॉलबैक एंडपॉइंट | POST /wp-admin/admin-ajax.php (action=bricksforge_form_submit) |
| इम्प्लांट नामकरण | login_admin_*.php |
[!CAUTION] केवल अधिकृत उपयोग। यह टूल अनुमत सुरक्षा आकलन, रक्षात्मक सत्यापन और घटना प्रतिक्रिया के लिए है। किसी ऐसे सिस्टम के विरुद्ध कोई भी सक्रिय परीक्षण चलाना जिसका आप स्वामी नहीं हैं या जिसका परीक्षण करने की आपके पास लिखित अनुमति नहीं है, अधिकांश न्यायक्षेत्रों में अवैध है। देखें SAFETY-AND-LEGAL.md.
Bricksforge, Bricks Builder को उन्नत फ़ॉर्म,
एनिमेशन और गतिशील डेटा के साथ विस्तारित करता है। इसकी Pro Forms सुविधा फ़ाइल अपलोड स्वीकार करती है। प्लगइन
किसी फ़ाइल के MIME प्रकार को जब वह पहली बार अपलोड होती है तब सही ढंग से सत्यापित करता है, लेकिन जब
फ़ॉर्म बाद में सबमिट किया जाता है, तो यह क्लाइंट द्वारा भेजे गए फ़ाइल मेटाडेटा पर भरोसा करता है, और
temporaryFileUploads पैरामीटर के अंदर url फ़ील्ड को कभी सत्यापित नहीं करता।
वह एकमात्र छूटी हुई जाँच एक सामान्य छवि अपलोड को अनधिकृत रिमोट
कोड एक्ज़ीक्यूशन में बदल देती है। हमलावर को किसी खाते की आवश्यकता नहीं, कोई CSRF टोकन जिसे वे स्वयं नहीं बना सकते, नहीं, और कोई उपयोगकर्ता इंटरैक्शन नहीं चाहिए। Patchstack ने
2026-10-07 21:47:17 UTC से शुरू होकर डेटासेंटर, क्लाउड, VPN और
आवासीय अवसंरचना में फैले 63 अद्वितीय स्रोत IP से शोषण देखा।
file (सर्वर-साइड पथ जिसका MIME-जाँच किया गया था) और url (वह गंतव्य जहाँ प्लगइन
लिखेगा) अलग-अलग हैं। प्लगइन सबमिशन के समय क्लाइंट द्वारा प्रदान किए गए url को फिर से पढ़ता है और स्टेज किए गए बाइट्स को वहाँ लिखता है।
{
"temporaryFileUploads": [
{
"field": "form-field-file",
"file": {
"file": "/var/www/example.com/wp-content/uploads/bricksforge/tmp/img_example.gif",
"url": "https://example.com/wp-content/uploads/bricksforge/tmp/img_example.php",
"type": "image/gif"
}
}
]
}
हस्ताक्षर ही असंगति है: सर्वर-साइड पथ एक .gif है, गंतव्य URL एक .php है। कैप्चर किए गए 95% अनुरोधों में सर्वर-साइड पथ .gif या .png पर समाप्त हुआ।
| फ़ाइल | भूमिका |
|---|---|
wp-content/plugins/bricksforge/includes/elements/pro-forms/actions/init.php | इंजेक्शन बिंदु: क्लाइंट-प्रदत्त मेटाडेटा (जिसमें url शामिल है) को बिना सत्यापन के फ़ॉर्म-एक्शन संदर्भ में मिला दिया जाता है। |
wp-content/plugins/bricksforge/includes/elements/pro-forms/actions/base.php | सिंक: विश्वसनीय मेटाडेटा अंतिम फ़ाइल लेखन को नियंत्रित करता है, इसलिए हमलावर डिस्क पर गंतव्य फ़ाइल नाम और एक्सटेंशन को नियंत्रित करता है। |
| # | चरण | प्रेक्षणीय |
|---|---|---|
| 1 | अप्रमाणित nonce प्राप्त करें: POST /wp-admin/admin-ajax.php के साथ action=bricksforge_regenerate_nonce। किसी प्रमाणीकरण की आवश्यकता नहीं; एक वैध nonce लौटाता है। | admin-ajax.php अनुरोध के साथ action=bricksforge_regenerate_nonce |
| 2 | GIF/PHP पॉलीग्लॉट अपलोड करें: एक वैध छवि जो PHP कोड भी रखती है। यहाँ MIME सत्यापन किया जाता है, इसलिए यह पास हो जाता है और wp-content/uploads/bricksforge/tmp/ में पहुँच जाता है। | मल्टीपार्ट अपलोड जो /wp-content/uploads/bricksforge/tmp/ में लिखता है |
| 3 | असंगत मेटाडेटा के साथ फ़ॉर्म सबमिट करें: file सत्यापित .gif की ओर इंगित करता है, url .php पर समाप्त होता है। | form_submit अनुरोध जिसमें temporaryFileUploads शामिल है |
| 4 | प्लगइन सामग्री को PHP स्थान पर लिखता है → RCE। उस URL का अनुरोध करने पर एम्बेडेड कोड निष्पादित होता है: वेब शेल, सामग्री संशोधन, डेटा चोरी, स्थायित्व। | अपलोड निर्देशिका के अंतर्गत नव निर्मित .php फ़ाइल के लिए HTTP GET |
हमलावर एक्सटेंशन फ़िल्टरिंग को बायपास करने के तरीकों की सक्रिय रूप से खोज करते हैं। चार श्रेणियाँ:
| श्रेणी | नमूने | उद्देश्य |
|---|---|---|
| वैकल्पिक PHP एक्सटेंशन | .php .php5 .php7 .php8 .phtml .pht .phtm .phps | ऐसे नाम के अंतर्गत PHP हैंडलर तक पहुँचें जिसे फ़िल्टर अवरुद्ध नहीं करता |
| केस में हेरफेर | .PHP .Php .pHp .PHTML | केस-संवेदी ब्लैकलिस्ट को पराजित करें; Windows/कुछ Apache कॉन्फ़िगरेशन केस-असंवेदी रूप से हल करते हैं |
| एन्कोडेड एक्सटेंशन | %2ephp .%70hp .%2570%2568%2570 | URL-डिकोड से पहले निरीक्षण किए गए फ़िल्टर से एक्सटेंशन को चुपके से निकालें |
| संशोधित मेटाडेटा | परिवर्तित/अनुपस्थित path, name, originalFilename, url | मैप करें कि प्लगइन वास्तव में किन फ़ील्ड्स को सत्यापित करता है |
यह टूल पहली तीन श्रेणियों के सभी 18 प्रकारों का पता लगाता है (देखें सत्यापन परिणाम)।
Python 3.9+ आवश्यक है। केवल दो निर्भरताएँ, दोनों सामान्य।
git clone https://github.com/Masriyan/CVE-2026-85097.git
cd CVE-2026-85097
python3 -m venv .venv && source .venv/bin/activate # optional but recommended
pip install -r requirements.txt
chmod +x bricksforge_checker.py
./bricksforge_checker.py --version