👀 Тестирование уязвимостей, связанных с инъекцией Host Header

В постоянно развивающейся сфере веб-безопасности одной из уязвимостей, потенциально способных поразить веб-приложения, является Host Header Injection.

Этот дефект возникает, когда веб-приложение или сервер не проверяют должным образом или не ограничивают заголовок Host во входящих HTTP-запросах, тем самым подвергая их вредоносной эксплуатации.

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

В данном руководстве мы рассмотрим как ручные, так и автоматизированные методы проверки уязвимостей Host Header Injection.

Как проверить уязвимость Host Header Injection

Тестирование уязвимости Host Header Injection заключается в отправке на сервер поддельных запросов и наблюдении за его поведением.

Вот как можно проверить эту уязвимость:

Ручное тестирование:

С помощью curl:

С помощью инструмента командной строки curl отправьте запрос с пользовательским заголовком Host.

curl -H "Host: malicious.com" http://yourdomain.com/

Понаблюдайте за ответом.

Если в ответе вы видите ссылки на malicious.com, сервер может быть уязвим.

Использование средств разработчика веб-браузера:

Большинство современных браузеров имеют инструменты разработчика, позволяющие проверять и модифицировать запросы.

  • Откройте инструменты разработчика браузера.
  • Перейдите на вкладку Сеть.
  • Создайте запрос к своему сайту.
  • Найдите запрос на вкладке “Сеть”, щелкните его правой кнопкой мыши и выберите “Редактировать и повторно отправить”.
  • Измените значение заголовка Host на другое и повторно отправьте запрос.
  • Проверьте ответ сервера на наличие признаков использования пользовательского хоста.

Использование прокси-инструментов:

Такие инструменты, как Burp Suite или OWASP ZAP, позволяют перехватывать и модифицировать HTTP-запросы.

  • Настройте прокси-инструмент на перехват трафика браузера.
  • Зайдите на тестируемый сайт.
  • Перехватите запрос и измените заголовок Host.
  • Перешлите запрос и проверьте ответ сервера.

👀 Выпущена версия archerysec v1.4: оценка и управление уязвимостями с открытым исходным кодом

 

import requests



target_url = 'http://yourdoamin.com/'

headers_list = [

    {'Host': 'malicious.com'},

    {'Host': 'example.com'},

    # ... add more headers as needed ...

]



for headers in headers_list:

    response = requests.get(target_url, headers=headers)

    if 'malicious.com' in response.text:

        print(f"Possible vulnerability found with header {headers['Host']}")

Замечания

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

Обращайте внимание не только на HTML-содержимое, но и на все ссылки, заголовки и другие элементы, на которые может повлиять заголовок Host.

Влияние уязвимости не всегда проявляется в непосредственном ответе сервера.

Она может повлиять на журналы, электронную почту и другие внутренние процессы.

Даже если уязвимость нельзя использовать напрямую, иногда ее можно связать с другими уязвимостями для получения большего эффекта.

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

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

Заключение

Уязвимость Host Header Injection, хотя ее часто игнорируют, может иметь серьезные последствия, если ее не устранить.

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

Запомните, что проактивный подход к обеспечению веб-безопасности не только гарантирует целостность приложений, но и доверие к ним со стороны пользователей.



2023-09-11T16:28:08
Закрытие уязвимостей