ဆာဗာပေါ်တွင် အဝေးထိန်းကုဒ်ကို လုပ်ဆောင်နိုင်စေသည့် php-fpm တွင် အားနည်းချက်

ရရှိနိုင် PHP 7.3.11၊ 7.1.33 နှင့် 7.2.24 တို့၏ မှန်ကန်သော ထုတ်ဝေမှုများ၊ ဖယ်ထုတ်ထားသည်။ ဝေဖန် အားနည်းချက် စနစ်တွင် သင့်ကုဒ်ကို အဝေးမှ လုပ်ဆောင်နိုင်စေမည့် PHP-FPM (FastCGI Process Manager) တိုးချဲ့မှုတွင် (CVE-2019-11043)။ PHP-FPM ကို Nginx နှင့် တွဲဖက်အသုံးပြုသည့် ဆာဗာများကို တိုက်ခိုက်ရန်အတွက် PHP scripts များကို လူသိရှင်ကြားရနိုင်နေပြီဖြစ်သည်။ အလုပ်လုပ်နေတယ် အမြတ်ထုတ်သည်။.

"fastcgi_split_path_info" ကို အသုံးပြု၍ URL ၏အစိတ်အပိုင်းများကို ပိုင်းခြားပြီး PATH_INFO ပတ်၀န်းကျင် variable ကို သတ်မှတ်ခြင်းဖြင့် PHP-FPM သို့ ထပ်ဆင့်ပေးပို့ခြင်းတွင် nginx ဖွဲ့စည်းမှုပုံစံများတွင် တိုက်ခိုက်မှုဖြစ်နိုင်သော်လည်း "try_files $fastcgi_script_name" ကို အသုံးပြု၍ ဖိုင်တည်ရှိမှုကို ဦးစွာစစ်ဆေးခြင်းမပြုဘဲ၊ ညွှန်ကြားချက် သို့မဟုတ် “if (!-f $) document_root$fastcgi_script_name)”။ ပြဿနာလည်း ရှိတယ်။ ပေါ်လာသည်။ NextCloud ပလပ်ဖောင်းအတွက် ကမ်းလှမ်းထားသော ဆက်တင်များတွင်။ ဥပမာအားဖြင့်၊ ကဲ့သို့သောဖွဲ့စည်းပုံများနှင့်အတူ configurations:

တည်နေရာ ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (/ \ PHP) ။ (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}

ဤစာမျက်နှာများရှိ ဖြန့်ဖြူးရေးကိရိယာအစုံတွင် ပြဿနာဖြေရှင်းချက်ကို သင်ခြေရာခံနိုင်သည်- debian, RHEL, Ubuntu ကို, SUSE/openSUSE, FreeBSD, မုတ်, Fedora. ဖြေရှင်းနည်းအနေဖြင့် "fastcgi_split_path_info" လိုင်းနောက်တွင် တောင်းဆိုထားသော PHP ဖိုင်ရှိကြောင်း စစ်ဆေးချက်တစ်ခု ထည့်သွင်းနိုင်သည်-

try_files $fastcgi_script_name =404;

ဖိုင်တစ်ခုရှိ pointers များကို ကိုင်တွယ်ရာတွင် အမှားအယွင်းတစ်ခုကြောင့် ဖြစ်ရခြင်းဖြစ်ပါသည်။ sapi/fpm/fpm/fpm_main.c. ညွှန်ပြချက်ကို သတ်မှတ်သည့်အခါ၊ PATH_INFO ပတ်၀န်းကျင် ကိန်းရှင်၏ တန်ဖိုးသည် PHP script နှင့် ကိုက်ညီသော လမ်းကြောင်းနှင့် ကိုက်ညီသော ရှေ့ဆက်တစ်ခု ပါရှိရမည်ဟု ယူဆပါသည်။
fastcgi_split_path_info လမ်းညွှန်ချက်တွင် လိုင်းအသစ်-အကဲဆတ်သော ပုံမှန်အသုံးအနှုန်းကို အသုံးပြု၍ ဇာတ်ညွှန်းလမ်းကြောင်းကို ပိုင်းခြားသတ်မှတ်ပေးမည်ဆိုပါက (ဥပမာ၊ ဥပမာများစွာသည် "^.+?\.php)(/.*)$" ကို အသုံးပြုရန် အကြံပြုထားသည်)၊ ထို့နောက် တိုက်ခိုက်သူမှ သေချာစေနိုင်သည်။ ဗလာတန်ဖိုးကို PATH_INFO ပတ်၀န်းကျင် ကိန်းရှင်သို့ ရေးထားသည်။ ဒီအမှုမှာ နောက်ထပ် သေဒဏ်ပေးခံရတယ်။ လုပ်သည် path_info[0] ကို သုညသို့ရေးပြီး FCGI_PUTENV ကိုခေါ်ပါ။

အချို့သောနည်းဖြင့် ဖော်မတ်ပြုလုပ်ထားသည့် URL တစ်ခုကို တောင်းဆိုခြင်းဖြင့်၊ တိုက်ခိုက်သူသည် path_info ညွှန်ပြချက်ကို “_fcgi_data_seg” ဖွဲ့စည်းပုံ၏ ပထမဘိုက်သို့ ကူးပြောင်းနိုင်ပြီး၊ ဤဘိုက်သို့ သုညတစ်ခုရေးခြင်းသည် “char* pos” ၏ ရွေ့လျားမှုကို ဦးတည်စေမည်ဖြစ်သည်။ ယခင်တည်ရှိသော မမ်မိုရီဧရိယာသို့ ညွှန်ပြသည်။ FCGI_PUTENV ဟုခေါ်သော နောက်တစ်ခုသည် တိုက်ခိုက်သူထိန်းချုပ်နိုင်သည့်တန်ဖိုးဖြင့် ဤမှတ်ဉာဏ်အတွင်းရှိ ဒေတာကို ထပ်ရေးပါမည်။ သတ်မှတ်ထားသော မှတ်ဉာဏ်သည် အခြားသော FastCGI ကိန်းရှင်များ၏ တန်ဖိုးများကိုလည်း သိမ်းဆည်းထားပြီး ၎င်းတို့၏ အချက်အလက်များကို ရေးသားခြင်းဖြင့်၊ တိုက်ခိုက်သူသည် စိတ်ကူးယဉ်သော PHP_VALUE ကိန်းရှင်တစ်ခုကို ဖန်တီးနိုင်ပြီး ၎င်းတို့၏ကုဒ်ကို အကောင်အထည်ဖော်နိုင်မည်ဖြစ်သည်။

source: opennet.ru

မှတ်ချက် Add