Понимание уязвимости CSRF (руководство для начинающих)

Понимание уязвимости CSRF (руководство для начинающих)

Вы всегда меняете пароль своей учетной записи, когда хотите, но что, если ваш пароль меняется всякий раз, когда злоумышленник хочет, и что, если вы не знаете об этом? Сегодня в этой статье мы узнаем основные понятия об атаках CSRF или о том, как злоумышленник вынуждает пользователя выполнить некоторые нежелательные действия, которые он (пользователь) никогда не намеревался выполнять. Мы сегодня рассмотрим статью Понимание уязвимости CSRF (руководство для начинающих)

Cookies

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

ID сеанса

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

Таким образом, всякий раз, когда клиент выходит из системы или браузер закрывается, эти сеансы прекращаются. И при каждом новом входе в систему создается новый сеанс с идентификатором сеанса.

Давайте проясним это на следующем сценарии:

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

Понимание уязвимости CSRF (руководство для начинающих)

Теперь, когда пользователь посещает какой-либо другой раздел того же приложения, идентификатор сеанса, сохраненный в браузере пользователя, отправляется на сервер для проверки.

Понимание уязвимости CSRF (руководство для начинающих)

Что такое SOP?

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

Например —

Скажем, веб-страница «https://www.ignitetechnologies.com/ceh/module1.pdf» может напрямую получить доступ к контенту на «https://www.ignitetechnologies.com/network/RDP/module7.docx».

Но он не может получить доступ к данным из «https://www.ignitetechnologies.com:8080/bug/xss.pdf». Поскольку теперь порт был изменен между ними.

Введение в CSRF-атаки

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

Чтобы быть более ясным, давайте рассмотрим следующий сценарий —

Здесь пользователь  “Aarti” получает письмо от злоумышленника, когда она осуществляла банковский перевод на счет г-на Раджа Ченделя. Она оставила транзакцию незавершенной и проверяет почту в новой вкладке.

Там она получила общий URL-адрес, в котором говорилось, что «Вы получили определенную сумму в качестве вознаграждения». Теперь, когда она открывает URL-адрес на следующей вкладке, у нее появляется кнопка «Взять». Страница транзакции была закрыта на другой вкладке, а эта вредоносная страница находится на следующей. Как только она нажимает кнопку отправки, запрос выполняется, и сумма списывается со счета Аарти без ее ведома или беспокойства.

Понимание уязвимости CSRF (руководство для начинающих)

Воздействие уязвимости CSRF

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

      • Изменение адреса электронной почты или пароля жертвы.
      • Покупка чего угодно.
      • Совершение банковской транзакции.
      • Явный выход пользователя из его учетной записи.

Таким образом, эта уязвимость была включена в список 10 лучших уязвимостей OWASP в 2013 году. Теперь она получила оценку оценку по CVSS «6,8» со «средней» степенью серьезности ниже

      • CWE-352: подделка межсайтовых запросов (CSRF)

Эксплуатация CSRF 

В этом разделе я использовал уязвимое веб-приложение bWAPP и создал учетную запись с пользователем Raj: ignite для входа на веб-сервер.

Понимание уязвимости CSRF (руководство для начинающих)

Управление данными учетной записи пользователя

На изображении выше вы можете видеть, что для создания нового пользователя пользователь «Raj» установил свое секретное значение как «кто вы?». Теперь, если он хочет изменить это секретное значение, он может изменить его отсюда.

Понимание уязвимости CSRF (руководство для начинающих)

Но что, если его секретное значение изменится на желаемое злоумышленником без его ведома?

Давайте посмотрим, как это сделать.

Давайте откроем целевой IP-адрес в нашем браузере, и мы установим для параметра «Выбрать ошибку» значение «Межсайтовый-запрос-подделка» (изменить секрет).

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

Понимание уязвимости CSRF (руководство для начинающих)

Теперь давайте «нажмем кнопку изменения» и зафиксируем проходящий HTTP-запрос.

Из изображения ниже видно, что мы успешно обработали запрос. Пришло время создать поддельную HTML-форму, для этого щелкните правой кнопкой мыши в любом месте экрана и выберите инструменты взаимодействия, а затем нажмите кнопку «Создать CSRF PoC».

Понимание уязвимости CSRF (руководство для начинающих)

Этот генератор CSRF PoC автоматически сгенерирует страницу HTML-формы. Теперь нажмите «Копировать HTML», чтобы скопировать весь HTML-код, а затем скопированные данные в текстовый файл.

Понимание уязвимости CSRF (руководство для начинающих)

