Старый 24.11.2013, 21:09   #1
BigBear
 
Регистрация: 26.07.2012
Сообщений: 135
Репутация: 51
По умолчанию [CVE-2013-4547] Nginx

Похоже у известного CVE появилась вторая жизнь.

Проблеме подвержены версии nginx 0.8.41 — 1.5.6.
Проблема исправлена в nginx 1.5.7, 1.4.4.

Эксплуатируется очень и очень похоже.

Вкратце о уязвимости:

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

[url_host][url_pth]"/file \0.php"

Если все зависимости выполняются - данный файл интерпретируется как PHP скрипт.

Это возможно, благодаря присутствию следующих строк в конфиге Nginx

Код:
location ~ \.php$ {
fastcgi_pass…
}
Единственное в чём будут трудности - загрузить на сервер файл с пробелом в имени файла на конце, минуя все преобразования внутри CMS, включая функцию trim().

Конечно, есть определённые зависимости:

Цитата:
Применительно к nginx + php5-fpm должны соблюдаться следующие условия для эксплуатации уязвимости:

1) fastcgi_param PATH_TRANSLATED должнен быть вида $document_root/$fastcgi_script_name, т.е. значение скрипта берется из реквеста

2) в конфиге fpm pool значение ecurity.limit_extensions должно пропускать любые файлы. По-умолчанию она выставлена в .php .php3 .php4 .php5
Ссылки по теме:

1) HabrHabr

2) Nginx


Есть идеи по эксплуатации ?

Последний раз редактировалось Jokester; 28.11.2013 в 13:40.. Причина: без линков
BigBear вне форума   Ответить с цитированием
Старый 28.11.2013, 13:09   #2
BigBear
 
Регистрация: 26.07.2012
Сообщений: 135
Репутация: 51
По умолчанию

Вообще, если посмотреть на проблему массовых взломов, то перед злоумышленниками встаёт 3 проблемы:

1) Обойти функцию trim() в CMS.
2) Обойти resize картинки в случае загрузки исполняемого кода как изображения.
3) Обойти переименовывание файлов после аплоадинга.

Если 2 и 3 пункт ещё могут как-то решиться, например, этим способом, и нахождением CMS, где загруженные файлы не переименовываются. То обход первого пункта — наиболее трудный.

А в совокупности все 3 проблемы очень сильно ограничивают злоумышленников в своих массовых взломах. Так что по сути, бояться сильно то и нечего.
BigBear вне форума   Ответить с цитированием
Старый 28.11.2013, 13:45   #3
Beched
 
Регистрация: 06.07.2010
Сообщений: 392
Репутация: 118
По умолчанию

Цитата:
Сообщение от BigBear Посмотреть сообщение
Вообще, если посмотреть на проблему массовых взломов, то перед злоумышленниками встаёт 3 проблемы:

1) Обойти функцию trim() в CMS.
2) Обойти resize картинки в случае загрузки исполняемого кода как изображения.
3) Обойти переименовывание файлов после аплоадинга.

Если 2 и 3 пункт ещё могут как-то решиться, например, этим способом, и нахождением CMS, где загруженные файлы не переименовываются. То обход первого пункта — наиболее трудный.

А в совокупности все 3 проблемы очень сильно ограничивают злоумышленников в своих массовых взломах. Так что по сути, бояться сильно то и нечего.

Хуже, security.limit_extensions уже давно убивает этот баг.
Beched вне форума   Ответить с цитированием
Старый 28.11.2013, 16:47   #4
NameSpace
 
Регистрация: 21.12.2012
Сообщений: 146
Репутация: 52
По умолчанию

Цитата:
Сообщение от BigBear Посмотреть сообщение
Вообще, если посмотреть на проблему массовых взломов, то перед злоумышленниками встаёт 3 проблемы:

1) Обойти функцию trim() в CMS.
2) Обойти resize картинки в случае загрузки исполняемого кода как изображения.
3) Обойти переименовывание файлов после аплоадинга.

Если 2 и 3 пункт ещё могут как-то решиться, например, этим способом, и нахождением CMS, где загруженные файлы не переименовываются. То обход первого пункта — наиболее трудный.
Можно подробнее, что за проблема с функцией trim()? Не могу представить для чего она здесь может использоваться.

UDP: Самую важную часть материала пропустил, показалось, что проблема массовых взломов не относится к содержанию.

Последний раз редактировалось NameSpace; 28.11.2013 в 17:31..
NameSpace вне форума   Ответить с цитированием
Старый 28.11.2013, 16:49   #5
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

Цитата:
Эта функция возвращает строку str с удаленными из начала и конца строки пробелами. Если второй параметр не передан, trim() удаляет следующие символы:
" " (ASCII 32 (0x20)), обычный пробел.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
т.е. не получится задействовать публичные хек-приемы

http://php.net/manual/ru/function.trim.php
Pashkela вне форума   Ответить с цитированием
Старый 02.12.2013, 06:37   #6
BlackFan
 
Аватар для BlackFan
 
Регистрация: 08.07.2010
Сообщений: 354
Репутация: 402
По умолчанию

Цитата:
Сообщение от Pashkela Посмотреть сообщение
т.е. не получится задействовать публичные хек-приемы

http://php.net/manual/ru/function.trim.php
Эм, выделенный нулл-байт как раз ничем не мешает. В запросе он используется судя по всему, чтобы nginx обрабатывал запрос как HTTP/0.9. А вот использование trim для удаления пробелов и переименование картинки действительно мешает.

+ немного тестил под виндой, можно обойтись без пробела (надо бы это нормально еще потестить).

У меня запрос
GET /<e<< \0.php HTTP/1.1
вполне нормально себе запускает test.txt как php.

(а иногда и никаких извращений с <> не надо, просто отдает любой файл как php при таком запросе, непонятная тема .. И php-cgi постоянно падает от фаззинга)

Так что потенциал у уязвимости есть, не надо ее условиями закапывать

Последний раз редактировалось BlackFan; 02.12.2013 в 07:12..
BlackFan вне форума   Ответить с цитированием
Старый 02.12.2013, 19:41   #7
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

Был невмнимателен, когда читал багу, потому выделил не то, ну вы понели
Pashkela вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot