L'attaccu hè pussibule in cunfigurazioni nginx in quale l'invio à PHP-FPM hè realizatu sepandu parti di l'URL usendu "fastcgi_split_path_info" è definendu a variabile d'ambiente PATH_INFO, ma senza prima verificà l'esistenza di u schedariu utilizendu "try_files $fastcgi_script_name" direttiva o "if (!-f $) document_root$fastcgi_script_name)". U prublema hè ancu
locu ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Pudete seguità a risoluzione di u prublema in i kit di distribuzione in queste pagine:
try_files $fastcgi_script_name =404;
U prublema hè causatu da un errore durante a manipulazione di puntatori in un schedariu
Se a direttiva fastcgi_split_path_info specifica a splitting the script path using a newline-sensitive regular expression (per esempiu, parechji esempi suggerenu di utilizà "^(.+?\.php)(/.*)$"), allora un attaccante puderia assicurà chì un valore viotu hè scrittu à a variabile d'ambiente PATH_INFO. In questu casu, più longu l'esekzione
Per dumandà un URL furmatu in un certu modu, un attaccu pò ottene un cambiamentu di l'indicatore path_info à u primu byte di a struttura "_fcgi_data_seg", è scrive un cero à questu byte porta à u muvimentu di u "char * pos" puntatore à una zona di memoria situata prima. U prossimu chjamatu FCGI_PUTENV soprascrive i dati in questa memoria cù un valore chì l'attaccu pò cuntrullà. A memoria specifica guarda ancu i valori di altre variabili FastCGI, è scrivendu e so dati, un attaccu pò creà una variabile PHP_VALUE fittizia è ottene l'esekzione di u so codice.
Source: opennet.ru