Rünnak on võimalik nginxi konfiguratsioonides, kus PHP-FPM-i edastamine toimub URL-i osade tükeldamisel, kasutades "fastcgi_split_path_info" ja määratledes keskkonnamuutuja PATH_INFO, kuid eelnevalt kontrollimata faili olemasolu "try_files $fastcgi_script_name" abil. käskkiri või "if (!-f $ document_root$fastcgi_script_name)". probleem, sealhulgas
asukoht ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Distributsioonide tõrkeotsingut saate jälgida järgmistel lehtedel:
try_files $fastcgi_script_name =404;
Probleemi põhjuseks on viga failis osutitega manipuleerimisel
Kui käsk fastcgi_split_path_info määrab skripti tee tükeldamise regulaaravaldise abil, mis on tundlik reavahetuse märgi edastamise suhtes (näiteks paljudes näidetes soovitatakse kasutada "^(.+?\.php)(/. *)$"), siis võib ründaja saavutada keskkonnamuutuja PATH_INFO tühja väärtuse kirjutamise. Sel juhul täitmist edasi
Teatud viisil vormindatud URL-i taotlemisel saab ründaja liigutada kursori path_info struktuuri „_fcgi_data_seg” esimesele baidile ja sellele baidile nulli kirjutamine viib kursori „char * pos” varem liikunud mälualale. Järgmisena kutsutav FCGI_PUTENV kirjutab selles mälus olevad andmed üle väärtusega, mida ründaja saab juhtida. Määratud mällu salvestatakse ka teiste FastCGI muutujate väärtused ja nende andmeid kirjutades saab ründaja luua näiva PHP_VALUE muutuja ja saavutada oma koodi täitmise.
Allikas: opennet.ru