Исправлена ​​уязвимость атаки заголовка узла в Codeigniter

Меня попросили решить проблему безопасности в приложении codeigniter, размещенном на сервере Windows. IIS и вот описание проблемы. Я считаю, что это произошло из-за программного обеспечения для отчетности под названием «Acunetix».

Атака заголовка хоста

Описание уязвимости

Злоумышленник может манипулировать заголовком хоста, видимым веб-приложением, и вызывать непредсказуемое поведение приложения. Разработчики часто прибегают к крайне ненадежному заголовку HTTP Host (_SERVER [«HTTP_HOST»] в PHP). Даже приложения, защищенные в противном случае, доверяют этому значению настолько, что записывают его на страницу без HTML-кодирования с кодом, эквивалентным:

   <link href="http://_SERVER['HOST']"    (Joomla)
...and append secret keys and tokens to links containing it:
<a href="http://_SERVER['HOST']?token=topsecret">  (Django, Gallery, others)
....and even directly import scripts from it:
<script src="http://_SERVER['HOST']/misc/jquery.js?v=1.4.4">  (Various)

Затронутые предметы

  • / TechP / пользователь / забыть
  • / TechP / пользователь / Войти
  • / TechP / пользователь / loginexec
  • / TechP / пользователь / регистр

Влияние этой уязвимости

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

Как исправить эту уязвимость

Веб-приложение должно использовать SERVER_NAME вместо заголовка Host. Он также должен создать фиктивный виртуальный хост, который перехватывает все запросы с неопознанными заголовками хоста. Это также можно сделать в Nginx, указав не подстановочный знак SERVER_NAME, и в Apache, используя не подстановочный знак serverName и включив директиву UseCanonicalName. Обратитесь к ссылкам для получения подробной информации.

Я не понял, в чем собственно проблема, так что кто-нибудь может кратко объяснить, как это исправить?

1

Решение

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

Сайты, которые фактически размещены (т.е. они требовать действительный Host заголовок) все еще может быть уязвимым, так как некоторые атаки отправляют несколько копий заголовка (см., в частности, раздел «Отравление кэша»).

Ваш первый шаг — повторить это. Настройте приложение на локальном экземпляре Apache и попытайтесь воспроизвести указанную конкретную уязвимость. Для этого вам нужно будет заставить его отвечать на IP-адрес (например, 127.0.0.1), а также localhost, После этого вы можете использовать инструменты изменения заголовка (например, через curl или плагины браузера), чтобы изменить Host значение, как оно отправлено клиенту.

Попробуйте создать такие ситуации:

  • Домен, не связанный с фактическим используемым доменом, которым вы управляете, чтобы узнать, сможете ли вы убедить приложение перенаправить на ваш домен
  • Внедрить домен с взломом XSS

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]