bannerbanner
Хакинг – Угрозы, Взломы, Безопасность
Хакинг – Угрозы, Взломы, Безопасность

Полная версия

Хакинг – Угрозы, Взломы, Безопасность

Язык: Русский
Год издания: 2025
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
6 из 7

формой.

Форма: Форма отправляет POST-запрос на URL https://target-

website.com/change-password, который является целевым сайтом.

Скрытое поле: Поле new_password содержит новое значение пароля,

которое злоумышленник хочет установить для жертвы.

Кнопка отправки: При нажатии на кнопку "Claim Prize" форма отправляет

запрос на целевой сайт.

Когда пользователь, находясь в своем браузере и будучи авторизованным на

целевом сайте, посещает страницу злоумышленника и нажимает на кнопку,

браузер отправляет запрос на изменение пароля, включая все необходимые

аутентификационные данные.

4. Теоретический пример использования




Предположим, что пользователь А авторизован на сайте банка и имеет доступ к

своим счетам. Злоумышленник создает страницу с формой, как в примере выше,

и отправляет ссылку на эту страницу пользователю А через электронную почту,

маскируя ее под предложение о выигрыше.

Когда пользователь А открывает страницу и нажимает на кнопку, происходит

следующее:

1. Браузер пользователя А автоматически отправляет POST-запрос на сайт

банка, включая все необходимые cookies для аутентификации.

2. Сервер банка получает запрос и, не подозревая о подделке, меняет пароль

пользователя А на "hacked_password".

3. В результате злоумышленник получает доступ к аккаунту пользователя А, так

как теперь он может войти с новым паролем.

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

несанкционированный доступ к учетным записям и финансовым данным

пользователей. Поэтому важно применять меры защиты, такие как CSRF-токены,

для предотвращения подобных атак.

Методы защиты от CSRF: Как предотвратить атаки?

1. Описание

Защита от межсайтовой подделки запросов (CSRF) является важной частью

обеспечения безопасности веб-приложений. Существует несколько методов,

которые помогают предотвратить такие атаки. Наиболее распространенными

являются использование CSRF-токенов, проверка заголовка "Referer", а также

реализация механизма "SameSite" для cookies. Каждый из этих методов имеет

свои особенности и может использоваться в зависимости от архитектуры

приложения и его требований безопасности.

2. Пример кода

Рассмотрим пример реализации CSRF-токена в веб-приложении на Python с

использованием фреймворка Flask:

from flask import Flask, request, session, render_template_string

import os

app = Flask(__name__)

app.secret_key = os.urandom(24)

@app.route('/form', methods=['GET'])




def form():

token = os.urandom(16).hex()

session['csrf_token'] = token

return render_template_string('''

data">

''', token=token)

@app.route('/submit', methods=['POST'])

def submit():

if request.form['csrf_token'] != session.get('csrf_token'):

return "CSRF token is missing or invalid!", 403

# Обработка данных

return "Data submitted successfully!"

if __name__ == '__main__':

app.run(debug=True)

3. Подробный разбор кода

Импорт библиотек: Мы используем Flask для создания веб-приложения, а

также библиотеку os для генерации случайных токенов.

Создание приложения: Мы создаем экземпляр приложения Flask и

устанавливаем секретный ключ для сессий.

Маршрут /form:

Генерируется CSRF-токен с помощью os.urandom(16).hex(), который

сохраняется в сессии.

Возвращается HTML-форма, в которой токен передается как скрытое

поле.

Маршрут /submit:

При получении POST-запроса проверяется, совпадает ли токен из формы

с токеном, сохраненным в сессии.

Если токены не совпадают, возвращается ошибка 403 (доступ запрещен).

Если токены совпадают, данные обрабатываются дальше.

4. Теоретический пример использования




Предположим, что у вас есть веб-приложение для управления учетными

записями пользователей. Чтобы предотвратить CSRF-атаки, вы реализовали

механизм CSRF-токенов, как описано выше.

Когда пользователь получает доступ к форме для изменения своих данных,

сервер генерирует уникальный токен для этой сессии и включает его в форму.

Пользователь заполняет форму и отправляет ее. Сервер проверяет, что токен,

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

Если злоумышленник пытается отправить поддельный запрос с другого сайта, он

не сможет получить правильный CSRF-токен, так как он не имеет доступа к

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

останется защищенным от нежелательных действий.

Кроме использования токенов, другие методы защиты, такие как проверка

заголовка "Referer" и использование атрибута "SameSite" для cookies, могут быть

внедрены в зависимости от архитектуры приложения. Например, проверка

"Referer" может быть использована для проверки, что запрос исходит из

доверенного источника, а атрибут "SameSite" помогает предотвратить отправку

cookies с кросс-доменных запросов.

Роль токенов CSRF в веб-безопасности

1. Описание

CSRF-токены (токены межсайтовой подделки запросов) – это уникальные,

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

