Serverdə uzaqdan kod icra etməyə imkan verən PHP-fpm zəifliyi

Mövcud PHP 7.3.11, 7.1.33 və 7.2.24-ün düzəldici buraxılışları aradan qaldırıldı kritiческая zəiflik (CVE-2019-11043) kodunuzu sistemdə uzaqdan icra etməyə imkan verən PHP-FPM (FastCGI Proses Meneceri) uzantısında. PHP skriptlərini işlətmək üçün Nginx ilə birlikdə PHP-FPM-dən istifadə edən serverlərə hücum etmək üçün o, artıq ictimaiyyətə açıqdır. işçi istismar etmək.

Hücum PHP-FPM-ə yönləndirmənin “fastcgi_split_path_info” istifadə edərək URL hissələrini ayırmaqla və PATH_INFO mühit dəyişənini təyin etməklə, lakin əvvəlcə “try_files $fastcgi_script_name” istifadə edərək faylın mövcudluğunu yoxlamadan həyata keçirilən nginx konfiqurasiyalarında mümkündür. direktiv və ya “if (!-f $) document_root$fastcgi_script_name)”. Problem həm də görünür NextCloud platforması üçün təklif olunan parametrlərdə. Məsələn, belə strukturlarla konfiqurasiyalar:

yer ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}

Problemin həllini bu səhifələrdə paylama dəstlərində izləyə bilərsiniz: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, tağ, Fedora. Çözüm olaraq, “fastcgi_split_path_info” sətirindən sonra tələb olunan PHP faylının mövcudluğu üçün yoxlama əlavə edə bilərsiniz:

try_files $fastcgi_script_name =404;

Problem fayldakı göstəricilərlə manipulyasiya zamanı xətadan qaynaqlanır sapi/fpm/fpm/fpm_main.c. Göstərici təyin edilərkən güman edilir ki, PATH_INFO mühit dəyişəninin dəyəri PHP skriptinə gedən yola uyğun gələn prefiksdən ibarət olmalıdır.
fastcgi_split_path_info direktivi yeni sətirə həssas müntəzəm ifadədən istifadə edərək skript yolunun bölünməsini müəyyən edirsə (məsələn, bir çox nümunələr "^(.+?\.php)(/.*)$" istifadə etməyi təklif edir), onda təcavüzkar əmin ola bilər ki, boş dəyər PATH_INFO mühit dəyişəninə yazılır. Bu vəziyyətdə, icra boyunca daha da həyata keçirilən path_info[0] sıfıra yazmaq və FCGI_PUTENV çağırmaq.

Müəyyən şəkildə formatlanmış URL tələb etməklə təcavüzkar path_info göstəricisinin “_fcgi_data_seg” strukturunun birinci baytına keçməsinə nail ola bilər və bu bayta sıfır yazmaq “char* pos”un hərəkətinə gətirib çıxaracaq. əvvəllər yerləşdirilmiş yaddaş sahəsinə göstərici. Növbəti adlanan FCGI_PUTENV bu yaddaşdakı məlumatları təcavüzkarın idarə edə biləcəyi dəyərlə əvəz edəcək. Göstərilən yaddaş digər FastCGI dəyişənlərinin dəyərlərini də saxlayır və onların məlumatlarını yazmaqla təcavüzkar uydurma PHP_VALUE dəyişəni yarada və kodunun icrasına nail ola bilər.

Mənbə: opennet.ru

Добавить комментарий