Уязвимость связки PHP+nginx

Общие вопросы безопасности
Ответить
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2795
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Уязвимость связки PHP+nginx

Сообщение Raven » 06 сен 2010, 19:49

Уязвимости подвержены сайты с возможностью загрузки изображений

Изображение

Background

Во всех HowTo по настройке связки nginx с php-fpm / php-cgi есть похожие строчки:

Код: Выделить всё

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param script_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
} 
Problem Description

Однако если попросить у сервера отдать 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

Код: Выделить всё

location ~ \.php$ {
try_files $fastcgi_script_name =404;
fastcgi_index index.php;
fastcgi_param script_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
} 
это фактически закроет доступ ко всем файлам .php лежащим по пути содержащем точку и /.
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Gen1us2k
Модератор
Модератор
Сообщения: 771
Зарегистрирован: 02 мар 2010, 16:13

Re: Уязвимость связки PHP+nginx

Сообщение Gen1us2k » 07 сен 2010, 22:17

о уязвимости знаю давно... но было лень копипастить
Изображение
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
Ответить

Вернуться в «Разное»