The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Уязвимость php-fpm, позволяющая удалённо выполнить код на се..., opennews (??), 24-Окт-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


50. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от Ilya Indigo (ok), 25-Окт-19, 06:13 
> fastcgi_split_path_info ^(.+?\.php)(/.*)$;

Я недавно перешёл на nginx и не знаю его так хорошо как и Apache, но я сразу отбросил этот костыль, как и cgi.fix_pathinfo, в пользу чёткого задания SCRIPT_FILENAME, а не угадывания его сервером.
fastcgi_param SCRIPT_FILENAME $document_root/index.php;

Ответить | Правка | Наверх | Cообщить модератору

52. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  –1 +/
Сообщение от Аноним (52), 25-Окт-19, 09:05 
держи в курсе - твои васян-сайты очень важны этой планетке. (нет)

К сожалению, все еще существуют безумные разработчики, не видящие смысла весь сайт запихивать целиком в /index.php - начитались, понимаешь, каких-то дурацких книжек про необходимость сегментации проектов, особенно на интерпретируемых языках, а выбить из их голов эти бредни эффективного менеджера не нашлось.

И у них этих файлов бывает два, а то и даже четыре!

Ответить | Правка | Наверх | Cообщить модератору

58. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +1 +/
Сообщение от Ilya Indigo (ok), 25-Окт-19, 09:48 
Держу в курсе Вас и других Васянов, пишущих что PHP # (это слово даже блокировано цензурой опеннета) и даже не бум-бум в программировании.
Чтобы воспроизвести эту, как и все другие уязвимости в PHP это нужно специально и намеренно родится с руками из попы.

Если не используется ЧПУ, то за глаза хватит этих блоков, хоть у Вас 40 разных php-скриптов распиханных по разным директориям.


location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
location / {
    index index.html index.php;
    try_files $uri $uri/ =404;
}

Сайт и не нужно запихивать весь в index.php, но index.php должен быть единой точкой входа сайта.

Ответить | Правка | Наверх | Cообщить модератору

71. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от Григорий Федорович Конин (?), 25-Окт-19, 11:47 
> Если не используется ЧПУ, то за глаза хватит этих блоков

Ну да, это такая редкость чтобы использовались ЧПУ, вообще нигде их нет.

Ответить | Правка | Наверх | Cообщить модератору

73. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  –2 +/
Сообщение от Ilya Indigo (ok), 25-Окт-19, 12:13 
>> Если не используется ЧПУ, то за глаза хватит этих блоков
> Ну да, это такая редкость чтобы использовались ЧПУ, вообще нигде их нет.

Если используется ЧПУ, тогда я тем более проблемы не вижу!
Или в каждом блоке можно без проблем указать SCRIPT_FILENAME.
fastcgi_param SCRIPT_FILENAME path/to/app.php;
Нормального случая где бы в одном location вызывались бы разные скрипты точно нет!

Или, если на сайте единая точка входа path/to/app.php (по нормальному так и должно быть с ЧПУ-сайтами) можно вообще всё прокинуть в Ваш PHP-контроллер и пусть он дальше сам разбирается что нужно дальше подключать, в зависимости от $_SERVER['REQUEST_URI']


location @php {
    fastcgi_pass unix:/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME path/to/app.php;
    include fastcgi_params;
}
location / {
    index index.html index.php;
    try_files $uri $uri/ @php;
}

Опять же не понимаю зачем и кому может понадобится PATH_INFO?

Ответить | Правка | Наверх | Cообщить модератору

89. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +1 +/
Сообщение от OpenEcho (?), 26-Окт-19, 16:32 
Вот эта вот конфигурация сверху - очень большой подарок кулхацкерам, классический пример копи/пасте с "гениальных просторов" интернета...

Не, не в обиду, но почему не подумать о элементарном, - зачем разрешать выполнение пхп сриптов везде начиная от корня ??? Вы правда хотите чтоб в директории upload кто нибудь скинул скрипт и потом выполнил ?

nginx позволяет вложенные location, ну так и вставляйте свой
location ~ \.php$ {...} только в тех директориях где есть ВАШИ(!!!) скрипты

