Shambulio hilo linawezekana katika usanidi wa nginx ambapo usambazaji kwa PHP-FPM unafanywa kwa kutenganisha sehemu za URL kwa kutumia "fastcgi_split_path_info" na kufafanua utofauti wa mazingira wa PATH_INFO, lakini bila kuangalia kwanza uwepo wa faili kwa kutumia "try_files $fastcgi_script_name" maagizo au "ikiwa (!-f $) document_root$fastcgi_script_name)". Tatizo pia ni
eneo ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Unaweza kufuatilia utatuzi wa tatizo katika vifaa vya usambazaji kwenye kurasa hizi:
try_files $fastcgi_script_name =404;
Shida husababishwa na kosa wakati wa kudhibiti viashiria kwenye faili
Ikiwa maagizo ya fastcgi_split_path_info yatabainisha kugawanya njia ya hati kwa kutumia usemi wa kawaida nyeti wa laini mpya (kwa mfano, mifano mingi inapendekeza kutumia "^(+?\.php)(/.*)$"), basi mshambuliaji anaweza kuhakikisha kuwa thamani tupu imeandikwa kwa PATH_INFO utofauti wa mazingira. Katika kesi hii, zaidi pamoja na utekelezaji
Kwa kuomba URL iliyoumbizwa kwa njia fulani, mshambulizi anaweza kufikia mabadiliko ya kiashiria cha path_info hadi baiti ya kwanza ya muundo wa "_fcgi_data_seg", na kuandika sufuri kwa baiti hii kutasababisha kusogezwa kwa "char* pos" pointer kwa eneo la kumbukumbu lililopo hapo awali. Inayofuata iitwayo FCGI_PUTENV itafuta data iliyo katika kumbukumbu hii kwa thamani ambayo mvamizi anaweza kudhibiti. Kumbukumbu iliyoainishwa pia huhifadhi maadili ya anuwai zingine za FastCGI, na kwa kuandika data zao, mshambuliaji anaweza kuunda muundo wa uwongo wa PHP_VALUE na kufikia utekelezaji wa nambari zao.
Chanzo: opennet.ru