PHP-fpm ڪمزوري جيڪا سرور تي ريموٽ ڪوڊ جي عمل جي اجازت ڏئي ٿي

دستياب PHP 7.3.11، 7.1.33 ۽ 7.2.24 جي اصلاحي رليز، جنهن ۾ ختم ڪيو ويو ڪرٽيچسڪايا ڪمزوري (CVE-2019-11043) PHP-FPM (FastCGI پروسيس مئنيجر) ايڪسٽينشن ۾، جيڪو توهان کي اجازت ڏئي ٿو ته توهان جو ڪوڊ ريموٽ طور تي سسٽم تي عمل ڪري. سرورز تي حملو ڪرڻ لاءِ جيڪي PHP-FPM استعمال ڪن ٿا PHP اسڪرپٽ هلائڻ لاءِ نينگڪس سان گڏ، اهو اڳ ۾ ئي عوامي طور تي دستياب آهي ڪارڪن استحصال ڪرڻ.

حملو nginx ترتيبن ۾ ممڪن آهي جنهن ۾ PHP-FPM ڏانهن فارورڊنگ "fastcgi_split_path_info" استعمال ڪندي URL جي حصن کي الڳ ڪندي ۽ PATH_INFO ماحوليات جي متغير کي بيان ڪندي ڪيو ويندو آهي، پر پهرين استعمال ڪندي فائل جي وجود کي جانچڻ کان سواءِ "try_files $fastcgi_script_name" هدايت يا "جيڪڏهن (!-f $) document_root$fastcgi_script_name)". مسئلو پڻ آهي پيش قدمي NextCloud پليٽ فارم لاءِ پيش ڪيل سيٽنگون ۾. مثال طور، جوڙجڪ سان ٺاھ جوڙ جھڙوڪ:

جڳھ ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +؟ \. php) (/.*) $ ؛
fastcgi_param PATH_INFO $fastcgi_path_info؛
fastcgi_pass php: 9000؛
}

توھان ھنن صفحن تي تقسيم کٽ ۾ مسئلي جي حل کي ٽريڪ ڪري سگھو ٿا: ديبين, رڇيل, Ubuntu, SUSE/اوپن سوس, FreeBSD, محراب, بيدل. هڪ ڪم جي طور تي، توهان "fastcgi_split_path_info" لائن کان پوء درخواست ٿيل PHP فائل جي وجود لاء چيڪ شامل ڪري سگهو ٿا:

try_files $fastcgi_script_name = 404؛

مسئلو هڪ غلطي جي ڪري پيدا ٿئي ٿو جڏهن هڪ فائل ۾ پوائنٽر کي هٿي وٺندي sapi/fpm/fpm/fpm_main.c. جڏهن هڪ پوائنٽر کي تفويض ڪيو وڃي، اهو فرض ڪيو ويو آهي ته PATH_INFO ماحول جي متغير جي قيمت ۾ لازمي طور تي هڪ اڳوڻو هوندو جيڪو PHP اسڪرپٽ جي رستي سان ملندو آهي.
جيڪڏهن fastcgi_split_path_info هدايت وضاحت ڪري ٿي اسڪرپٽ جي رستي کي ورهائڻ واري نئين لائين-حساس ريگيولر ايڪسپريشن کي استعمال ڪندي (مثال طور، ڪيترائي مثال استعمال ڪرڻ جي صلاح ڏين ٿا "^(.+?\.php)(/.*)$")، پوء هڪ حملو ڪندڙ کي يقيني بڻائي سگهي ٿو ته هڪ خالي قدر PATH_INFO ماحولياتي متغير ڏانهن لکيل آهي. هن معاملي ۾، اڳتي وڌڻ سان گڏ ڪم پورو ڪيو لکڻ path_info[0] صفر ڏانهن ۽ ڪال ڪندي FCGI_PUTENV.

هڪ خاص طريقي سان فارميٽ ٿيل URL جي درخواست ڪندي، هڪ حملو ڪندڙ "_fcgi_data_seg" ساخت جي پهرين بائيٽ ڏانهن path_info پوائنٽر جي شفٽ حاصل ڪري سگهي ٿو، ۽ هن بائيٽ ڏانهن صفر لکڻ سان "char* pos" جي حرڪت کي ڏسندي. اڳ ۾ واقع ياداشت واري علائقي ڏانهن اشارو. اڳيون سڏيو ويندو FCGI_PUTENV هن ميموري ۾ ڊيٽا کي اوور رائٽ ڪندو هڪ قدر سان جيڪو حملو ڪندڙ ڪنٽرول ڪري سگهي ٿو. مخصوص ڪيل ياداشت ٻين FastCGI متغيرن جي قدرن کي پڻ محفوظ ڪري ٿي، ۽ انهن جي ڊيٽا کي لکڻ سان، هڪ حملو ڪندڙ هڪ جعلي PHP_VALUE متغير ٺاهي سگهي ٿو ۽ انهن جي ڪوڊ جي عمل کي حاصل ڪري سگهي ٿو.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو