De oanfal is mooglik yn nginx-konfiguraasjes wêryn trochstjoeren nei PHP-FPM wurdt útfierd troch dielen fan 'e URL te skieden mei "fastcgi_split_path_info" en it definiearjen fan de PATH_INFO omjouwingsfariabele, mar sûnder earst it bestean fan it bestân te kontrolearjen mei de "try_files $fastcgi_script_name" rjochtline of de "if (!-f $) document_root$fastcgi_script_name)". It probleem is ek
lokaasje ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Jo kinne de oplossing fan it probleem folgje yn distribúsjekits op dizze siden:
try_files $fastcgi_script_name =404;
It probleem wurdt feroarsake troch in flater by it manipulearjen fan pointers yn in bestân
As de fastcgi_split_path_info-rjochtline spesifisearret it splitsen fan it skriptpaad mei in newline-gefoelige reguliere ekspresje (in protte foarbylden suggerearje bygelyks it brûken fan "^(.+?\.php)(/.*)$"), dan kin in oanfaller soargje dat in lege wearde wurdt skreaun nei de PATH_INFO omjouwingsfariabele. Yn dit gefal, fierder by de útfiering
Troch it oanfreegjen fan in URL op in bepaalde manier opmakke, kin in oanfaller in ferskowing fan 'e path_info-oanwizer berikke nei de earste byte fan 'e "_fcgi_data_seg"-struktuer, en it skriuwen fan in nul nei dizze byte sil liede ta de beweging fan 'e "char * pos" oanwizer nei in earder leit ûnthâld gebiet. De folgjende neamd FCGI_PUTENV sil de gegevens yn dit ûnthâld oerskriuwe mei in wearde dy't de oanfaller kin kontrolearje. It spesifisearre ûnthâld bewarret ek de wearden fan oare FastCGI-fariabelen, en troch har gegevens te skriuwen, kin in oanfaller in fiktive PHP_VALUE-fariabele oanmeitsje en de útfiering fan har koade berikke.
Boarne: opennet.ru