Сысоев как то на конференции говорил, что в nginx метод copy/paste - самый лучший способ избежать ошибок, поэтому не надо пытаться строить конфиги нджикса по принципу програмирования, комбинируя в логически разбросанные локэйшены. nginx - так НЕ РАБОТАЕТ, для того чтобы понимать как применяется конфигурация, нужно понимать фазы, в которых применются определенные директивы и почему они выполняются не по порядку как в конвиге и почему if - is evil...

Know your tool, - don't copy blindly! (c) - народная мудрость

Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

92. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от Аноним (92), 27-Окт-19, 04:01 
> Сысоев как то на конференции говорил, что в nginx метод copy/paste - самый лучший способ избежать ошибок

В nginx встроили  js, чтобы логику с if'ами писать. Можно считать этот шаг признанием предыдущих проблем.

> Know your tool, - don't copy blindly! (c) - народная мудрость

То есть, чтобы заиспользовать if надо прочитать кучу хреновой nginx документации? Ну это не есть плюс технологии.

Народна мудрость гласит "люди не читают документацию".

Ответить | Правка | Наверх | Cообщить модератору

93. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от OpenEcho (?), 27-Окт-19, 18:27 
No comments... :)

Ответить | Правка | Наверх | Cообщить модератору

101. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от Аноним (101), 29-Окт-19, 19:37 
> То есть, чтобы заиспользовать if надо прочитать кучу хреновой nginx документации?

хуже - не документации, а записок углем на чьих-то манжетах, где разжевываются совершенно ненужные детали череззадничной реализации. Ведь это гораздо проще - объяснить,что тут все через анус, и уродливый чреватый трудноуловимыми ошибками при сопровождении конфиг -  твой единственный выбор, чем понять что об.лись и найти силы переделать.

> это не есть плюс технологии.

она - г-но. Живи теперь с этим. Дальше будешь жить с unit, у которого вообще персистентной конфигурации нет - теперь к ошибкам в пятой копипасте добавятся еще ошибки возникшие при попытке на ходу докинуть шестую.

> Народна мудрость гласит "люди не читают документацию".

их никому и не жаль. Пусть купят с поддержкой за 2000 - индус придет,порядок в конфиге наведет. Если разок поперхнется карри и ошибется копипастой - его выпорют, компания принесет извинения. Может даже - глубокие извинения.

Ответить | Правка | К родителю #92 | Наверх | Cообщить модератору

95. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от Ilya Indigo (ok), 28-Окт-19, 00:41 
> Не, не в обиду, но почему не подумать о элементарном, - зачем разрешать выполнение пхп сриптов везде начиная от корня ???

Вы читали сообщение на которое я отвечал?
Цитирую
> К сожалению, все еще существуют безумные разработчики, не видящие смысла весь сайт запихивать целиком в /index.php - начитались, понимаешь, каких-то дурацких книжек про необходимость сегментации проектов, особенно на интерпретируемых языках, а выбить из их голов эти бредни эффективного менеджера не нашлось.
> И у них этих файлов бывает два, а то и даже четыре!

Я вот сам не знаю зачем они так пишут, но для того, чтобы их конфигурация работала я и привёл пример. Сам, естественно, я так не пишу и тоже не понимаю зачем так делают другие.

>  Вы правда хотите чтоб в директории upload кто нибудь скинул скрипт и потом выполнил ?

Видимо Вы не понимаете что корень сайта и документ рут это разные вещи.
У CMS-ников, конечно же, это одно и тоже, но под корнем сайта я понимаю, это директория сайта на сервере, а документ рут - это / то, что видит web-сервер и на нормальных сайтах это разные вещи.
Разрешения я дал именно для документ рут (там, в моём понимании, кроме index.php и статики ничего и быть не должно) а директория uploads, если вы подразумеваете что там должны быть документы, она должна быть за документ рутом и сервер её никак вообще не должен видеть, а отдаваться они должны через php как поток (всегда на загрузку).

> nginx позволяет вложенные location, ну так и вставляйте свой
> location ~ \.php$ {...} только в тех директориях где есть ВАШИ(!!!) скрипты

