Однако если попросить у сервера отдать example.com/1px.gif/test.php, то URI примет вид 1px.gif/test.php что подойдёт под location \.php$, а script_FILENAME станет равным /scripts/1px.gif/test.php.
Далее, если cgi.fix_pathinfo == 1 (по дефолту), то script_FILENAME станет равным /scripts/1px.gif, а PATH_INFO будет равен test.php
В итоге php интерпретатор обработает /scripts/1px.gif. То есть,
Impact
Любой пользователь будет иметь возможность заливать файлы на сервер (например, аватары) то создав особенное изображение, которое будет одновременно проходить валидацию размеров GD и исполняться php интерпретатором, будет иметь права на исполнение произвольного кода на сервере с правами php процесса.
Workaround
Дописываем в php.ini
Код:
cgi.fix_pathinfo=0
или же менее предпочитаемый, дописываем в nginx.conf