Athari katika php-fpm ambayo inaruhusu utekelezaji wa msimbo wa mbali kwenye seva

Inapatikana matoleo ya marekebisho ya PHP 7.3.11, 7.1.33 na 7.2.24, ambayo kuondolewa muhimu kuathirika (CVE-2019-11043) katika kiendelezi cha PHP-FPM (FastCGI Process Manager), kinachokuruhusu kutekeleza msimbo wako kwenye mfumo ukiwa mbali. Ili kushambulia seva zinazotumia PHP-FPM kwa kushirikiana na Nginx kuendesha hati za PHP, tayari inapatikana kwa umma. mfanyakazi kunyonya.

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 tokea katika mipangilio inayotolewa kwa jukwaa la NextCloud. Kwa mfano, usanidi na miundo kama:

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: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, Arch, Fedora. Kama suluhisho, unaweza kuongeza hakiki ya uwepo wa faili ya PHP iliyoombwa baada ya mstari wa "fastcgi_split_path_info":

try_files $fastcgi_script_name =404;

Shida husababishwa na kosa wakati wa kudhibiti viashiria kwenye faili sapi/fpm/fpm/fpm_main.c. Wakati wa kukabidhi pointer, inachukuliwa kuwa thamani ya PATH_INFO variable ya mazingira lazima iwe na kiambishi awali kinacholingana na njia ya hati ya PHP.
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 kufanyika kuandika path_info[0] hadi sufuri na kupiga simu FCGI_PUTENV.

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

Kuongeza maoni