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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2019-11043 — CVE-2019-11043 PHP تنفيذ التعليمات البرمجية عن بُعد | Kitploit
أدوات/GitHubGitHub/shadow-horse/cve-2019-11043
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubshadow-horse/cve-2019-11043

cve-2019-11043

CVE-2019-11043 PHP تنفيذ التعليمات البرمجية عن بُعد

عرض المستودع
11منذ 6 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

ثغرة تنفيذ التعليمات البرمجية عن بُعد في PHP (CVE-2019-11043)

1. الخلفية

في 26 سبتمبر، أصدر المسؤولون عن PHP إعلانًا عن الثغرة، حيث يشير إلى أن الخوادم التي تستخدم Nginx + php-fpm، في بعض التكوينات، توجد ثغرة تنفيذ تعليمات برمجية عن بُعد. وهذا التكوين مستخدم على نطاق واسع، مما يشكل خطرًا كبيرًا.

تم الكشف عن PoC للثغرة في 22 أكتوبر، وأصدرت وسائل الإعلام الأمنية المحلية تحذيرًا في الوقت المناسب.

2. وصف الثغرة

عند معالجة طلب يحتوي على %0a في Nginx، يؤدي fastcgi_split_path_info إلى جعل PATH_INFO فارغًا بسبب مواجهة حرف السطر الجديد \n. وعند معالجة PATH_INFO فارغًا في php-fpm، يوجد عيب منطقي. يمكن للمهاجم من خلال البناء والاستغلال الدقيقين أن يؤدي إلى تنفيذ تعليمات برمجية عن بُعد.

الخوادم التي تستخدم Nginx + php-fpm، عند استخدام التكوين التالي، قد تكون عرضة لثغرة تنفيذ التعليمات البرمجية عن بُعد.

root@kitploit:~
 location ~ [^/]\.php(/|$) {

    fastcgi_split_path_info ^(.+?\.php)(/.*)$;

    fastcgi_param PATH_INFO       $fastcgi_path_info;

    fastcgi_pass   php:9000;

    ...
}

3. الحل

دون التأثير على الأعمال العادية، قم بحذف التكوين التالي من ملف تكوين Nginx:

root@kitploit:~
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO       $fastcgi_path_info;

4. PoC المنشور على GitHub

github: https://github.com/neex/phuip-fpizdam

يستغل هذا PoC تحسينًا في متغير FastCGI _fcgi_data_seg، وهذا التحسين موجود فقط في PHP 7، لذا فإن الاستغلال المنشور يعمل فقط على PHP 7، أما على PHP 5 فيحتاج إلى استغلال آخر ليعمل.

5. إعادة إنتاج الثغرة

1. تكوين Nginx + PHP-FPM (PHP 7)

قم بتكوين البيئة، وإعداد nginx + php-fpm، ثم تحقق من أن العملية فعالة.

  1. تنزيل PHP 7 وفك الضغط والدخول إلى المجلد

    root@kitploit:~
     wget -c http://cn2.php.net/distributions/php-7.2.4.tar.gz
     tar -xzvf php-7.2.4.tar.gz
    
  2. تثبيت حزم التبعية للضغط و SSL وما يتعلق بها

    root@kitploit:~
     yum install -y libxml2*
     yum install -y openssl*
     yum install -y libcurl*
     yum install -y libjpeg*
     yum install -y libpng*
     yum install -y freetype*
     yum install -y libmcrypt*
    
  3. تكوين وترجمة الكود المصدري

    root@kitploit:~
     ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo
    
     make & make install
    
  4. تكوين php-fpm، إذا كان هناك عدة إصدارات PHP، يمكن تغيير المنفذ من 9000 إلى 9001

    root@kitploit:~
     تعديل ملف تكوين php-fpm:
     $ cd /usr/local/php/etc
     $ cp php-fpm.conf.default php-fpm.conf
     $ vi php-fpm.conf
     إزالة الفاصلة المنقوطة أمام pid = run/php-fpm.pid
     $ cd php-fpm.d
     $ cp www.conf.default www.conf  (تغيير المنفذ)
     $ vi www.conf
     تغيير المستخدم والمجموعة إلى مستخدم غير root
    
  5. ./php-fpm

2. تكوين تحليل PHP المعرض للثغرة

أضف التكوين التالي في nginx.conf:

root@kitploit:~
location ~ [^/]\.php(/|$) {
        root /opt/apache/www;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO  $fastcgi_path_info;
        fastcgi_pass   127.0.0.1:9001;
        include     fastcgi_params;
     }

أعد تشغيل nginx

  1. تثبيت Go وترجمة كود PoC

    root@kitploit:~
     go get github.com/neex/phuip-fpizdam (يتم تنزيل الملفات في مجلد src الخاص بـ go)
    
     go build github.com/neex/phuip-fpizdam (المسار الكامل، سيتم إنشاء ملف التشغيل في الدليل الحالي)
    
  2. تشغيل PoC

    root@kitploit:~
     ./phuip-fpizdam http://website.com/index.php
     ./phuip-fpizdam http://website.com/index.php?a=command
    

[لسوء الحظ، هناك مشكلة في تكوين البيئة، فشل التحقق]

root@kitploit:~
	2019/10/29 01:13:19 Detect() returned error: no qsl candidates found, invulnerable or something wrong

4. بيئة التحقق المتكاملة باستخدام Docker

الرابط الأصلي: https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043

  1. تنزيل ملفات مشروع Docker

  2. تشغيل حاوية Docker باستخدام docker-compose up -d

  3. تشغيل البرنامج، يعرض نجاح التنفيذ، استخدام الثغرة لعرض نتيجة تنفيذ الأمر 'id'

  4. إيقاف خدمة Docker docker ps docker stop id

تنزيل الأداة