The OpenNET Project / Index page

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



"Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Уязвимость php-fpm, позволяющая удалённо выполнить код на се..."  +/
Сообщение от opennews (??), 24-Окт-19, 20:10 
Доступны корректирующие релизы PHP 7.3.11, 7.1.33 и 7.2.24, в которых устранена критическая уязвимость (CVE-2019-11043) в расширении PHP-FPM (менеджер процессов FastCGI), позволяющая удалённо выполнить свой код в системе. Для атаки на серверы, использующие для запуска PHP-скриптов PHP-FPM в связке с Nginx, уже публично доступен рабочий эксплоит...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=51749

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

Оглавление

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

1. Сообщение от Аноним (1), 24-Окт-19, 20:10   –32 +/
Кто-то ещё php использует?!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #3, #17

2. Сообщение от анонимус (??), 24-Окт-19, 20:14   +7 +/
да
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

3. Сообщение от Аноним (3), 24-Окт-19, 20:14   +12 +/
Более 80% сайтов
https://haydenjames.io/80-percent-web-powered-by-php/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #7, #9, #36, #54

4. Сообщение от Аноним (49), 24-Окт-19, 20:32   +/
то есть теперь сторонний код можно запускать не только через phar://? Это здорово.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #12

5. Сообщение от Аноним (16), 24-Окт-19, 20:34   –2 +/
VestaCP пора ломать
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

6. Сообщение от Аноним (16), 24-Окт-19, 20:35   +/
# grep -R fastcgi_path_info /usr/local/vesta/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

7. Сообщение от Аноним (7), 24-Окт-19, 20:46   –5 +/
>80%

в 2000 году?

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

8. Сообщение от Darth Revan (ok), 24-Окт-19, 20:46   +6 +/
https://salsa.debian.org/nginx-team/nginx/blob/buster/debian...
Использующие /etc/nginx/snippets/fastcgi-php.conf из Debian, существующий с 2014-го года, проблеме не подвержены.
Ответить | Правка | Наверх | Cообщить модератору

9. Сообщение от Аноним (1), 24-Окт-19, 20:46   –5 +/
Большинство ошибается.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #15

10. Сообщение от Аноним (16), 24-Окт-19, 20:48   +2 +/
В nginx wiki ubuntu есть еще одна уязвимость связанная с localhost

там по дефолту смотрит в /var/www

а сайты обычно кладут в подкаталог

curl -H 'Host: localhost' и скачиваем все сорцы школоты

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24, #33, #44

12. Сообщение от OpenEcho (?), 24-Окт-19, 20:54   +2 +/
Удачи !


location ~* [^/]\.php(/|$) {
  fastcgi_split_path_info ^(.+?\.php)(/.*)$;
  if (!-f $document_root$fastcgi_script_name) {
    return 404 "<!doctyle html><div style="font-size:800%;text-align:center;">🖕</div>";
  }

...
}


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #13, #14

13. Сообщение от Аноним (49), 24-Окт-19, 20:56   +/
Это запрещает выполнение 3rd-party-кода из phar://?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #16, #19

14. Сообщение от Аноним (16), 24-Окт-19, 20:56   +/
только mime забыл изменить с бинарного
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #21

15. Сообщение от Аноним (15), 24-Окт-19, 20:56   +1 +/
нет
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

16. Сообщение от Аноним (16), 24-Окт-19, 20:58   +/
https://snuffleupagus.readthedocs.io/config.html#whitelist-o...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

17. Сообщение от OpenEcho (?), 24-Окт-19, 21:03   +3 +/
Просвяти плыз заблудших, что рекомендовать юзерам в замену пыха?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #23, #27

18. Сообщение от Аноним (18), 24-Окт-19, 21:04   +9 +/
В эксплоите есть забавные моменты: https://github.com/neex/phuip-fpizdam/blob/d43b788a65f83ba6f...

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20, #40

19. Сообщение от OpenEcho (?), 24-Окт-19, 21:05   +1 +/
Чукча писатель ?

> то есть теперь сторонний код можно запускать ^^^не только через phar://^^^ ?

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

20. Сообщение от Darth Revan (ok), 24-Окт-19, 21:08   +3 +/
С таким названием ничего удивительного %).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

21. Сообщение от OpenEcho (?), 24-Окт-19, 21:11   +/
Просвяти, - а то не понятна глубина мысли
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #22

22. Сообщение от Аноним (16), 24-Окт-19, 21:13   +/
Вместо отображения файла скачает поток

default_type application/octet-stream;

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #25

23. Сообщение от 123 (??), 24-Окт-19, 21:22   –12 +/
Пихон.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #26, #62

24. Сообщение от Anduyemail (?), 24-Окт-19, 21:23   +/
ссылочку плз
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #28, #29

25. Сообщение от OpenEcho (?), 24-Окт-19, 21:24   +1 +/
Телепатия не удалась :)

default_type text/plain;

И вообще не понятно к чему это, вместо ... там еще есть что почитать ;)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #86

26. Сообщение от OpenEcho (?), 24-Окт-19, 21:26   +1 +/
Скорость не пробовали сравнивать ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #34

27. Сообщение от Аноним (27), 24-Окт-19, 21:39   –10 +/
Ноду конечно же
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #31, #32

28. Сообщение от Аноним (16), 24-Окт-19, 21:43   +/
https://help.ubuntu.ru/wiki/nginx-phpfpm#%D0%BD�...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

29. Сообщение от Аноним (16), 24-Окт-19, 21:44   +/
https://help.ubuntu.ru/wiki/nginx-phpfpm#настройка_nginx
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #30

30. Сообщение от Аноним (16), 24-Окт-19, 21:45   +/
Корневая директория сайта работающего на данном сервере

    root            /var/www;

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

31. Сообщение от Евгений (??), 24-Окт-19, 21:46   +11 +/
Джаваскрипт ещё большее гавно, чем пхп
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #48, #84

32. Сообщение от OpenEcho (?), 24-Окт-19, 21:46   +/
Повторюсь и здесь: "A cкорость не пробовали сравнивать ?"

И чем оно лучше чем пых ?

>Notable breakages
>
>   In March 2016, npm attracted press attention[5] after a package called left-pad, which was a >dependency of many popular JavaScript packages, was unpublished as the result of a naming >dispute.[6] Although the package was republished 3 hours later,[7] it caused widespread >disruption, leading npm to change its policies regarding unpublishing to prevent a similar event >in the future.[8]
>    In February 2018, an issue was discovered in version 5.7.0 in which running sudo npm on Linux >systems would change the ownership of system files, permanently breaking the operating system.[9]
>    In July 2018, the npm credentials of a maintainer of the popular eslint-scope package were >compromised resulting in a malicious release of eslint-scope, version 3.7.2. The malicious code >copies the npm credentials of the machine running eslint-scope and uploads them to the >attacker.[10]
>    In November 2018, it was discovered that a malicious package had been added as a dependency >to version 3.3.6 of the popular package event-stream. The malicious package, called flatmap->stream, contained an encrypted payload that steals bitcoins from certain applications. >npm administrators responded by removing the offending package.[11][12]

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #47

33. Сообщение от OpenEcho (?), 24-Окт-19, 21:57   +1 +/
Пугает наличие кучи "rewrite" директив к конфигах нджинкса наводящие на не хорошие мысли у этой вики...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

34. Сообщение от zzz (??), 24-Окт-19, 22:02   +7 +/
>Скорость

Глупость какая-то в 2к19-ом. На первом месте - стильность, модность, молодежность.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #43

35. Сообщение от Онаним (?), 24-Окт-19, 22:26   –9 +/
nginx is shit, we know it
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #37, #38

36. Сообщение от anonn (?), 24-Окт-19, 22:35   –2 +/
большинство из них - сайты визитки одностраничники
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #46, #55

37. Сообщение от Григорий Федорович Конин (?), 24-Окт-19, 22:43   +2 +/
> Проблема вызвана ошибкой при манипуляции с указателями в файле sapi/fpm/fpm/fpm_main.c.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35

38. Сообщение от OpenEcho (?), 24-Окт-19, 23:12   +1 +/
Who are those - "we" ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #39

39. Сообщение от Звукорежиссёр (?), 24-Окт-19, 23:25   +1 +/
звучит песня "we are the world, we are the children"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

40. Сообщение от Аноним (40), 25-Окт-19, 00:34   +2 +/
Ёпрст, автор-то Электроник. ))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

