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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
wpgarlic — أداة اختبار عشوائي لمكونات ووردبريس كإثبات مفهوم | Kitploit
أدوات/GitHubGitHub/kazet/wpgarlic
تحليل الثغرات الأمنيةأمن الويبالاختبار العشوائي
GitHubkazet/wpgarlic

wpgarlic

أداة اختبار عشوائي لمكونات ووردبريس كإثبات مفهوم

عرض المستودع
20023منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

wpgarlic

أداة إثبات مفهوم لفحص إضافات ووردبريس (fuzzer) أدت إلى اكتشاف أكثر من 300 ثغرة أمنية في إضافات ووردبريس مثبتة على ما يقرب من 30 مليون موقع.

التقنية المستخدمة موصوفة في https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html

إذا كنت ترغب في مواصلة البحث، ابدأ بالإضافات الأقل شيوعًا - إذا كانت الإضافة قد حققت ما لا يقل عن 10 آلاف تثبيت نشط بين أكتوبر 2021 ويناير 2024، فمن المرجح جدًا أنني قد اطلعت على تقارير الفاحص (fuzzer) (وقد تم التركيز الأكبر على الإضافات التي لديها ما لا يقل عن 20 ألف تثبيت نشط). نظرًا لوجود الكثير من العشوائية في طريقة عمل الفاحص، تظل بعض الثغرات في هذه الإضافات غير مكتشفة - ولكن مع وجود عدد أقل منها.

تحتوي تقارير الفاحص على الكثير من النتائج الإيجابية الخاطئة - معظمها لا يشير إلى ثغرة أمنية. بعد رؤية تقرير، قم أولاً بتحليل ما إذا كان السلوك الذي تلاحظه هو بالفعل ثغرة أم نتيجة إيجابية خاطئة. لا تُغرِق WPScan/المورّدين بتقارير فاحص خام - بل قدم بدلاً من ذلك إثبات اختراق قيد التشغيل (PoC).

أمثلة

لأسباب واضحة، ستحتوي الأمثلة فقط على ثغرات تم إصلاحها بالفعل.

قراءة ملف تعسفي

لنفترض أنك تقوم بفحص إضافة responsive-vector-maps في الإصدار 6.4.0:

root@kitploit:~
./bin/fuzz_object plugin responsive-vector-maps --version 6.4.0

(لفحص أحدث إصدار، ما عليك سوى تخطي --version).

بعد انتهاء الفحص (والذي سيستغرق من 10 إلى 30 دقيقة لهذه الإضافة) يمكنك استدعاء:

root@kitploit:~
./bin/print_findings data/object_fuzz_results/

سترى، من بين أمور أخرى:

مثال لمخرجات فاحص responsive-vector-maps.

وهذا يعني أن الفاحص اكتشف تنفيذ fopen() على حمولة معروفة. تحتوي معظم الحمولات على الكلمة GARLIC فيها لتسهيل الكشف التلقائي في المخرجات. قد تراها أو تهيئها في docker_image/magic_payloads.php.

ثم يمكنك تصفح الكود المصدري وترى أن نقطة النهاية wp_ajax_rvm_import_markers تستخدم محتوى الملف لعرض المخرجات، مما يسمح لك بقراءة ملفات تعسفية على الخادم: CVE-2021-24947.

ما تراه باللون الأبيض هو تعطل يعتبر مثيرًا للاهتمام (يمكنك تعديله أو إضافة تعطلات جديدة في crash_detectors.py). اللون الأخضر هو السياق. باللون الأزرق ترى اسم ملف التقرير (مع اسم الإضافة)، وشعبية الإضافة، واسم نقطة النهاية (هنا: اسم إجراء ajax).

البيانات باللون الأصفر هي الحمولات التي تم حقنها في المتغيرات.

XSS منعكسة

لنفترض أنك تقوم بفحص إضافة page-builder-add في الإصدار 1.4.9.4:

root@kitploit:~
./bin/fuzz_object plugin page-builder-add --version 1.4.9.4

بعد طباعة النتائج، سترى حمولة معروفة يتم إرجاعها:

مثال لمخرجات فاحص page-builder-add.

