حملو nginx ترتيبن ۾ ممڪن آهي جنهن ۾ PHP-FPM ڏانهن فارورڊنگ "fastcgi_split_path_info" استعمال ڪندي URL جي حصن کي الڳ ڪندي ۽ PATH_INFO ماحوليات جي متغير کي بيان ڪندي ڪيو ويندو آهي، پر پهرين استعمال ڪندي فائل جي وجود کي جانچڻ کان سواءِ "try_files $fastcgi_script_name" هدايت يا "جيڪڏهن (!-f $) document_root$fastcgi_script_name)". مسئلو پڻ آهي
جڳھ ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +؟ \. php) (/.*) $ ؛
fastcgi_param PATH_INFO $fastcgi_path_info؛
fastcgi_pass php: 9000؛
}
توھان ھنن صفحن تي تقسيم کٽ ۾ مسئلي جي حل کي ٽريڪ ڪري سگھو ٿا:
try_files $fastcgi_script_name = 404؛
مسئلو هڪ غلطي جي ڪري پيدا ٿئي ٿو جڏهن هڪ فائل ۾ پوائنٽر کي هٿي وٺندي
جيڪڏهن fastcgi_split_path_info هدايت وضاحت ڪري ٿي اسڪرپٽ جي رستي کي ورهائڻ واري نئين لائين-حساس ريگيولر ايڪسپريشن کي استعمال ڪندي (مثال طور، ڪيترائي مثال استعمال ڪرڻ جي صلاح ڏين ٿا "^(.+?\.php)(/.*)$")، پوء هڪ حملو ڪندڙ کي يقيني بڻائي سگهي ٿو ته هڪ خالي قدر PATH_INFO ماحولياتي متغير ڏانهن لکيل آهي. هن معاملي ۾، اڳتي وڌڻ سان گڏ
هڪ خاص طريقي سان فارميٽ ٿيل URL جي درخواست ڪندي، هڪ حملو ڪندڙ "_fcgi_data_seg" ساخت جي پهرين بائيٽ ڏانهن path_info پوائنٽر جي شفٽ حاصل ڪري سگهي ٿو، ۽ هن بائيٽ ڏانهن صفر لکڻ سان "char* pos" جي حرڪت کي ڏسندي. اڳ ۾ واقع ياداشت واري علائقي ڏانهن اشارو. اڳيون سڏيو ويندو FCGI_PUTENV هن ميموري ۾ ڊيٽا کي اوور رائٽ ڪندو هڪ قدر سان جيڪو حملو ڪندڙ ڪنٽرول ڪري سگهي ٿو. مخصوص ڪيل ياداشت ٻين FastCGI متغيرن جي قدرن کي پڻ محفوظ ڪري ٿي، ۽ انهن جي ڊيٽا کي لکڻ سان، هڪ حملو ڪندڙ هڪ جعلي PHP_VALUE متغير ٺاهي سگهي ٿو ۽ انهن جي ڪوڊ جي عمل کي حاصل ڪري سگهي ٿو.
جو ذريعو: opennet.ru