Вложенные location, да ещё и с вложенными регулярками это то чего в nginx быть вообще не должно!

> Сысоев как то на конференции говорил...

Не думаю что он говорил использовать вложенные location с регулярками.

Вот Валентина Бартенева лучше почитайте:

https://www.opennet.ru/openforum/vsluhforumID3/118512.html#103
location-ы производительнее потому, что префиксное сопоставление позволяет построить дерево и по нему искать. Но это не касается location с регулярными выражениями. Никаких преимуществ перед аналогичными конструкциями с регулярными выражениями у location нет. Во всех случаях основной тормоз - это исполнение регулярного выражения.

https://www.opennet.ru/openforum/vsluhforumID3/118512.html#105
Обычно вся конфигурация сводится к следующим двум location-ам:


location / {
    try_files $uri @php;
}

location @php {
    fastcgi_pass unix:/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME path/to/app.php;
    include fastcgi_params;
}


Всё предельно просто: если файл есть на диске - мы его отдаем, а всё остальное отправляем в приложение. Приложение уже возьмет $_SERVER['REQUEST_URI'] и распарсит как угодно.
Программисты на других ЯП всю дорогу так и делали и только PHP-шники извращаются.
Ответить | Правка | К родителю #89 | Наверх | Cообщить модератору

102. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  –1 +/
Сообщение от Аноним (101), 29-Окт-19, 21:04 
> Видимо Вы не понимаете что корень сайта и документ рут это разные вещи.

видимо, Илюша, ты не только в назначении path info не силен, но мнение имеешь.

> но под корнем сайта я понимаю, это директория сайта на сервере,
> а документ рут - это / то, что видит web-сервер

к твоему сожалению, общепринятая терминология - ровно обратная.
Корень сайта - это про сайт, то что видит клиент. document root - про конфигурацию сервера.

> директория uploads, если вы подразумеваете что там должны быть документы,

он вряд ли что конкретное подразумевает, но, в отличие от тебя, явно не полтора ненужных васян-сайтика админит. И понимает, что там может быть что угодно - у меня вот в одном таком лежит 120терабайт.
Во многих случаях лучше бы ее пехепе никак не видел, чем наоборот.

> она должна быть за документ рутом и сервер её никак вообще не должен
> видеть, а отдаваться они должны через php как поток (всегда на загрузку).

вот поэтому тебя тот сервис админить и не возьмут. Так и останешься ключи подавать.
Потому что ни про sendfile, ни про прочие вещи ты - не, не слышал, давайте все терабайты отдавать через пехепе, ага.
Освоив (с пятого на десятое) молоток - все проблемы рассматриваешь как гвоздь?

ps: отличие в скорости обработки что регексов, что обычных, что вложенных хоть по сто раз locations ты на своих васян-серверах не увидишь никаким наносекундомером. А вот отличие отдачи статики напрямую - иногда отличие между работающим и сдохшим сервисами. Но тебе сюда пока рано, это для взрослых.  Освой пока отвертку, потом перейдешь к плоскогубцам. Токарные станки не для тебя.

Ответить | Правка | Наверх | Cообщить модератору

100. "Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от Аноним (101), 29-Окт-19, 19:17 
> зачем разрешать выполнение пхп сриптов везде начиная от корня ???

разумеется не потому, что в корне они и лежат, ну конечно же, нет.
("проблема" с upload решается отдельным location /upload - вот теперь ты видишь, что он у тебя есть, и отличается от прочих. Еще бы неплохо половину прочих проблем порешать выносом вообще из веб-пространства пхпшных кишок,но не с современными разработчиками.)

> nginx позволяет вложенные location, ну так и вставляйте свой

но они не имеют в нем ни малейшего смысла и только создают путаницу. По ровно той же причине что if is evil. Лучше, если уж вынужден иметь с ним дело, хотя бы избегать лишних.

> Сысоев как то на конференции говорил, что в nginx метод copy/paste -
> самый лучший способ избежать ошибок

что и есть его собственноручная роспись "весь этот механизм - полное г-но, костыль на костыле".

Ответить | Правка | К родителю #89 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру