Що нового?

Article [10.2.2] Burp Suite. Exploiting web cache poisoning vulnerabilities

Vander 0

Vander

Команда форуму
10 Лис 2019
477
1,160
Приветствую уважаемую аудиторию форума Protey!

1587907330792.png

Продолжаем разбирать способы возникновения уязвимостей, отравляющих веб-кеш, и рассматриваем практические примеры, предыдущие статьи цикла можно найти тут:
Использование ответов, которые предоставляют слишком много информации

Иногда веб-сайты становятся более уязвимыми для отравления кэшем, отдавая слишком много информации о себе и своем поведении.

Директивы управления кэшем

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

Один из таких примеров - это когда ответы содержат информацию о том, как часто очищается кэш или возраст текущего кэшированного ответа:

Код:
HTTP/1.1 200 OK
Via: 1.1 varnish-v4
Age: 174
Cache-Control: public, max-age=1800
Хотя это напрямую не приводит к уязвимостям отравления веб-кэша, оно сохраняет потенциальному злоумышленнику время, поскольку он точно знает, когда отправлять свои полезные данные, чтобы гарантировать их кэширование.

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

Заголовок 'Vary'

Элементарный способ, в котором часто используется заголовок Vary, может также помочь атакующим. Заголовок Vary определяет список дополнительных заголовков, которые следует рассматривать как часть ключа кэша, даже если они обычно не помечены. Он обычно используется для указания того, что заголовок User-Agent является ключевым, например, так что, если мобильная версия веб-сайта кэшируется, она не будет предоставлена не-мобильным пользователям по ошибке.

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

Практический пример:

Целевое отравление кэша через неизвестный заголовок

Эта лаборатория уязвима для отравления веб-кэша. Пользователь посещает домашнюю страницу примерно раз в минуту. Пользователь также просматривает любые ваши комментарии. Чтобы решить эту задачу, вам нужно отравить кэш ответом, который запускает оповещение (document.cookie) в браузере посетителя. Однако вам также необходимо убедиться, что ответ направляется конкретному подмножеству пользователей, которому принадлежит предполагаемая жертва.

Решение этой лаборатории требует нескольких шагов. Во-первых, вам необходимо определить, где находится уязвимость, и изучить поведение кеша. Затем вам нужно найти способ нацеливания на нужную группу пользователей, прежде чем окончательно отравить кэш.
  • Запустив Burp, загрузите домашнюю страницу сайта.
  • В Burp перейдите к «Proxy» > «HTTP history» и изучите сгенерированные вами запросы и ответы. Найдите запрос GET для домашней страницы.
  • С включенным расширением Param Miner щелкните правой кнопкой мыши запрос и выберите «Guess headers». Через некоторое время Param Miner сообщит, что существует секретный ввод в виде заголовка X-Host.
  • Отправьте запрос GET в Burp Repeater и добавьте параметр запроса кэша, ?сb = 1234.
1587916605835.png
  • Добавьте заголовок X-Host с произвольным именем хоста, например example.com. Обратите внимание, что значение этого заголовка используется для динамической генерации абсолютного URL-адреса для импорта файла JavaScript, хранящегося по адресу /resources/js/tracking.js.
1587916909027.png
  • Перейдите на сервер эксплойтов и измените имя файла в соответствии с путем, используемым уязвимым ответом: /resources/js/tracking.js.
  • В теле введите предупреждение о полезной нагрузке (document.cookie) и сохраните эксплойт.
  • Вернитесь к запросу в Burp Repeater и установите заголовок X-Host следующим образом, не забывая добавить свой собственный идентификатор сервера эксплойтов: Х-Хост: your-exploit-server-id.web-security-academy.net
  • Отправляйте запрос, пока в ответе не отобразится URL вашего сервера эксплойтов, а X-Cache: попадет в заголовки.
1587917230920.png
  • Чтобы смоделировать жертву, загрузите URL-адрес в браузере и убедитесь, что оповещение () срабатывает.
  • Обратите внимание, что заголовок Vary используется для указания того, что User-Agent является частью ключа кэша. Чтобы нацелиться на жертву, вам нужно узнать их User-Agent.
  • На веб-сайте обратите внимание, что функция комментариев допускает определенные теги HTML. Разместите комментарий, содержащий подходящую полезную нагрузку, чтобы браузер жертвы взаимодействовал с вашим сервером эксплойтов, например: <img src = "https://your-exploit-server-id.web-security-academy.net/foo" />
  • Перейдите на страницу блога и дважды проверьте, что ваш комментарий был успешно опубликован.
1587920475002.png
  • Перейдите на сервер эксплойтов и нажмите кнопку, чтобы открыть «Журнал доступа». Обновляйте страницу каждые несколько секунд, пока не увидите запросы, сделанные другим пользователем. Это жертва. Скопируйте их User-Agent из журнала.
1587920598865.png
  • Вернитесь к вашему вредоносному запросу в Burp Repeater и вставьте User-Agent жертвы в соответствующий заголовок. Удалите кеш-буфер.
  • Отправляйте запрос до тех пор, пока URL-адрес вашего сервера эксплойта не отобразится в ответе, а X-Cache: попадет в заголовки.
  • Повторите запрос, чтобы сохранить кэш отравленным, пока жертва не посетит сайт и лаборатория не будет решена.
Спасибо за внимание, материал подготовлен специально для форума protey.net
 
Останнє редагування:
Угорі Унизу