"fastcgi_split_path_info" ഉപയോഗിച്ച് URL-ന്റെ ഭാഗങ്ങൾ വേർതിരിച്ച് PATH_INFO എൻവയോൺമെന്റ് വേരിയബിൾ നിർവചിച്ചുകൊണ്ട് PHP-FPM-ലേക്ക് ഫോർവേഡിംഗ് നടത്തുന്ന nginx കോൺഫിഗറേഷനുകളിൽ ആക്രമണം സാധ്യമാണ്, എന്നാൽ ആദ്യം "try_files $fastcgi_script" ഉപയോഗിച്ച് ഫയലിന്റെ നിലനിൽപ്പ് പരിശോധിക്കാതെ തന്നെ. നിർദ്ദേശം അല്ലെങ്കിൽ "if (!-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" ഘടനയുടെ ആദ്യ ബൈറ്റിലേക്ക് പാത്ത്_ഇൻഫോ പോയിന്ററിന്റെ മാറ്റം ഒരു ആക്രമണകാരിക്ക് നേടാനാകും, കൂടാതെ ഈ ബൈറ്റിൽ ഒരു പൂജ്യം എഴുതുന്നത് "char* pos"-ന്റെ ചലനത്തിലേക്ക് നയിക്കും. മുമ്പ് സ്ഥിതിചെയ്യുന്ന മെമ്മറി ഏരിയയിലേക്കുള്ള പോയിന്റർ. അടുത്തതായി വിളിക്കപ്പെടുന്ന FCGI_PUTENV, ആക്രമണകാരിക്ക് നിയന്ത്രിക്കാൻ കഴിയുന്ന ഒരു മൂല്യം ഉപയോഗിച്ച് ഈ മെമ്മറിയിലെ ഡാറ്റയെ പുനരാലേഖനം ചെയ്യും. നിർദ്ദിഷ്ട മെമ്മറി മറ്റ് FastCGI വേരിയബിളുകളുടെ മൂല്യങ്ങളും സംഭരിക്കുന്നു, കൂടാതെ അവരുടെ ഡാറ്റ എഴുതുന്നതിലൂടെ, ഒരു ആക്രമണകാരിക്ക് ഒരു സാങ്കൽപ്പിക PHP_VALUE വേരിയബിൾ സൃഷ്ടിക്കാനും അവയുടെ കോഡിന്റെ നിർവ്വഹണം നേടാനും കഴിയും.
അവലംബം: opennet.ru