El ataque es posible en configuraciones de nginx en las que el reenvío en PHP-FPM se realiza dividiendo partes de la URL usando "fastcgi_split_path_info" y definiendo la variable de entorno PATH_INFO, pero sin comprobar primero la existencia del archivo con el "try_files $fastcgi_script_name" directiva o "if (!-f $ document_root$fastcgi_script_name)". problema incluyendo
ubicación ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_passphp:9000;
}
Puede seguir la solución de problemas en distribuciones en estas páginas:
try_files $fastcgi_script_name =404;
El problema se debe a un error al manipular los punteros en el archivo.
Si la directiva fastcgi_split_path_info especifica dividir la ruta al script usando una expresión regular que es sensible a la transmisión del carácter de nueva línea (por ejemplo, en muchos ejemplos se sugiere usar "^(.+?\.php)(/. *)$"), entonces el atacante puede lograr escribir un valor vacío en la variable de entorno PATH_INFO. En este caso, más adelante en la ejecución
Al solicitar una URL formateada de cierta manera, un atacante puede mover el puntero path_info al primer byte de la estructura "_fcgi_data_seg", y escribir cero en este byte moverá el puntero "char * pos" al área de memoria que estaba anteriormente. El FCGI_PUTENV llamado a continuación sobrescribirá los datos en esta memoria con un valor que el atacante pueda controlar. La memoria especificada también almacena los valores de otras variables FastCGI y, al escribir sus datos, el atacante puede crear una variable PHP_VALUE ficticia y lograr la ejecución de su código.
Fuente: opennet.ru