Posible ang pag-atake sa mga configuration ng nginx kung saan ang pagpapasa sa PHP-FPM ay isinasagawa sa pamamagitan ng paghihiwalay ng mga bahagi ng URL gamit ang "fastcgi_split_path_info" at pagtukoy sa PATH_INFO environment variable, ngunit nang hindi muna sinusuri ang pagkakaroon ng file gamit ang "try_files $fastcgi_script_name" direktiba o ang "kung (!-f $) document_root$fastcgi_script_name)". Ang problema rin
lokasyon ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Maaari mong subaybayan ang paglutas ng problema sa mga distribution kit sa mga pahinang ito:
try_files $fastcgi_script_name =404;
Ang problema ay sanhi ng isang error kapag nagmamanipula ng mga pointer sa isang file
Kung ang fastcgi_split_path_info directive ay tumutukoy sa paghahati sa script path gamit ang isang newline-sensitive na regular na expression (halimbawa, maraming mga halimbawa ang nagmumungkahi ng paggamit ng "^(.+?\.php)(/.*)$"), pagkatapos ay masisiguro ng isang attacker na ang isang ang walang laman na halaga ay nakasulat sa PATH_INFO environment variable. Sa kasong ito, higit pa kasama ang pagpapatupad
Sa pamamagitan ng paghiling ng URL na naka-format sa isang tiyak na paraan, maaaring makamit ng isang attacker ang paglipat ng path_info pointer sa unang byte ng istrukturang "_fcgi_data_seg", at ang pagsulat ng zero sa byte na ito ay hahantong sa paggalaw ng "char* pos" pointer sa isang dati nang matatagpuan na lugar ng memorya. Ang susunod na tinatawag na FCGI_PUTENV ay o-overwrite ang data sa memorya na ito ng isang halaga na makokontrol ng umaatake. Ang tinukoy na memorya ay nag-iimbak din ng mga halaga ng iba pang mga variable ng FastCGI, at sa pamamagitan ng pagsulat ng kanilang data, ang isang umaatake ay maaaring lumikha ng isang kathang-isip na PHP_VALUE variable at makamit ang pagpapatupad ng kanilang code.
Pinagmulan: opennet.ru