Mae'r ymosodiad yn bosibl mewn ffurfweddau nginx lle mae anfon ymlaen i PHP-FPM yn cael ei wneud trwy wahanu rhannau o'r URL gan ddefnyddio “fastcgi_split_path_info” a diffinio'r newidyn amgylchedd PATH_INFO, ond heb wirio bodolaeth y ffeil yn gyntaf gan ddefnyddio'r “try_files $ fastcgi_script_name” cyfarwyddeb neu'r "os (!-f $) document_root$ fastcgi_script_name)". Mae'r broblem hefyd
lleoliad ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \ php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Gallwch olrhain datrysiad y broblem mewn citiau dosbarthu ar y tudalennau hyn:
try_files $ fastcgi_script_name = 404;
Achosir y broblem gan wall wrth drin awgrymiadau mewn ffeil
Os yw'r gyfarwyddeb fastcgi_split_path_info yn pennu hollti'r llwybr sgript gan ddefnyddio mynegiant rheolaidd newydd-sensitif (er enghraifft, mae llawer o enghreifftiau'n awgrymu defnyddio "^(.+?\.php)(/.*)$"), yna gallai ymosodwr sicrhau bod gwerth gwag wedi'i ysgrifennu i'r newidyn amgylchedd PATH_INFO. Yn yr achos hwn, ymhellach ar hyd y gweithredu
Trwy ofyn am URL wedi'i fformatio mewn ffordd benodol, gall ymosodwr symud y pwyntydd path_info i beit cyntaf y strwythur “_fcgi_data_seg”, a bydd ysgrifennu sero i'r beit hwn yn arwain at symud y “char * pos” pwyntydd i ardal cof a leolwyd yn flaenorol. Bydd y nesaf o'r enw FCGI_PUTENV yn trosysgrifo'r data yn y cof hwn gyda gwerth y gall yr ymosodwr ei reoli. Mae'r cof penodedig hefyd yn storio gwerthoedd newidynnau FastCGI eraill, a thrwy ysgrifennu eu data, gall ymosodwr greu newidyn PHP_VALUE ffug a chyflawni ei god.
Ffynhonnell: opennet.ru