Давайте проманипулируем параметром secret value = «» с помощью «hackingarticles», а затем сохраним этот файл как «csrf.html». Кроме того, нам нужно указать имя пользователя Raj, для которого будет изменяться секретное значение.

Понимание уязвимости CSRF (руководство для начинающих)

Теперь мы воспользуемся методом социальной инженерии, чтобы поделиться этим файлом csrf.html с целевым пользователем.

Как только жертва откроет этот csrf.html, он получит кнопку отправки, когда он щелкнет по ней, его секрет будет изменен без его ведома.

Понимание уязвимости CSRF (руководство для начинающих)

На изображении ниже вы можете видеть, что он получил сообщение «Секрет был изменен!». Таким же образом успешная CSRF-атака может даже изменить адреса электронной почты, имена пользователей и другую личную информацию пользователя.

Понимание уязвимости CSRF (руководство для начинающих)

CSRF через форму смены пароля

Функция «Изменить пароль» предлагается почти каждым веб-приложением, но во многих случаях приложения не могут обеспечить измерения безопасности для таких разделов. Итак, давайте попробуем использовать эту функцию «Изменить пароль» вместе с уязвимостью CSRF, которая является одной из самых эффективных атак CRSF, при которой пароль пользователя изменяется без его ведома.

Вернувшись в опцию «Выбрать ошибку», выберите «Межсайтовый запрос-подделка» (изменить пароль) и нажмите кнопку «Взломать».

Теперь давайте снова «запустим кнопку« Изменить »» и перехватим проходящий HTTP-запрос в Burpsuite.

Из изображения ниже видно, что мы успешно обработали запрос. Давайте проделаем ту же процедуру, чтобы сгенерировать «поддельную HTML-форму».

Теперь нажмите «Копировать HTML», чтобы скопировать весь HTML-код, а затем скопированные данные в новый текстовый файл.

После того, как мы вставили HTML-код, давайте теперь добавим новое значение пароля (пароль злоумышленника) и значение подтверждения пароля, а затем сохраним текстовый документ как csrf.html.

Теперь мы снова воспользуемся методом социальной инженерии, чтобы поделиться этим файлом csrf.html с целевым пользователем.

Как только жертва откроет этот csrf.html, он получит кнопку подтверждения, при нажатии на нее пароль будет изменен без его ведома.

На изображении ниже вы можете видеть, что CSRF-атака изменяет старый пароль, установленный пользователем «Raj».

Теперь, когда он (жертва) пытается войти со старым паролем, он получит сообщение об ошибке.

CSRF через банковский перевод

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

Интересно, какое отношение ко всему этому имеет CSRF? Давайте посмотрим на следующий сценарий атаки.

Войдите в bWAPP еще раз, затем выберите следующую уязвимость Cross-Site Request Forgery (Transfer Amount) и нажмите кнопку взлома.

На скриншоте ниже вы можете видеть, что у пользователя Raj на счету только 1000 евро.

Попробуем перевести с него какую-то сумму, так как номер счета уже есть в поле.

Процедура CSRF-атаки аналогична описанной выше, используйте пакет burp для захвата отправленного запроса браузера, а затем поделитесь этим запросом в разделе инструментов взаимодействия.

Опять же, он автоматически создаст HTML-форму для перехваченных данных. Просто нажмите «Копировать HTML» и вставьте его в текстовый файл.

Пришло время манипулировать полем значения «», добавить сумму «200» (желаемую злоумышленником), которую необходимо передать, сохраните текстовый документ как csrf.html и затем поделитесь им с целевым пользователем.

Как только жертва откроет этот файл и нажмет кнопку отправки, сумма (введенная злоумышленником) будет передана без его (жертвы) ведома.

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

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

Недостатки CSRF

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

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

Шаги по смягчению последствий

      • Разработчикам следует реализовать использование «токенов Anti-CSRF».
      • Использование атрибутов файлов cookie того же сайта для файлов cookie сеанса, которые могут быть отправлены только в том случае, если запрос выполняется из источника, связанного с файлом cookie (не междоменного).
      • Не используйте запросы GET для операций изменения состояния.
      • Определение источника происхождения (через заголовок Origin / Referer)
      • Одноразовый токен должен быть реализован для защиты CSRF, основанного на взаимодействии с пользователем.
      • Защита от атак XSS, поскольку любой XSS может быть использован для победы над всеми методами защиты от CSRF.

Заключение

Вам нужно продолжать исследовать эту тему для себя, но я думаю, что именно поэтому вы публикуете SO :). CSRF -это очень серьезный и широко распространенный тип уязвимости, о котором должны знать все разработчики веб-приложений.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.