41. Сообщение от хотел спросить (?), 25-Окт-19, 00:44   +/
There must be a PATH_INFO variable assignment via statement fastcgi_param PATH_INFO $fastcgi_path_info;. At first, we thought it is always present in the fastcgi_params file, but it's not true.

CentOS 7

если я правильно помню, то это дефолтовый конфиг
проверьте свои дистры на всякий


fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;


PATH_INFO там нет... и это радует

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

43. Сообщение от OpenEcho (?), 25-Окт-19, 02:06   +1 +/
> Глупость какая-то в 2к19-ом. На первом месте - стильность, модность, молодежность.

К великому сожалению... Вы - правы

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

44. Сообщение от Аноним (44), 25-Окт-19, 02:17   +/
>> еще

насчёт описанной в статье траблы, там же есть try_files перед split_path_info

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #70

46. Сообщение от OpenEcho (?), 25-Окт-19, 02:32   +7 +/
> большинство из них - сайты визитки одностраничники

Эти что ли ?

    Facebook
    Yahoo!
    Wikipedia
    WordPress
    Tumblr
    MailChimp
    Flickr
    Digg

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #49, #63

47. Сообщение от Аноним (27), 25-Окт-19, 03:15   –2 +/
А ты пробовал? Или только на leftpad онанировать умеем?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #51, #64

48. Сообщение от Аноним (27), 25-Окт-19, 03:16   +/
Ну не пиши на говне, возьми другой яп
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

49. Сообщение от Аноним (49), 25-Окт-19, 04:32   +1 +/
> > > > Кто-то ещё php использует?!
> > > Более 80% сайтов
> > большинство из них - сайты визитки одностраничники
> Эти что ли ?
> Facebook
> [...]
> Digg

Я так понимаю, это исчерпывающий список большинства сайтов в интернете?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #65, #74

50. Сообщение от 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

51. Сообщение от Аноним (49), 25-Окт-19, 08:42   +/
Я всем говарил :вспомнити npm leftpad и что Js быт не должно . Но вам как горохи об-стену
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50 Ответы: #58

54. Сообщение от Тортик с кремом (?), 25-Окт-19, 09:25   +/
Читай внимательно, там дата есть
December 15, 2017 by Hayden James, in Blog Linux
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

55. Сообщение от Аноним (55), 25-Окт-19, 09:25   +1 +/
> большинство из них - сайты визитки одностраничники

На одностраничниках как правило нет PHP

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #67

56. Сообщение от Аноним (56), 25-Окт-19, 09:28   +/
Аффтар хорош: помнится, он ещё в 2017-ом сношал баг-баунти программы у видеохостингов, эксплуатируя ffmpeg и в хвост, и в гриву.
Ответить | Правка | Наверх | Cообщить модератору

58. Сообщение от Ilya Indigo (ok), 25-Окт-19, 09:48   +1 +/
Держу в курсе Вас и других Васянов, пишущих что 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ообщить модератору
Родитель: #52 Ответы: #71, #89

59. Сообщение от Ilya Indigo (ok), 25-Окт-19, 09:57   –1 +/
А с чего ей там вообще быть?
PATH_INFO - это костыль для определения SCRIPT_FILENAME, на каких-то неведомых серверах с неведомой конфигурацией. Сама по себе она никому и не нужна.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41 Ответы: #83

60. Сообщение от BrainFucker (ok), 25-Окт-19, 09:57   –1 +/
То есть в связке Apache + PHP-FPM не воспроизводится?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #61

61. Сообщение от Нанобот (ok), 25-Окт-19, 10:17   +/
В новости об этом ничего не сказано, скорее всего тоже должно работать, просто никто пока не потрудился эксплоит сделать и расшарить
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60

62. Сообщение от VEGemail (ok), 25-Окт-19, 10:40   +2 +/
Вы предлагаете вместо одного из самых быстрых скриптовых языков использовать один из самых медленных. Не надо так. На планете и так слишком много медленного кода.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

63. Сообщение от anonn (?), 25-Окт-19, 10:42   –2 +/
уж гугл то точно не на пхп

То что ты описал это единственные крупные ребята кто пхп действительно поддерживает.
Остальные его вертят для небольших сайтов из-за того что CMS готовые есть и разрабов завались. Именно отсюда статистика в 99%.

Если взять среди компаний-гигантов выборку по nodejs, php, go, c++, python, то получишь примерно одинаковый список по каждому из.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #66

64. Сообщение от OpenEcho (?), 25-Окт-19, 10:47   +/
> А ты пробовал?

Не пробывал бы, тогда бы и не писал... логика где?


> Или только на leftpad онанировать умеем?

А при чем здесь leftpad, если разговор о том, чем заменить PHP ???


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47 Ответы: #68

65. Сообщение от OpenEcho (?), 25-Окт-19, 11:01   +/
> Я так понимаю, это исчерпывающий список большинства сайтов в интернете?

Я привел конкретные доказательства, который каждый может перепроверить...

И в чем вообще "криминал" с большинством "сайты визитки одностраничники" ?

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

66. Сообщение от OpenEcho (?), 25-Окт-19, 11:15   +1 +/
> Остальные его вертят для небольших сайтов из-за того что CMS готовые есть
> и разрабов завались. Именно отсюда статистика в 99%.

Так в этом то и есть ответ на оригинальный вопрос "Кто-то ещё php использует?!" в этой ветке

> Если взять среди компаний-гигантов выборку по nodejs, php, go, c++, python, то
> получишь примерно одинаковый список по каждому из.

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

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

67. Сообщение от OpenEcho (?), 25-Окт-19, 11:21   +2 +/
>> большинство из них - сайты визитки одностраничники
> На одностраничниках как правило нет PHP

К сожалению большинству "строителям" интернета даже одностранички влом писать вручную или хотя бы заюзать тот же hugo чтоб сваять статику, так нет же, им проще влепить вордпресс даже для таких целей...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55 Ответы: #75

68. Сообщение от Аноним (68), 25-Окт-19, 11:35   +/
>Не пробывал бы, тогда бы и не писал...

ну так удиви нас результатами

>А при чем здесь leftpad, если разговор о том, чем заменить PHP ???

ты же сам его притянул?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #72

69. Сообщение от Анонимemail (69), 25-Окт-19, 11:38   –2 +/
Я правильно понимаю, что если сделать так, то эксплойт не страшен?

fastcgi_split_path_info  ^([^\n\r]+\.php)(/[^\n\r]+)$;

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

70. Сообщение от OpenEcho (?), 25-Окт-19, 11:41   +/
>>> еще
> насчёт описанной в статье траблы, там же есть try_files перед split_path_info

try_files сбрасывает переменную PATH_INFO(!!!), поэтому либо надо запоминать контент PATH_INFO в другой переменной перед вызовом try_files и подсовывать сохранненый PATH_INFO как
fastcgi_param PATH_INFO $my_saved_path_info;
или проверять наличие физического файла с
if (!-f $document_root$fastcgi_script_name)

https://trac.nginx.org/nginx/ticket/321

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #77, #85

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #73

72. Сообщение от OpenEcho (?), 25-Окт-19, 11:49   +/
>ну так удиви нас результатами

А тебя в гугле забанили что ли?

>>А при чем здесь leftpad, если разговор о том, чем заменить PHP ???
>ты же сам его притянул?

Слушай, перечитай еще раз, я не гнал на ноду, a привел выдержку, говорящую о том, что нода тоже не панацея для замены пыха, как впрочем любой другой язык. Достигнув такой же популярности как пых, в любом языке будут находить массу дыр, ибо лакомый кусок

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

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

Если используется ЧПУ, тогда я тем более проблемы не вижу!
Или в каждом блоке можно без проблем указать 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ообщить модератору
Родитель: #71

74. Сообщение от Ананнимас (?), 25-Окт-19, 12:41   +1 +/
Открываем hh и смотрим вакансии. похапе на бекэнде и пару вкраплений смузихлебов.
Открываем любую фриланс биржу - сплошные вордпресы с битриксами  (если у нас) и джумлами с опенкартом.

А вот где поделия на ноде?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #76

75. Сообщение от Ананнимас (?), 25-Окт-19, 12:48   +/
потому как есть куча плагинов, магазинов, галерей и наконец скинов.
юзерам хочемтся все в один клик делать.
а если еще вспомнить seo хрень, которую на себя берут те же плагины, руками там совсем грустно будет. А без правльных, угодных гуглу, тегов и правльной разметки будет сложо засветиться в поиске.

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

