После сканирования 2.6 миллионов доменов на наличие открытых .git каталогов (ссылка на статью), .env (ссылка на статью) и .DS_Store (ссылка на статью) файлов я проделал такое же сканирование для phpinfo-файлов, таких как info.php или phpinfo.php.
В первой части этой статьи я объясню, что такое phpinfo и что из него можно извлечь. Во второй части я расскажу о конфиденциальной информации, которую я нашел.
Что такое phpinfo()?
phpinfo() — это функция, которая отображает информацию о конфигурации PHP и сервера. Она помогает PHP-разработчикам видеть, какие модули активны и какие версии этих модулей работают на сервере.
Несут ли какую-либо опасность данные, полученные с помощью phpinfo()?
На первый взгляд эта информация не является конфиденциальной. И многие разработчики не заморачиваются с удалением phpinfo-файлов в производственной среде. Но поверьте мне, это не так. Проанализировав результаты моего сканирования всех 2.6 миллионов доменов, я пришел к совершенно другому выводу о phpinfo()
.
Я нашел более 45 000 доступных для phpinfo()
страниц.
Уязвимые версии PHP
Много-много лет назад я начал изучать PHP 4, и да, он до сих пор работает на некоторых серверах… но какого черта? Я провел сканирование в октябре 2022 года. С 28 ноября 2022 года PHP 7.4 и все, что было раньше, стало считаться устаревшим, поэтому PHP 7.x больше не поддерживается, только PHP 8.x. Но смотрите сами.
Проверьте свою версию PHP: если < 8: ???? иначе: ????
Уязвимые версии ImageMagick
ImageMagick — это библиотека для управления изображениями на основе PHP. В некоторых старых версиях были серьезные проблемы с безопасностью. Мы смогли извлечь версию ImageMagick примерно одной трети доступных страниц. 90% этих библиотек устарели.
Уязвимые версии серверного программного обеспечения (например, nginx, Apache или Microsoft IIS)
Серид данных phpinfo очень часто можно найти версию сервера. Довольно много серверов используют устаревшие версии.
Рекомендуется отключить отображение заголовка сервера или хотя бы его версии.
Уязвимые версии openssl
Еще один интересный модуль, в котором вы можете найти информацию о версии в данных phpinfo — openssl. Openssl — это набор инструментов для криптографии и безопасной связи. Он очень распространен и широко используется практически везде. Но в прошлом с этой библиотекой возникали серьезные проблемы с безопасностью (вы еще помните heartbleed?)
Из версий, извлеченных из нашего набора данных, 1/3 используемых openssl-библиотек устарели.
Небезопасные конфигурации PHP
Если вы запускаете веб-приложение на PHP, вам в первую очередь следует подумать о том, чтобы включить или отключить некоторые настройки, чтобы предотвратить утечку информации и проблемы с безопасностью.
Отчеты об ошибках
Касательно системы, которая развернута в продакшене, вы должны отключить любые отчеты об ошибках для пользователя. С помощью отчетов об ошибках и стек-трейсов злоумышленник может получить важную информацию о вашем приложении.
Отключенные функции
В PHP вы можете отключить некоторые функции. Некоторые опасные функции имеет смысл отключить. Например, exec или passthru, потому что эти функции позволяют злоумышленнику выполнять системные команды. Чуть менее одной на тысячу конфигураций PHP используют эту опцию и отключают все опасные функции PHP.
Разрешение url fopen / Разрешение url include / Open-basedir
В PHP есть и другие настройки, которые вы должны использовать очень осознанно. Например, можно ли открывать файлы из внешних источников или загружать включения из внешних источников. Очень немногие настройки PHP имеют ограничения.
Ниже приведена статистика для следующих настроек:
Разрешить url fopen
Разрешить url include
Open basedir
Утечка конфиденциальных данных
Информация о сервере и конфигурации PHP может помочь злоумышленнику получить информацию о возможных эксплойтах и запущенных модулях на сервере. Но самое интересное — это конфиденциальные данные, которые можно открыть через phpinfo()
, такие как переменные среды или переменные $_SERVER. Там я нашел пароли к базам данных, учетные данные электронной почты, приватные ключи, секреты API, живые ключи Stripe, учетные данные для доступа к облачным базам данных, очереди сообщений и ключи шифрования.
Я думаю, что у одного хостера есть проблема с настройкой для всех его клиентов. Учетные данные базы данных доступны через переменные среды всех его клиентов (которых достаточно много).
Обход WAF
В переменной PHP $_SERVER я нашел около 500 прямых IP-адресов серверов веб-приложений, которые должны быть защищены WAF (Web Application Firewall, например Cloudflare). Когда вы знаете прямой IP-адрес сервера, вы можете обойти все механизмы защиты WAF, напрямую обратившись к веб-приложению.
Заключение
Что сказать: ????. Я был очень удивлен тем, что можно было найти в файле phpinfo()
. Каждый PHP-разработчик должен думать о том, что может быть обнажено через общедоступные данные phpinfo()
. Вы не должны развертывать phpinfo()
на рабочем сервере. Или, если вам это так нужно, поместите файл в защищенную паролем папку.
Также обновите серверное программное обеспечение, чтобы иметь все последние исправления безопасности.
Проверьте свой сервер вручную, с помощью nuclei-шаблона или с помощью такого сервиса, как scan.nan.io.
В январе пройдет открытый урок, посвященный PHP 8.2. На занятии посмотрим на нововведения в языке и применим все это на практике. Регистрация открыта по ссылке.
FanatPHP
Статья написана кликушей, который за неимением фактов занимается подтасовками.
Устаревшую версию смело называем "уязвимой", даже если никаких эксплойтов для неё нет — и уже готов материал для обширной аналитической статьи!
Конфиденциальных данных получилось так мало, что пришлось на двух картинках их дублировать.
Само количество нарытых проблем стремится к нулю — искомый файлик найден на 0.01% процента просканированных доменов, что уже говорит о фактическом отсутствии проблемы. Количество же обнаруженных "уязвимостей" и вовсе стремится к нулю — как с тем же РНР4, у которого на диаграмме полосочки толщиной с волос. Сколько таких сайтов нашел автор в абсолютном исчислении? Один, два? Из двух с полови ной миллионов. А какое пафосное вступление!
Ну и главное-то в том, что само по себе наличие файлика пхпинфо не влияет на наличие уязвимой библиотеки. И миллионы скрипт-киддей по всему миру запускают автоматические сканилки на все два с половиной офигиллиарда доменов, не заморачиваясь поисками файлика пхпинфо.
В общем, автор статьи старательно пучит глаза и надувает щеки, но фактуры у него — с гулькин нос.
При этом перевод даже не вычитан на опечатки.
В общем, все как обычно, Отус твердо держит свои стандарты качества.