Вопрос или проблема
Во время проверки безопасности наших машин я обнаружил, что один хост выставляет службу Microsoft-HTTPAPI/2.0 через порт 80 в интернет.
Я не знаком с этим, но после поиска в Google я узнал, что SQL Server 2008 по умолчанию публикует SQL Server Reporting Services на порту 80 и идентифицирует себя как HTTPAPI/2.0. На хосте также работает IIS7.
Я предполагаю, что это, вероятно, не то, что должно быть выставлено на всеобщее обозрение. Может кто-то предложить мне информацию или совет по поводу рисков безопасности, связанных с выдачей этой службы?
Заголовки ответа - http://#.#.#.#/
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Mon, 10 Aug 2009 10:44:25 GMT
Connection: close
Content-Length: 315
404 Not Found
Если заголовок Server ответа возвращает “Microsoft-HttpApi/2.0”, это означает, что HTTP.sys вызывается вместо IIS. Эксплойты и сканирования портов используют это как средство определения типа сервера IIS (даже если он в остальном скрывает заголовок Server).
Вы можете протестировать это, вызвав ошибку с помощью CURL:
curl -v http://www.yourdomain.com/ -H "Range: bytes=00-18446744073709551615"
Вы увидите что-то подобное, если ваш сервер отправляет заголовок:
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Thu, 19 Dec 2019 00:45:40 GMT
Connection: close
Content-Length: 339
Вы можете добавить значение в реестр, чтобы HTTP.sys не включал заголовок.
- Откройте Regedit
- Перейдите к: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
- Если DisableServerHeader не существует, создайте его (DWORD 32bit) и установите значение 2. Если он существует, и значение не равно 2, установите его в 2.
- Перезагрузите сервер ИЛИ перезапустите службу HTTP, вызвав “net stop http”, а затем “net start http”
Ссылка: WS/WCF: Удалить заголовок сервера
После добавления ключа реестра ответ выглядит так:
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Date: Thu, 19 Dec 2019 00:45:40 GMT
Connection: close
Content-Length: 339
Публикую здесь, чтобы люди, которым это нужно, могли найти это. (Спасибо, Орэм!)
Если у вас нет достаточной причины для его выставления, то, вероятно, вам не следует его выставлять. Кстати, вам может быть интересна эта статья, чтобы решить, стоит ли его выставлять.
Наиболее распространенная причина для этого заголовка ответа сервера – когда IIS не может определить, какой сайт обслуживать.
IIS ответит с этим заголовком сервера, когда оба условия будут выполнены:
- запрос содержит непонятный заголовок Host
- по умолчанию не настроен ни один сайт
В качестве альтернативы, если конфигурация сайта, который IIS пытается обслужить, является неправильной, она будет проигнорирована и считаться отсутствующей, что также приведет к такому же эффекту.
Попробуйте поискать уязвимости в базе данных эксплоитов для этого.
В моем случае уязвимость microsoft httpapi httpd 2.0 (ssdp/upnp) исправляется просто добавлением пользовательской страницы ошибки к ошибке 400, потому что я понял, что сервер IIS получает свою собственную пользовательскую ошибку, тогда версия сервера раскрывается через ошибку 400. Так что просто добавил свою собственную пользовательскую ошибку для ошибки 400, и проблема решена.
Ответ или решение
Анализ безопасности: Microsoft-HTTPAPI/2.0
В процессе аудита безопасности систем было выявлено, что один из хостов открывает службу Microsoft-HTTPAPI/2.0 через порт 80 для доступа из Интернета. Этот вопрос требует внимательного рассмотрения из-за потенциальных рисков, связанных с безопасностью.
Что такое Microsoft-HTTPAPI/2.0
Microsoft-HTTPAPI/2.0 представляет собой часть протокола HTTP.sys, который отвечает за обработку HTTP-запросов в системах Windows для IIS (Internet Information Services). Он используется программами для обработки входящих HTTP-запросов и может отдавать ответы в случаях, когда IIS не может определить, какой веб-сайт обслуживать. Выдача заголовка "Server: Microsoft-HTTPAPI/2.0" может означать, что запрос не соответствует ни одному из настроенных веб-сайтов или что конфигурация сайта некорректна.
Причины риска
-
Экспозиция через интернет: Открытие порта 80 для доступа из внешней сети без необходимости означает, что ваше приложение может стать мишенью для злоумышленников. HTTPAPI/2.0 иногда используется для получения информации о конфигурации сервера и его уязвимостях.
-
Фингерпринтинг сервера: Злоумышленники могут использовать информацию, предоставляемую сервером, для выявления уязвимостей, что увеличивает вероятность атак на вашу инфраструктуру.
-
Некорректная конфигурация: Если сервер возвращает заголовок Microsoft-HTTPAPI/2.0, это может свидетельствовать о том, что нет правильно настроенного веб-сайта и IIS не может обработать запрос, потенциально раскрывая дополнительные уязвимости.
Рекомендации по смягчению рисков
-
Закрытие порта 80: Если нет веской причины для публичного доступа к службе HTTPAPI, рекомендуется закрыть порт 80 или ограничить доступ к нему с помощью брандмауэра.
-
Удаление заголовка сервера: Для предотвращения выдачи заголовка "Server: Microsoft-HTTPAPI/2.0" можно внести изменения в реестр. Это можно сделать, создав параметр
DisableServerHeader
в реестре (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
) и установив его значение на 2. -
Настройка кастомных страниц ошибок: Чтобы минимизировать риск утечки информации о сервере, можно настроить кастомные страницы ошибок, что снизит вероятность выдачи ненужной информации о конфигурации сервера.
-
Обновление и патчинг: Регулярно проверяйте систему на наличие обновлений и применяйте патчи, чтобы устранить известные уязвимости, связанные с версиями программного обеспечения.
-
Аудит конфигурации IIS: Проведите аудит конфигурации IIS, чтобы убедиться, что все сайты и приложения настроены корректно, что позволит избежать некорректных ответов.
Заключение
Экспонирование Microsoft-HTTPAPI/2.0 через порт 80 может привести к значительным рискам безопасности для вашей инфраструктуры. Важно придерживаться рекомендаций по улучшению безопасности, включая закрытие ненужных портов, настройку заголовков серверов и регулярное обновление программного обеспечения. Не забывайте, что безопасность – это непрерывный процесс, требующий внимания и регулярного анализа конфигураций.