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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/harshrajsinghania/cotonti-commentswidget-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليم
GitHubharshrajsinghania/cotonti-commentswidget-poc

cotonti-commentswidget-poc

إثبات مفهوم محلي آمن لثغرة حقن كائنات PHP في Cotonti CommentsWidget (CAN-2026-2035973 / CVE-2026-71294).

عرض المستودع
منذ 14س 7دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

إثبات مفهوم حقن كائنات PHP في Cotonti CommentsWidget

إثبات مفهوم محلي آمن لمسألة حقن كائنات PHP المُحدَّدة في تطبيق CommentsWidget الخاص بـ Cotonti.

الثغرة

  • المشروع: Cotonti
  • المكوّن المتأثر: plugins/comments/inc/CommentsWidget.php
  • CWE: CWE-502 — إلغاء تسلسل البيانات غير الموثوقة
  • CVE/المرشح: CAN-2026-2035973 / CVE-2026-71294
  • الباحث: Harsh Raj Singhania

يقبل مسار الكود المصاب معامل GET باسم ci ويمرّر بيانات يتحكم بها المهاجم عبر base64_decode() إلى دالة unserialize() في PHP دون تقييد الفئات التي يمكن إنشاؤها.

من الناحية المفاهيمية، العملية المصابة هي:

root@kitploit:~
$ci = @unserialize(base64_decode($ci));

عند تمرير كائن مُسلسَل، قد يُنشئ PHP الفئة التي يتحكم بها المهاجم ويستدعي الدوال السحرية مثل __wakeup(). في تطبيق أكبر، قد يصبح هذا خطيرًا عند توفر فئات gadget مناسبة.

يغيّر الإصلاح المُقدَّم إلغاء التسلسل إلى:

root@kitploit:~
$ci = @unserialize(base64_decode($ci), ['allowed_classes' => false]);

ويتحقق من أن القيمة الناتجة تمتلك بنية المصفوفة المتوقعة قبل استخدامها.

ما يوضحه هذا الإثبات

ينفّذ poc.php ثلاثة اختبارات محلية:

  1. السلوك المصاب — تقوم unserialize() غير المقيّدة بإنشاء DangerousGadget وتشغيل دالة __wakeup() الخاصة به.
  2. السلوك المُصلَح — يمنع allowed_classes => false إنشاء فئة gadget وبالتالي يمنع الأثر الجانبي لـ __wakeup().
  3. التحقق البنيوي — يتم رفض قيمة مُسلسَلة ذات شكل غير متوقع بواسطة منطق التحقق المستخدم في الإصلاح.

يستخدم الإثبات /tmp/pwned_by_cotonti_poc.txt فقط كعلامة غير ضارة تُظهر أن __wakeup() قد نُفِّذت. وهو لا ينفّذ أمرًا على نظام التشغيل. السلسلة id && whoami موجودة فقط كقيمة بديلة في خاصية command الخاصة بـ gadget.

المتطلبات

  • PHP CLI مع دعم serialize() / unserialize()
  • بيئة اختبار محلية

لا يلزم تثبيت Cotonti لأن سلوك إلغاء التسلسل المصاب والمُصلَح يُعاد إنتاجه مباشرة.

تشغيل الإثبات

من دليل المستودع:

root@kitploit:~
php poc.php

المخرجات المتوقعة مشابهة لـ:

root@kitploit:~
[!] DangerousGadget::__wakeup() triggered
[TEST 1] VULNERABLE: __wakeup() executed during unrestricted unserialize().
[TEST 2] FIXED: object instantiation was blocked; no sentinel was created.
[TEST 3] FIXED: invalid serialized structure rejected by validation.

Summary:
- Vulnerable path allows a serialized attacker-controlled object to be instantiated and invokes __wakeup().
- Fixed path uses allowed_classes=false, preventing the gadget class from being instantiated.
- Structural validation rejects values that do not match the expected array shape.
- No real command execution is performed by this PoC; the command property is only a placeholder.

يحذف السكربت ملف العلامة الخاص به قبل الخروج.

المعالجة

لا تقم بإلغاء تسلسل بيانات يتحكم بها المهاجم باستخدام unserialize() في PHP دون قيود.

بالنسبة لمسار الكود هذا، التخفيف الموضّح هو تعطيل إنشاء الفئات:

root@kitploit:~
unserialize($data, ['allowed_classes' => false]);

يجب أيضًا التحقق من القيمة المُلغَى تسلسلها مقابل البنية الدقيقة المتوقعة من التطبيق قبل استخدام محتوياتها.

المراجع

  • مسألة الأمان في المصدر الأصلي: https://github.com/Cotonti/Cotonti/issues/1888
  • طلب السحب للإصلاح في المصدر الأصلي: https://github.com/Cotonti/Cotonti/pull/1889
  • مشروع Cotonti: https://github.com/Cotonti/Cotonti

الاستخدام المسؤول

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

الإسناد

Harsh Raj Singhania — بحث الثغرة، وإثبات المفهوم، والإفصاح.

تنزيل الأداة