Выполнение атаки с подделкой межсайтовых запросов

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

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

Для этой статьи вам понадобится действующая учетная запись пользователя в BodgeIt. В этой статье в качестве жертвы используется [email protected] :

Как это сделать…

Во-первых, вам нужно проанализировать запрос, который вы хотите заставить жертву сделать. Для этого вам понадобится Burp Suite или другой прокси, настроенный в браузере:

  1. Войдите в BodgeIt как любой пользователь и щелкните имя пользователя, чтобы перейти в профиль.
  2. Измените пароль. Посмотрите, как выглядит запрос в прокси:

    Итак, это POST Запрос к http://192.168.56.11/bodgeit/password.jsp, и имеет только пароль и его подтверждение в теле.

  3. Попробуйте создать очень простую HTML-страницу, которая воспроизводит этот запрос. Создайте файл (назовите его csrf-change-password.html ) со следующим содержимым:
  4. Теперь загрузите этот файл в том же браузере, в котором вы вошли в сеанс:
  5. Нажмите «Отправить», и вы будете перенаправлены на страницу профиля пользователя. Он сообщит вам, что пароль был успешно обновлен.
  6. Хотя это подтверждает точку зрения, внешний сайт (или локальная HTML-страница, как в данном случае) может выполнить запрос на смену пароля в приложении. По-прежнему маловероятно, что пользователь нажмет Отправить . Это можно автоматизировать и скрыть поля ввода, чтобы скрыть вредоносный контент. Теперь создайте новую страницу на основе предыдущей; назовите его csrf-change-password-scripted.html:

    function submit_form ( )
    {
    document.getElementById (‘form1’). submit ();
    }

    Совершенно безвредная страница

    Вы можете доверять этой странице.
    Ничего плохого не случится ни с вами, ни с вашей учетной записью BodgeIt.

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

  7. Если вы загрузите эту страницу в том же браузере, в котором запущен сеанс BodgeIt, он автоматически отправит запрос, и после этого отобразится страница профиля пользователя. На следующем снимке экрана Отладчик браузера установил точку останова непосредственно перед выполнением запроса:
  8. Последняя попытка выглядит лучше с точки зрения злоумышленника. Вам нужно только, чтобы жертва загрузила страницу, и запрос будет отправлен автоматически, но затем жертва увидит сообщение Ваш пароль был изменен , и это обязательно вызовет предупреждение.
  9. Вы можете еще больше улучшить атакующую страницу, заставив ее загружать ответ в невидимом фрейме внутри той же страницы. Есть много способов сделать это; быстрый и грязный — установить размер 0 для рамки. Ваш файл будет выглядеть так:

    function submit_form ()
    {
    документ. getElementById (‘form1’). submit ();
    }

    А полностью безвредная страница

    Вы можете доверять этой странице.
    Ничего плохого не случится ни с вами, ни с вашей учетной записью BodgeIt.
    target = «target_frame»>

    Обратите внимание, что целевым свойством формы является iframe, определенный сразу под ним, и что такой фрейм имеет 0% высоты и ширины.

  10. Загрузить новую страницу в браузере, где был инициирован сеанс. На этом снимке экрана показано, как страница выглядит при проверке с помощью инструментов разработчика браузера: Обратите внимание, что объект iframe представляет собой только черную линию на странице, и в Inspector вы можете увидеть, что он содержит страницу профиля пользователя BodgeIt.
  11. Если вы проанализируете сетевое взаимодействие, осуществляемое ваша CSRF-страница, вы можете видеть, что она действительно делает запросы на изменение пароля BodgeIt:
  12. Как это работает…

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

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

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

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

    В этой статье вы использовали JavaScript для автоматизации отправки запроса, установив событие onload на странице и выполнение метода отправки формы в функции обработчика событий. Вы также использовали скрытый iframe для загрузки ответа на изменение пароля, поэтому жертва никогда не увидит сообщение о том, что его/ее пароль был изменен.

    Если вы нашли эту статью интересно, вы можете изучить Kali Linux Web Penetration Testing Cookbook — Second Edition , чтобы обнаружить наиболее распространенные веб-уязвимости и предотвратить их превращение в угрозу безопасности вашего сайта. . Поваренная книга Kali Linux по веб-тестированию на проникновение — второе издание дает вам навыки, необходимые для покрытия всех этапов теста на проникновение — от сбора информации о системе и приложении. для выявления уязвимостей посредством ручного тестирования.

Оцените статью
nanomode.ru
Добавить комментарий