Представляю вашему вниманию очередную часть перевода OWASP Testing Guide. В данной статье речь пойдет о HSTS.

[spoiler title=’Предыдущие статьи’]

  1. Тестирование: введение и задачи
  2. Сбор информации с помощью поисковых систем
  3. Определение веб-сервера
  4. Поиск информации в метафайлах веб-сервера
  5. Определение веб-приложений на сервере
  6. Поиск утечек информации в комментариях и метаданных
  7. Определение точек входа веб-приложения
  8. Составление карты веб-приложения
  9. Определение фреймворка веб-приложения
  10. Определение веб-приложения
  11. Составление карты архитектуры веб-приложения
  12. Тестирование конфигурации инфраструктуры веб-приложения
  13. Изучение расширений файлов
  14. Поиск страрых версий веб-приложения, скрытых файлов и резервных копий
  15. Поиск административных интерфейсов
  16. Тестирование HTTP методов

[/spoiler]

Резюме

HSTS (сокр. от англ. HTTP Strict Transport Security) — механизм, активирующий форсированное защищённое соединение через протокол HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение, вместо использования HTTP-протокола. Механизм использует особый заголовок Strict-Transport-Security для принудительного использования браузером протокола HTTPS даже в случае перехода по ссылкам с явным указанием протокола HTTP (http://). Данный механизм является крайне важным и потому обязатеьно нужно убедиться в том, что он используется тестируемым веб-приложением.

Заголовок HSTS использует две директивы:

  • max-age — указывает время за которое браузер должен автоматически преобразовать все HTTP запросы в HTTPS, время указывается в секундах.
  • includeSubDomains — указывает, что все поддомены веб-приложения должны испоьзовать HTTPS.

Ниже приведен пример заголовка HSTS:


Strict-Transport-Security: max-age=60000; includeSubDomains

Если используется заголовок HSTS, то нужно убедится могут ли быть произведены следующие атаки:

  • Прослушивание всего траффика в сети и получение доступа к данным, передаваемым через незашифрованные каналы.
  • Может быть проведен MITM, так как принимаются недоверенные сертификаты.
  • Пользователь случайно вводит адрес в браузере используя HTTP вместо HTTPS или же кликает на ссылку, использующую HTTP.

Как тестировать

Проверить наличие заголовка HSTS можно с помощью перехватывающего прокси или curl следующим образом:


$ curl -s -D- https://domain.com/ | grep Strict

Ожидаемый результат:


Strict-Transport-Security: max-age=...

Справочные материалы: