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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-17544 — استغلال لثغرة CVE-2026-17544: كتابة خارج الحدود (OOB) في bcmath الخاصة بـ PHP تُحوَّل إلى RCE في الذاكرة فقط، مع تجاوز disable_functions و open_basedir عبر مُحلِّل خالٍ من الإزاحات (offset-free) في وقت التشغيل. | Kitploit
أدوات/GitHubGitHub/r2qa/cve-2026-17544
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبما بعد الاستغلالالفريق الأحمرتطوير الحمولاتاستغلال الملفات الثنائية
GitHubr2qa/cve-2026-17544

CVE-2026-17544

استغلال لثغرة CVE-2026-17544: كتابة خارج الحدود (OOB) في bcmath الخاصة بـ PHP تُحوَّل إلى RCE في الذاكرة فقط، مع تجاوز disable_functions و open_basedir عبر مُحلِّل خالٍ من الإزاحات (offset-free) في وقت التشغيل.

عرض المستودع
منذ 4 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-17544 — كتابة خارج الحدود في bcmath الخاصة بـ PHP → تنفيذ تعليمات برمجية عن بُعد عام عبر الذاكرة فقط

إثبات مفهوم مُسلَّح لـ CVE-2026-17544، وهي كتابة خارج الحدود في امتداد bcmath المُعاد كتابته في PHP (bc_str2num). يحوّل هذا الانهيار المعروف علنًا على أنه حرمان خدمة فقط (DoS) إلى أداة بدائية كاملة وعامة لتنفيذ تعليمات برمجية عن بُعد عبر الذاكرة فقط تتجاوز كلاً من disable_functions و open_basedir في الوقت نفسه.

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

صورة

TL;DR

  • الخلل: يقوم bc_str2num باقتطاع الجزء الكسري عند scale يدوي، ويعيد قصّ الأصفار اللاحقة، لكنه لا يحدّث fractional_end. يتم تحديد حجم المخزن المؤقت وفقًا للطول بعد إعادة القص بينما تستخدم النسخة الطولَ قبل القص → كتابة صفرية موجَّهة خارج الحدود إلى كومة Zend MM.
  • الاستغلال: تصفّر الكتابة الصفرية خارج الحدود عدّاد المراجع (refcount) لـ zend_string مجاور (مع الحفاظ على الطول) → استخدام بعد التحرير (use-after-free) ناتج عن عدم تطابق عدّاد المراجع → قراءة/كتابة نسبية عبر سلسلة ضخمة → قراءة مطلقة عشوائية آمنة تجاه الأخطاء → حلّ الرموز في زمن التشغيل → استدعاء دالة أصلية يعتمد على البيانات فقط بالكامل.
  • الحمولة: تبني zend_class_entry مزيفًا + function_table مضمّنًا + zend_function مزيفًا { handler = zif_shell_exec }، ثم تستدعيه كطريقة (method). يتم إرجاع مخرجات الأمر كسلسلة نصية وإيصالها إلى الاستجابة/الإخراج القياسي.
  • لا إزاحات مكتوبة بشكل ثابت (hardcoded). يتم حلّ عنوان القاعدة، و.data، والرمز المستهدف جميعها في زمن التشغيل عبر مسح الذاكرة — لذلك يعمل ملف واحد عبر جميع البِنى والتوزيعات.

نموذج التهديد — اقرأ هذا أولاً

هذه أداة بدائية للهروب من العزل (sandbox) / ما بعد الاستغلال، وليست RCE تعتمد فقط على مدخلات عن بُعد.

السيناريوالنتيجة
يستطيع المهاجم بالفعل تنفيذ PHP (قشرة ويب، إلغاء تسلسل، حوض eval) لكنه محاصر بـ disable_functions + open_basedir✅ RCE أصلي (إثبات المفهوم هذا)
يكتفي التطبيق باستدعاء دالة bcmath على مدخلات مستخدم خام، مثل

استدعاء bcmath واحد على مدخلات المهاجم يعطي كتابة صفرية واحدة خارج الحدود عمياء دون أي تغذية راجعة. يتطلب RCE الكامل تنفيذ PHP عشوائيًا لتنسيق الكومة (heap grooming)، وبناء بدائيات القراءة/الكتابة، وتشغيل المُحلِّل — ولا يمكن التعبير عن أيٍّ من ذلك كوسيط دالة. لذا فإن السقف الواقعي للتعرض عبر المدخلات فقط هو حرمان خدمة عن بُعد؛ أما تنفيذ التعليمات البرمجية فيتطلب سياق تنفيذ PHP قائمًا يحرّره إثبات المفهوم هذا من العزل.