приложений от атак CSRF. Токены обеспечивают дополнительный уровень

безопасности, позволяя серверу удостовериться, что запросы, поступающие от

клиента, являются легитимными и исходят от аутентифицированных

пользователей. Каждый раз, когда пользователь отправляет запрос, токен должен

быть включен в запрос, и сервер проверяет его на соответствие. Если токен

отсутствует или не совпадает, сервер отклоняет запрос.

2. Пример кода

Рассмотрим пример использования CSRF-токенов в веб-приложении на Node.js с

использованием Express и библиотеки csurf для генерации токенов:

const express = require('express');

const csrf = require('csurf');

const cookieParser = require('cookie-parser');

const app = express();




const csrfProtection = csrf({ cookie: true });

app.use(cookieParser());

app.use(express.urlencoded({ extended: true }));

app.get('/form', csrfProtection, (req, res) => {

res.send(`

value="${req.csrfToken()}">

`);

});

app.post('/submit', csrfProtection, (req, res) => {

// Обработка данных

res.send('Data submitted successfully!');

});

app.use((err, req, res, next) => {

if (err.code === 'EBADCSRFTOKEN') {

return res.status(403).send('CSRF token is invalid or

missing!');

}

next(err);

});

app.listen(3000, () => {

console.log('Server is running on http://localhost:3000');

});

3. Подробный разбор кода

Импорт библиотек: В этом примере мы используем express для создания

веб-приложения, csurf для управления CSRF-токенами и cookie-parser

для работы с cookies.

Создание приложения: Создается экземпляр приложения Express, и

настраивается middleware для обработки cookies и URL-кодирования.

Маршрут /form:

Используется middleware csrfProtection, который генерирует CSRF-

токен и добавляет его в запрос.




Токен передается в HTML-форме как скрытое поле с именем _csrf.

Маршрут /submit:

Этот маршрут также защищен с помощью csrfProtection, что означает,

что сервер проверяет валидность токена, отправленного с POST-

запросом.

Если токен действителен, данные обрабатываются, и пользователю

отправляется сообщение об успешной отправке.

Обработка ошибок: В случае недействительного или отсутствующего токена

возвращается ошибка 403.

4. Теоретический пример использования

Предположим, у вас есть веб-приложение для управления учетными записями

пользователей, и вы хотите защитить его от CSRF-атак. Вы внедрили механизм

CSRF-токенов, как в примере выше.

Когда пользователь открывает страницу с формой, сервер генерирует уникальный

токен и отправляет его вместе с формой. Пользователь заполняет форму и

отправляет ее. Сервер проверяет, что токен, отправленный с запросом, совпадает

с токеном, который был сгенерирован для этой сессии.

Если злоумышленник пытается отправить поддельный запрос с другого сайта, он

не сможет получить правильный CSRF-токен, так как токен привязан к сессии

пользователя и генерируется на сервере. Таким образом, запрос будет отклонен,

и пользователь останется защищенным от нежелательных действий.

Использование CSRF-токенов является одним из наиболее эффективных

способов защиты веб-приложений от атак CSRF, так как они обеспечивают

проверку подлинности запросов и помогают предотвратить несанкционированные

действия со стороны злоумышленников.

Сравнение CSRF и XSS: В чем разница?

1. Описание

Межсайтовая подделка запросов (CSRF) и межсайтовый скриптинг (XSS) – это

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

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

нежелательных действий, они имеют разные механизмы, цели и способы защиты.

CSRF: Атака, при которой злоумышленник заставляет аутентифицированного

пользователя выполнить нежелательное действие на сайте, на котором он

авторизован, отправляя поддельный запрос от имени пользователя.




XSS: Атака, при которой злоумышленник внедряет вредоносный скрипт в веб-

страницу, который затем выполняется в браузере других пользователей,

получая доступ к их данным или выполняя нежелательные действия.

2. Пример кода

Пример CSRF: Отправка поддельного запроса для изменения пароля

пользователя.

method="POST">

Пример XSS: Внедрение вредоносного скрипта на страницу.

3. Подробный разбор кода

CSRF:

В этом примере форма отправляет POST-запрос на изменение пароля на

целевом сайте. Если пользователь аутентифицирован, сервер выполнит

действие, даже если запрос был инициирован с другого сайта.

Злоумышленник может создать страницу с этой формой и заставить

пользователя нажать на кнопку, что приведет к нежелательному

изменению пароля.

XSS:

В этом примере вредоносный скрипт отправляет GET-запрос на API

целевого сайта, чтобы получить данные пользователя.

Если скрипт успешно внедрен на страницу, он будет выполняться в

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

получить доступ к данным, которые могут быть защищены.




4. Теоретический пример использования

CSRF:

Предположим, у вас есть веб-приложение для управления учетными записями

пользователей. Пользователь аутентифицирован и открывает страницу,

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

запрос на изменение пароля. Когда пользователь нажимает кнопку, запрос

отправляется на сервер, и пароль меняется на значение, указанное

злоумышленником. Защита от CSRF может быть реализована с помощью токенов

или проверки реферера.

XSS:

Представьте, что ваше веб-приложение позволяет пользователям оставлять

комментарии, но не фильтрует вводимые данные. Злоумышленник оставляет

комментарий с вредоносным JavaScript-кодом. Когда другие пользователи

открывают страницу с этим комментарием, скрипт выполняется в их браузере, и

злоумышленник получает доступ к их учетным данным. Защита от XSS включает

в себя фильтрацию и экранирование пользовательского ввода, а также

использование Content Security Policy (CSP).

Взаимосвязь между CSRF и XSS

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

может быть использована для реализации CSRF. Если злоумышленник успешно

внедрит вредоносный скрипт с помощью XSS, этот скрипт может отправить

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

Поэтому важно применять комплексные меры безопасности для защиты веб-

приложений от обоих типов атак.

Примеры реальных атак CSRF и их последствия

1. Описание

Межсайтовая подделка запросов (CSRF) может иметь серьезные последствия

для пользователей и компаний, подвергшихся атаке. Уязвимости CSRF позволяют

злоумышленникам выполнять действия от имени аутентифицированных

пользователей без их ведома. Это может привести к несанкционированным

транзакциям, изменению учетных данных, утечке личной информации и другим

негативным последствиям. Рассмотрим несколько известных случаев атак CSRF

и их влияние.

2. Пример кода





Хотя в данном разделе не будет конкретного кода, поскольку примеры атак CSRF

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

описать, как могла быть реализована атака.

Пример атаки на веб-приложение с использованием CSRF:

1. Пользователь аутентифицирован на сайте банка.

2. Злоумышленник создает страницу с формой, которая отправляет запрос на

перевод средств на его счет.

3. При посещении этой страницы пользователем и нажатии кнопки

"Подтвердить" отправляется POST-запрос с необходимыми данными, включая

аутентификационные cookies пользователя.

3. Подробный разбор кода

Вместо кода, давайте разберем несколько примеров реальных атак:

Атака на сайт PayPal (2014):

Злоумышленник создал страницу с формой, которая отправляла запрос

на перевод денег с аккаунта пользователя на его собственный счет.

Пользователь, находясь на странице злоумышленника, нажимал кнопку, и

запрос отправлялся на PayPal, используя его аутентификационные

cookies.

В результате, пользователи теряли деньги, а PayPal столкнулся с

репутационными потерями и необходимостью усилить защиту.

Атака на GitHub (2018):

В GitHub была обнаружена уязвимость CSRF, которая позволяла

злоумышленникам изменять настройки учетной записи пользователя.

Пользователи могли случайно стать жертвами, если они открывали

вредоносные ссылки, находясь в своей учетной записи GitHub.

GitHub быстро выпустил патч для устранения уязвимости, но инцидент

продемонстрировал, насколько важно защищать свои приложения от

CSRF.

4. Теоретический пример использования

Случай с социальной сетью:

Предположим, что у вас есть социальная сеть, где пользователи могут отправлять

сообщения друг другу. Злоумышленник создает страницу с формой, которая

отправляет POST-запрос на отправку сообщения от имени пользователя.

Пользователь, находясь в своей учетной записи и открыв страницу




злоумышленника, нажимает кнопку "Отправить сообщение". Запрос выполняется,

и сообщение отправляется, даже если пользователь не хотел этого делать.

Последствия:

Пользователь может потерять контроль над своими сообщениями.

Доверие к социальной сети может быть подорвано, что приведет к потере

пользователей.

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

внедрение CSRF-токенов и других методов защиты.

Заключение

Атаки CSRF могут иметь серьезные последствия как для пользователей, так и для

компаний. Изучение реальных случаев атак помогает понять важность защиты

веб-приложений и необходимость внедрения эффективных мер безопасности.

Применение CSRF-токенов, проверка реферера и других методов защиты может

значительно уменьшить риски, связанные с такими атаками.

Инструменты для тестирования на уязвимости CSRF

1. Описание

Тестирование веб-приложений на уязвимости CSRF является важным этапом

обеспечения их безопасности. Существуют различные инструменты и методы,

которые могут помочь в обнаружении уязвимостей CSRF. Эти инструменты могут

автоматически генерировать запросы, анализировать ответы сервера и выявлять

потенциальные слабости в защите веб-приложений. В этом разделе мы

рассмотрим несколько популярных инструментов для тестирования на

уязвимости CSRF и их функциональные возможности.

2. Пример кода

Хотя многие инструменты для тестирования CSRF не требуют написания кода,

можно привести пример использования одного из них – инструмента Burp Suite.

Ниже приведен пример настройки Burp Suite для обнаружения CSRF-

уязвимостей.

1. Настройка Burp Suite:

На страницу:
6 из 7