76. Сообщение от Аноним (49), 25-Окт-19, 13:01   –3 +/
1 488 вакансий «php» ( https://hh.ru/search/vacancy?area=1&st=searchVacancy&text=php )
2 915 вакансий «python» ( https://hh.ru/search/vacancy?area=1&st=searchVacancy&text=py... )

где твой бог теперь?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74 Ответы: #78

77. Сообщение от Аноним (77), 25-Окт-19, 14:53   +/
ну так если try_files вызывется до path_info то это не проблема и в вики path_info сохраняется через промежуточную преременную
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70 Ответы: #80

78. Сообщение от Ананнимас (?), 25-Окт-19, 15:11   +1 +/
> 1 488 вакансий «php» ( https://hh.ru/search/vacancy?area=1&st=searchVacancy&text=php
> )
> 2 915 вакансий «python» ( https://hh.ru/search/vacancy?area=1&st=searchVacancy&text=py...
> )
> где твой бог теперь?

Сам-то вакансии смотрел? Там к вебу мало что имеет отношение.

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

79. Сообщение от KonstantinB (ok), 25-Окт-19, 15:28   +/
О, этот многострадальный код - это несколько модифицированная копипаста из древнего CGI sapi, написано сто лет назад.

Похоже, в CGI та же уязвимость:
https://github.com/php/php-src/blob/master/sapi/cgi/cgi_main...

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

80. Сообщение от OpenEcho (?), 25-Окт-19, 16:39   +/
> ну так если try_files вызывется до path_info то это не проблема и

Нет. В этом то и есть проблема, $fastcgi_path_info заполняется после вызова fastcgi_split_path_info и если try_files вызовется до того как содержимое $fastcgi_path_info будет пересохраненно в своей переменной, то PATH_INFO будет утерян

> в вики path_info сохраняется через промежуточную преременную

где это видно что он сохраняется до или после try_files ?

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

81. Сообщение от cewlhazkx0r (?), 25-Окт-19, 17:46   +/
> Я правильно понимаю, что если сделать так, то эксплойт не страшен?

о времена, о админчики-девляляпляп...

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

82. Сообщение от Анимайзер (?), 25-Окт-19, 22:08   +/
> Уязвимость ..., позволяющая удалённо выполнить код на сервере

Всегда, когда читаю новости с такими заголовками, то начинаю нервничать, руки автоматически тянутся к успокоительному, но потом вспоминаю, что являюсь админом локалхоста и на сердце сразу становится легче.

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

83. Сообщение от OpenEcho (?), 25-Окт-19, 22:09   +/
> PATH_INFO - это костыль для определения SCRIPT_FILENAME, на каких-то неведомых серверах

Чиво?????

SCRIPT_FILENAME => The absolute pathname of the currently executing script.

> с неведомой конфигурацией. Сама по себе она никому и не нужна.

Приехали....

PATH_INFO => Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available.

А если по человечески, то PATH_INFO используется (и не только в PHP) для передачи параметров в GET методе. Все что будет после реального, физического файла, можно на стороне сервера получить в виде path и распарсить, при этом можно еще опционально задействовать стандартные GET параметры передаваемые после "?"

Простой пример: http://domain.tld/script.php/param1/param2/param3

PATH_INFO в этом случае: /param1/param2/param3
Красиво и без rewrite-тов переаданные параметры

Один из самых модных сейчас фреймворков - laravel использует PATH_INFO в реквест классе

До засилия упрощенной симфонии ака ларавель, был еще один, очень популярный (в принципе и сейчас живой, т.к. до сих пор - один из самых быстрых MVC фраймворков и не отягёщенный зависимостями composer-а) фрейворк под названием CodeIgniter, так в нем на сколько помню передача параметров в контроллер осуществлялась как раз таки тоже через PATH_INFO

Так что PATH_INFO - это не для "неведомых серверов с неведомой конфигурацией", а широко применяемая технология...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59 Ответы: #94

84. Сообщение от foi (?), 26-Окт-19, 03:41   –1 +/
С чего это JavaScript гавно?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

85. Сообщение от Аноним (85), 26-Окт-19, 04:04   –2 +/
> https://trac.nginx.org/nginx/ticket/321

mdounin деградант

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

86. Сообщение от конь в пальто (?), 26-Окт-19, 14:22   +1 +/
но ты отдаешь html а не text
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #87

87. Сообщение от OpenEcho (?), 26-Окт-19, 14:52   –1 +/
> но ты отдаешь html а не text

Друг, - Это динамика !
nginx в этом случае просто прокси, что выставит пых, то и отдастся...
default_type работает для статики, а в динамике сам бэкенд определяет какие content-type выставлять в header-ах

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86 Ответы: #88

88. Сообщение от конь в пальто (?), 26-Окт-19, 15:16   +/
при чем тут это?)
я про твой return 404 "<!doctyle html><div style="font-size:800%;text-align:center;">🖕</div>";  с дефолтным mime text/plain
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #87 Ответы: #90

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #92, #95, #100

90. Сообщение от OpenEcho (?), 26-Окт-19, 16:40   +/
Вы не поняли юмора ;)

