O ataque é posible en configuracións de nginx nas que o reenvío a PHP-FPM se realiza separando partes do URL usando "fastcgi_split_path_info" e definindo a variable de ambiente PATH_INFO, pero sen comprobar antes a existencia do ficheiro usando o "try_files $fastcgi_script_name" directiva ou "if (!-f $) raíz_documento$nome_script_fastcgi)". O problema tamén é
localización ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Podes seguir a resolución do problema nos kits de distribución nestas páxinas:
try_files $fastcgi_script_name =404;
O problema é causado por un erro ao manipular os punteiros nun ficheiro
Se a directiva fastcgi_split_path_info especifica dividir a ruta do script usando unha expresión regular sensible á nova liña (por exemplo, moitos exemplos suxiren usar "^(.+?\.php)(/.*)$"), entón un atacante podería asegurarse de que un o valor baleiro escríbese na variable de ambiente PATH_INFO. Neste caso, máis adiante na execución
Ao solicitar un URL formateado dun determinado xeito, un atacante pode conseguir un desprazamento do punteiro path_info ao primeiro byte da estrutura "_fcgi_data_seg" e escribir un cero neste byte levará ao movemento do "char* pos" punteiro a unha área de memoria localizada anteriormente. O seguinte FCGI_PUTENV sobrescribirá os datos desta memoria cun valor que o atacante poida controlar. A memoria especificada tamén almacena os valores doutras variables FastCGI e, ao escribir os seus datos, un atacante pode crear unha variable PHP_VALUE ficticia e lograr a execución do seu código.
Fonte: opennet.ru