الإصدارات المتأثرة

الخلل موجود فقط في bcmath المُعاد كتابته (سلسلة PHP 8.4 / 8.5):

تم التحقق من طرف إلى طرف (uid=0، مع التقاط المخرجات) على PHP 8.4.23 وPHP 8.5.8، بمعمارية amd64، باستخدام الملف نفسه دون تعديل — تخطيط بنية Zend متطابق عبر 8.4 / 8.5.


المتطلبات / الافتراضات

  • لينكس amd64.
  • ملف ثنائي PHP 8.4/8.5 ضمن النطاق القابل للتأثر مع تفعيل bcmath.
  • تعيين ثنائي متصل (Contiguous) (كل توزيعة قياسية / بِنى إنتاجية). ينتقل مسح القاعدة في زمن التشغيل صفحةً صفحة من .text إلى ترويسة ELF؛ وهذا آمن على أي ثنائي بتخطيط متصل. فقط بِنى -z separate-code الاصطناعية ذات الفجوات غير المعيّنة بمقدار 2 ميغابايت لا يمكن حلّها تلقائيًا بمسح أعمى (لم تُشاهَد في الإنتاج).
  • بالنسبة للتسليم عبر الويب، يلزم عزل الطلبات بحيث لا يقتل exit() الخاص بكل طلب الخادم: php-fpm، أو Apache mod_php، أو الخادم المدمج مع PHP_CLI_SERVER_WORKERS>0.

الاستخدام

CLI

root@kitploit:~
php exploit.php "id; uname -a"

الويب (ما بعد الاستغلال، داخل سياق PHP معزول)

انشره مثلًا كـ shell.php، ثم:

root@kitploit:~
GET  /shell.php?cmd=id
POST cmd=id

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


كيف يعمل (بالتفصيل)

  1. التشغيل + التهيئة (groom). رشّ سلاسل نصية بأحجام ثابتة، واصنع فجوة، ثم شغّل bccomp() القابل للاستغلال بحيث تقع الكتابة الصفرية خارج الحدود على عدّاد مراجع zend_string مجاور فقط (مع الحفاظ على الطول).
  2. استخدام بعد التحرير (UAF) ناتج عن عدم تطابق عدّاد المراجع. يتم تحرير السلسلة الضحية قبل أوانها بينما يظل مرجعٌ معلّقًا.
  3. سلسلة ضخمة. يتم استرداد الفتحة المحررة بواسطة كائن؛ يصبح حقل طول السلسلة المعلّقة قيمة هائلة → قراءة/كتابة نسبية فوق الكومة.
  4. قراءة مطلقة. يؤدي zend_reference مزيف (عبر عدم المباشرة) إلى قراءة مطلقة عشوائية آمنة تجاه الأخطاء ولا تلمس أبدًا ترويسة العدّاد المرجعي للهدف.
  5. الحلّ. من مؤشر .text مُسرَّب: تنقّل صفحةً صفحة وصولًا إلى توقيع ELF (القاعدة)، وحلّل ترويسات البرنامج للعثور على .data، ثم امسح .data بحثًا عن zend_function_entry الخاص بـ shell_exec الذي يشير معالجه إلى .text.
  6. استدعاء يعتمد على البيانات فقط. أنشئ zend_class_entry مزيفًا، وfunction_table مضمّنًا بفتحة واحدة (تجزئة صحيحة وسلسلة تصادم منتهية)، و مزيفًا يكون معالجه ؛ أفسد مؤشر الكائن الاستكشافي إلى الكلاس واستدعِ الطريقة. يتم إرجاع المخرجات وطباعتها.

الملفات

  • exploit.php — الاستغلال العام القائم على الذاكرة فقط (سطر أوامر + ويب).

الاعتمادات

  • إثبات المفهوم الأصلي المنشور لـ DoS: boreas37/cve-2026-17544-poc.
  • تقنيات كشف الذاكرة / الاستدعاء القائم على البيانات فقط مستوحاة من أبحاث سابقة في استغلال PHP.

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

مقدَّم لأغراض البحث الأمني والتعليم. المؤلف غير مسؤول عن إساءة الاستخدام. لا تنشره ضد أنظمة غير مخوَّل لاختبارها.

تنزيل الأداة
bccomp($_POST['v'])
❌ DoS / انهيار فقط
فرع PHPقابل للتأثر
7.x، 8.0 – 8.3لا (libbcmath قديم، وbc_str2num مختلف)
8.4.0 – 8.4.23نعم
8.5.0 – 8.5.8نعم
≥ 8.4.24 / ≥ 8.5.9تم التصحيح
zend_string
zend_internal_function
zif_shell_exec