يمكنك بعد ذلك اختبار يدويًا ما إذا كان هذا المكان بالفعل (تذكر: باللون الأزرق لديك اسم نقطة النهاية، هنا: اسم صفحة القائمة) عرضة لهجوم XSS. في هذه الحالة، هو كذلك: CVE-2021-25067.

تحديث خيار يؤدي إلى XSS مخزّن

root@kitploit:~
./bin/fuzz_object plugin duplicate-page-or-post --version 1.4.6

بعد طباعة النتائج، سترى update_option يتم استدعاؤها:

مثال لمخرجات فاحص duplicate-page-or-post.

سيخبرك تحليل كود نقطة النهاية أن هذا يؤدي بالفعل إلى ثغرة XSS مخزّنة: CVE-2021-25075.

نتائج إيجابية خاطئة

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

root@kitploit:~
Call: wp_mail arguments={'to': '[email protected]', 'subject': '[Plugin contact]  - http://GARLICGARLICGARLIC.example.com'}

يمكن أن يعني هذا أن wp_mail قد تم استدعاؤه بالفعل، ولكنك لا تتحكم في المستلم ومعظم الموضوع. إذا كنت تريد التأكد، انظر إلى كود الإضافة.

نصائح إضافية لقراءة تقارير الفاحص

  • إذا رأيت الرسالة؛ May as well be equal: ... and ... - فهذا يعني أن آلية التظاهر بأن حمولة معروفة مساوية لأي سلسلة نصية أخرى (الموصوفة في https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html#patched-equality) قد تم تشغيلها.
  • إذا رأيت __GARLIC_ACCESSED__ _FILES[files] __ENDGARLIC__ - فهذا يعني أنه تم اكتشاف الوصول إلى ملف تم رفعه. لا يتم إجراء مزيد من الفحوصات حاليًا - للتحقق مما إذا كانت هذه ثغرة، انظر إلى الكود.
  • أحيانًا ما يحقنه الفاحص في معاملات GET, POST وما إلى ذلك لا يمكن إعادة إنتاجه في العالم الحقيقي: على سبيل المثال، لا يمكنك حقن أي شيء في $_GET['page'] إذا كنت تريد عرض صفحة قائمة معينة.

ورقة استخدام سريعة

قد يستغرق التشغيل الأول للفحص أو الاختبارات حوالي ساعة، لأننا نحتاج إلى بناء صورة Docker مع PHP ووردبريس معدّلة.

فحص إضافة بالاسم

root@kitploit:~
./bin/fuzz_object plugin PLUGIN_SLUG

فحص قالب بالاسم

root@kitploit:~
./bin/fuzz_object theme THEME_SLUG

فحص إضافة من ملف

يمكنك أيضًا تثبيت إضافة من ملف zip محلي:

root@kitploit:~
./bin/fuzz_object plugin PLUGIN_FILE_NAME.zip

طباعة النتائج

لطباعة ما عثر عليه الفاحص، استخدم:

root@kitploit:~
./bin/print_findings data/object_fuzz_results/

تشغيل الاختبارات

لتشغيل الاختبارات، استخدم:

root@kitploit:~
./bin/test

تحذير: تستغرق الاختبارات وقتًا طويلاً (أكثر من ساعة) وبما أنها تتحقق مما إذا كان الفاحص سيعثر على ثغرات، فإنها تفشل باحتمالية معينة.

إعادة تنسيق الكود وتشغيل أدوات التحليل (linters)

يستخدم wpgarlic pre-commit لتشغيل أدوات التحليل وتنسيق الكود. يتم تنفيذ pre-commit على CI للتحقق من أن الكود منسق بشكل صحيح.

لتشغيله محليًا، استخدم:

root@kitploit:~
pre-commit run --all-files

لإعداد pre-commit بحيث يعمل قبل كل commit، استخدم:

root@kitploit:~
pre-commit install

بيئة اختبار يدوية

يمكنك بدء بيئة اختبار مع تثبيت إضافة واحدة فقط باستخدام:

root@kitploit:~
./bin/manual_testing PLUGIN_SLUG|PLUGIN_PATH.zip [version]

يمكنك تثبيت إضافة باستخدام slug الخاص بها أو من ملف zip محلي.

سيستمع على http://127.0.0.1:8001/

سيكون هناك مستخدمان اختباريان في قاعدة البيانات:

  • اسم المستخدم: admin، كلمة المرور: admin، الصلاحيات: مدير (administrator)
  • اسم المستخدم: subscriber، كلمة المرور: subscriber، الصلاحيات: مشترك (subscriber)

توسيع وتهيئة الفاحص

هذه الأداة هي إثبات مفهوم - يحتوي هذا القسم على أماكن يمكن تحسينها للعثور على المزيد من الثغرات.

قد ترغب في تحرير filtering.py - فهي تحتوي على القواعد التي تعتبر تعطلًا معينًا مهمًا أم لا. إذا قمت بتغييرها، فقد تحصل على نتائج إيجابية خاطئة أكثر، ولكن قد تعثر أيضًا على ثغرات أكثر. على سبيل المثال، الرأس الوحيد الذي أعتبره مهمًا عند إصداره هو رأس Location، لاكتشاف ثغرات إعادة التوجيه المفتوحة (Open Redirect). هذه مجرد فكرة واحدة وقد تكون لديك أفكار أخرى.

ملف آخر قد يستحق التوسيع هو docker_image/patch_wordpress.sh. يصف استدعاءات الدوال التي سيتم تسجيلها كمثيرة للاهتمام.

إذا كنت ترغب في حقن حمولات أخرى (أو تغيير الاحتمالات التي يتم بها حقنها) قم بتحرير docker_image/magic_payloads.php و docker_image/fuzz/config.py.

crash_detector.py يحتوي على تعبيرات منتظمة تعثر على تعطلات مثيرة للاهتمام أو معلومات مثيرة للاهتمام (مثل رسائل البريد الإلكتروني) التي يتم كشفها.

تم تعطيل فحص مسارات REST كمستخدم مسجل الدخول (admin) لأنه أدى إلى نتائج إيجابية خاطئة. قم بإلغاء تعليق rest_routes_admin في config.DEFAULT_ENABLED_FEATURES لتغيير ذلك.

داخل الفاحص

قوائم الحظر (Blocklists)

تحتاج بعض الإضافات إلى إضافات أخرى (مثل woocommerce) كاعتماديات. عند فحص إضافة تعتمد على أخرى، نريد فحص الإضافة المختارة فقط وتخطي إجراءات AJAX ومسارات REST وصفحات القائمة الخاصة بالاعتماديات. نريد فحص إجراءات/مسارات/صفحات woocommerce فقط عندما نختار woocommerce لفحصها.

قائمة الإجراءات/المسارات/الصفحات التابعة تسمى قوائم الحظر وهي مدرجة في docker_image/blocklists/. الملفات المسماة common تحتوي على الإجراءات/المسارات/الصفحات الأساسية لووردبريس - لا نريد فحصها أيضًا.

لتحديث قوائم الحظر هذه، استخدم ./bin/update_blocklists.

الأسئلة الشائعة

عثر الفاحص على شيء، هل هذه ثغرة؟

ربما. قم بتثبيت الإضافة في بيئة اختبار محلية (على سبيل المثال يمكنك استخدام البيئة الموضحة في قسم بيئة اختبار يدوية) وقم بتحليل الخلل.

لم يعثر الفاحص على شيء، هل الإضافة آمنة؟

لا تفترض ذلك. يعثر الفاحص على بعض فئات الثغرات، ولكن له حدوده.

لم يعثر الفاحص على شيء بالنسبة لمعظم الإضافات - الغرض من الأداة هو بالأحرى فحص عدد كبير من إضافات ووردبريس بشكل جماعي، وليس إجراء اختبارات شاملة لإضافة واحدة.

عثر الفاحص على شيء في إحدى مرات التشغيل، ولكن ليس في المرة التالية. ماذا حدث؟

هذا ممكن. يختار الفاحص الحمولات بشكل عشوائي، ويقدم العشوائية في أماكن أخرى (مثل كيفية تصرف عامل المساواة == في الحالات الموصوفة في https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html#patched-equality).

لا يعمل؟ لديك سؤال؟

قم بإنشاء تذكرة على Github أو أرسل لي بريدًا إلكترونيًا: [email protected].

تنزيل الأداة