Подделка межсайтовых запросов (CSRF) - один из старейших способов эксплуатации уязвимостей веб-сайта. Он нацелен на серверные веб-коммутаторы, которые обычно требуют аутентификации, например входа в систему. Во время CSRF-атаки злоумышленник стремится заставить свою жертву сделать неавторизованный вредоносный веб-запрос от ее имени.
Слабые или некачественные методы обеспечения безопасности веб-сайтов и невнимательность на пути пользователя - некоторые из распространенных причин успешной CSRF-атаки.
Давайте посмотрим, что такое CSRF-атака и какие способы вы можете предотвратить от нее как разработчик или пользователь.
Как CSRF-атаки влияют на вас?
CSRF - это атака, используемая для реализации неавторизованных запросов во время веб-действий, требующих входа в систему или аутентификации пользователя. Атаки CSRF могут использовать идентификаторы сеанса, файлы cookie, а также другие серверные уязвимости для кражи учетных данных пользователя.
Например, включение процедур защиты от CSRF предотвращает междоменные вредоносные взаимодействия.
Как только этот барьер сломается, злоумышленник может быстро воспользоваться идентификатором сеанса пользователя с помощью файлов cookie, созданных браузером пользователя, и встроить тег скрипта в уязвимый веб-сайт.
Манипулируя идентификатором, злоумышленник также может перенаправлять посетителей на другую веб-страницу или использовать методы социальной инженерии например, электронная почта для отправки ссылок, побуждающих жертву загрузить вредоносное ПО.
Узнайте, как социальная инженерия может повлиять на вас, а также общие примеры, которые помогут вам определить эти схемы и избежать их.
Как только жертва выполняет такие действия, она отправляет HTTP-запрос на служебную страницу пользователя и санкционирует действие запроса в пользу злоумышленника. Это может иметь разрушительные последствия для ничего не подозревающего пользователя.
Успешная CSRF-атака может привести к тому, что авторизованные пользователи потеряют свои учетные данные для доступа злоумышленнику, особенно во время серверных действий, таких как запросы на изменение пароля или имени пользователя. В худшем случае злоумышленник берет на себя весь сеанс и действует от имени пользователей.
CSRF использовался для перехвата транзакций через Интернет, а также для изменения имен пользователей и паролей, что приводило к потере пользователями доступа к затронутому сервису.
Как злоумышленники захватывают ваши сеансы с помощью CSRF: примеры
Основными целями CSRF-атак являются веб-действия с аутентификацией пользователя. Для успеха необходимы непреднамеренные действия жертвы.
Во время атаки CSRF действия GET, DELETE и PUT, а также уязвимые запросы POST являются основными целями злоумышленника.
Давайте посмотрим на значение этих терминов:
- ПОЛУЧАТЬ: Запрос на сбор результата из базы данных; например поиск Google.
- ПОЧТОВЫЙ: Обычно для отправки запросов через веб-формы. Запрос POST является обычным явлением во время регистрации или входа пользователя в систему, также известный как аутентификация.
- УДАЛИТЬ: Чтобы удалить ресурс из базы данных. Вы делаете это всякий раз, когда удаляете свою учетную запись в определенной веб-службе.
- ПОЛОЖИТЬ: Запрос PUT изменяет или обновляет существующий ресурс. Примером является изменение вашего имени в Facebook.
На практике злоумышленники используют захват сеанса для поддержки атаки CSRF. При использовании этой комбинации злоумышленник может использовать взлом, чтобы изменить IP-адрес жертвы.
Изменение IP-адреса затем регистрирует жертву на новом веб-сайте, где злоумышленник вставил ложную ссылку, которая отправляет реплицированную форму или измененный запрос сервера, который они создали через CSRF.
Затем ничего не подозревающий пользователь думает, что перенаправление исходит от поставщика услуг, и щелкает ссылку на веб-странице злоумышленника. Сделав это, хакеры отправляют форму при загрузке страницы без их ведома.
Пример CSRF-атаки GET-запроса
Представьте, что вы пытаетесь совершить онлайн-платеж через незащищенную платформу электронной коммерции. Владельцы платформы используют запрос GET для обработки вашей транзакции. Этот запрос GET может выглядеть так:
https://websiteurl/pay? сумма = 10 долларов и компания = [аккаунт компании ABC]
Злоумышленник может легко украсть вашу транзакцию, изменив параметры запроса GET. Для этого им нужно только поменять ваше имя на свое или, что еще хуже, изменить сумму, которую вы собираетесь заплатить. Затем они изменяют исходный запрос примерно так:
https://websiteurl/pay? сумма = 20000 долларов и компания = [аккаунт злоумышленника]
После того, как вы щелкнете ссылку на этот измененный запрос GET, вы совершите непреднамеренный перевод в учетную запись злоумышленника.
Выполнение транзакций с помощью запросов GET - плохая практика, которая делает действия уязвимыми для атак.
Пример CSRF-атаки POST-запроса
Однако многие разработчики считают, что использование POST-запроса более безопасно для совершения веб-транзакций. Хотя это правда, к сожалению, запрос POST также подвержен атакам CSRF.
Для успешного перехвата POST-запроса все, что нужно злоумышленнику, - это ваш текущий идентификатор сеанса, несколько реплицированных невидимых форм и иногда небольшая социальная инженерия.
Например, форма запроса POST может выглядеть так:
Однако злоумышленник может поменять местами ваши учетные данные, создав новую страницу и изменив форму выше на это:
В управляемой форме злоумышленник устанавливает значение поля суммы на "30000", меняет местами номер счета получателя на свой, отправляет форму при загрузке страницы, а также скрывает поля формы от Пользователь.
Как только они захватят текущий сеанс, ваша страница транзакции инициирует перенаправление на страницу злоумышленника, которое предлагает вам щелкнуть ссылку, которую, как они знают, вы, скорее всего, посетите.
При нажатии на нее загружается отправка реплицированной формы, которая переводит ваши средства на счет злоумышленника. Это означает, что вам не нужно нажимать кнопки, такие как «отправить», чтобы транзакция состоялась, поскольку JavaScript автоматически делает это при загрузке следующей веб-страницы.
В качестве альтернативы злоумышленник также может составить черновик электронного письма со встроенным HTML-кодом, в котором вам будет предложено щелкнуть ссылку, чтобы выполнить ту же отправку формы загрузки страницы.
Еще одно действие, уязвимое для CSRF-атаки, - это изменение имени пользователя или пароля, пример запроса PUT. Злоумышленник копирует вашу форму запроса и заменяет ваш адрес электронной почты своим.
Затем они крадут ваш сеанс и либо перенаправляют вас на страницу, либо отправляют вам электронное письмо с предложением щелкнуть привлекательную ссылку.
Затем отправляется измененная форма, которая отправляет ссылку для сброса пароля на адрес электронной почты хакера, а не на ваш. Таким образом, хакер изменит ваш пароль и выйдет из вашей учетной записи.
Как предотвратить атаки CSRF в качестве разработчика
Один из лучших методов предотвращения CSRF - использовать часто меняющиеся токены вместо зависимости от файлов cookie сеанса для запуска изменения состояния на сервере.
Связанный: Бесплатные руководства по цифровой безопасности и защите вашей конфиденциальности
Многие современные серверные инфраструктуры предлагают защиту от CSRF. Поэтому, если вы хотите самостоятельно избежать технических проблем, связанных с усилением CSRF, вы можете легко справиться с этим, используя серверные фреймворки, которые поставляются со встроенными токенами против CSRF.
Когда вы используете токен анти-CSRF, серверные запросы генерируют случайные строки вместо более статических уязвимых файлов cookie сеанса. Таким образом, вы защитите свой сеанс от угонщика.
Внедрение системы двухфакторной аутентификации (2FA) для выполнения транзакций в вашем веб-приложении также снижает вероятность CSRF.
Можно инициировать CSRF через межсайтовый скриптинг (XSS), который включает внедрение скрипта в пользовательские поля, такие как формы комментариев. Чтобы предотвратить это, рекомендуется включить автоматический экранирование HTML во всех полях пользовательских форм на вашем веб-сайте. Это действие не позволяет полям формы интерпретировать элементы HTML.
Как предотвратить атаки CSRF как пользователь
Как пользователь веб-службы, которая включает аутентификацию, вы также должны сыграть свою роль в предотвращении кражи ваших учетных данных и сеансов злоумышленниками через CSRF.
Убедитесь, что вы используете надежные веб-службы во время действий, связанных с переводом средств.
В дополнение к этому используйте безопасные веб-браузеры которые защищают пользователей от воздействия сеанса, а также безопасные поисковые системы, защищающие от утечки поисковых данных.
Связанный: Лучшие частные поисковые системы, уважающие ваши данные
Как пользователь, вы также можете полагаться на сторонние аутентификаторы, такие как Google Authenticator или его альтернативы для проверки вашей личности через Интернет.
Хотя вы можете чувствовать себя беспомощным, чтобы помешать злоумышленнику захватить ваш сеанс, вы все равно можете помочь предотвратить это, убедившись, что ваш браузер не хранит такую информацию, как пароли и другую информацию для входа Детали.
Усильте свою безопасность в Интернете
Разработчикам необходимо регулярно тестировать веб-приложения на предмет нарушений безопасности во время разработки и развертывания.
Однако, как правило, вводятся другие уязвимости, пытаясь предотвратить другие. Поэтому будьте осторожны, чтобы не нарушить другие параметры безопасности при попытке заблокировать CSRF.
Создайте надежный пароль, который вы сможете вспомнить позже. Используйте эти приложения, чтобы повысить свою безопасность с помощью новых надежных паролей уже сегодня.
- Безопасность
- Интернет-безопасность
Идову увлечен всеми интеллектуальными технологиями и производительностью. В свободное время он играет с кодированием и переключается на шахматную доску, когда ему скучно, но он также любит время от времени отвлекаться от рутины. Его страсть показывать людям современные технологии побуждает его писать больше.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.