Это:
<!doctyle html><div style="font-size:800%;text-align:center;">🖕</div>

для любителей copy/paste, особенно то, что внутри дива и видимо только в файервоксе ;)
В реальных конвигах, ретурн возвращает просто 404 или вообще empty, в зависимости от задач... но чистый текст определлено

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

91. Сообщение от spumer (ok), 26-Окт-19, 19:07   +/
О похожем писали ещё в 2010 (почти 10 лет назад)

https://forum.nginx.org/read.php?2,88845,page=3

И лечилось ещё тогда так же:
try_files $uri =404;

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

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

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89 Ответы: #93, #101

93. Сообщение от OpenEcho (?), 27-Окт-19, 18:27   +/
No comments... :)

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

94. Сообщение от Ilya Indigo (ok), 28-Окт-19, 00:02   +1 +/
> А если по человечески, то PATH_INFO используется (и не только в PHP)
> для передачи параметров в GET методе. Все что будет после реального,
> физического файла, можно на стороне сервера получить в виде path и
> распарсить, при этом можно еще опционально задействовать стандартные GET параметры передаваемые
> после "?"

Тут я извиняюсь, недопонимал какой именно это костыль и как именно с ним извращаются.

> Простой пример: http://domain.tld/script.php/param1/param2/param3
> PATH_INFO в этом случае: /param1/param2/param3
> Красиво и без rewrite-тов переаданные параметры

Это не красиво - это уродливо и костыльно!
script.php всё равно нужно указывать, при этом возможно ему передавать GET-параметры, но теперь то что должно быть сзади - стоит спереди... слов нет.

Вот как должен выглядеть этот пример пример ЧПУ https://domain.tld/param1/param2/param3.html
1 С точки зрения пользователя это html - файл и он и не должен подозревать что это не так, тем более знать что именно вызывается на сервере.
2 /param1/param2/param3.html Вот это всё $_SERVER['REQUEST_URI'], который передаётся как есть nginx-ом без всяких регулярок и костылей, а потом элементарно распаривается в PHP без регулярок и при желании, добавляется в $_GET массив.


error_page 404 /en/error;
location = /index.php
{
    return 404;
}
location ^~ /.
{
    return 404;
}
location /
{
    try_files $uri @php;
}
location @php
{
    fastcgi_pass unix:/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    include fastcgi_params;
}

Этот метод ЧПУ не требует никаких костылей в виде PATH_INFO, cgi.fix_pathinfo и fastcgi_split_path_info ^(.+?\.php)(/.*)$; Который добавляет ненужную регулярку на сервер, как раз в духе mod_rewrite.

> Один из самых модных сейчас фреймворков - laravel использует PATH_INFO в реквест классе...
> Так что PATH_INFO - это не для "неведомых серверов с неведомой конфигурацией",
> а широко применяемая технология...

Благодарю что Вы меня проинформировали, не знал что на столько всё плохо.

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

95. Сообщение от 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-шники извращаются.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89 Ответы: #102

96. Сообщение от FSA (??), 28-Окт-19, 07:43   +/
В Ubuntu 18.04 LTS болт положили на исправление.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #99

97. Сообщение от InuYasha (?), 28-Окт-19, 13:21   +/
На опеннете деликатно не стали упоминать о названиях эксплоитов, а на THN полный трэш ))))))
https://thehackernews.com/2019/10/nginx-php-fpm-hacking.html
"In the background, the PoC exploit..."
Ответить | Правка | Наверх | Cообщить модератору

99. Сообщение от FSA (??), 28-Окт-19, 23:54   +/
Не. Всё-таки исправили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #96

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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




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

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