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ə
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:
try_files $fastcgi_script_name =404;
Problem fayldakı göstəricilərlə manipulyasiya zamanı xətadan qaynaqlanı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
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