CSRF (Cross-Site Request Forgery) — это тип веб-уязвимости, при котором злоумышленник может заставить пользователя выполнить нежелательные действия на сайте, на котором он аутентифицирован.
Это может привести к изменению данных пользователя, выполнению транзакций или другим нежелательным действиям без его ведома. Чтобы эффективно тестировать веб-приложения на наличие уязвимостей типа CSRF, можно использовать такие инструменты, как Burp Suite.
1. Как происходит CSRF?
CSRF-атака происходит, когда злоумышленник отправляет вредоносный запрос от имени пользователя, который уже авторизован на целевом веб-сайте. Это возможно, потому что сервер не отличает легитимные запросы от поддельных, если они приходят с правильными cookie-файлами и сессиями.
Типичные примеры атак:
- Изменение пароля пользователя.
- Выполнение денежных переводов.
- Изменение профиля пользователя (например, email или телефон).
2. Как работает Burp Suite для тестирования CSRF?
Burp Suite — это мощный инструмент для тестирования безопасности веб-приложений, который включает в себя множество модулей, таких как:
- Proxy для перехвата и мониторинга трафика.
- Repeater для повторения и модификации запросов.
- Intruder для автоматизированных атак.
- CSRF PoC Generator для создания proof-of-concept (PoC) CSRF-эксплойтов.
2.1. Перехват запросов
Для начала тестирования CSRF необходимо настроить Burp Suite на перехват запросов между клиентом (браузером) и сервером. Это можно сделать следующим образом:
1. Настройка Proxy: Настраиваем браузер на работу с прокси-сервером Burp Suite.
2. Перехват запроса: Включаем перехват в Burp Suite и отправляем целевой запрос (например, изменение пароля или выполнение транзакции).
3. Сохранение запроса: После того как запрос был перехвачен, можно сохранить его для дальнейшего использования в Repeater или других модулях.
2.2. Проверка на наличие CSRF-защиты
После перехвата запроса следует обратить внимание на следующие моменты:
- Наличие CSRF-токена: В теле запроса или заголовках должен присутствовать специальный токен (например, csrf_token, authenticity_token и т.д.), который помогает защититься от CSRF-атак.
- Проверка зависимости запроса от токена: Если токен присутствует, попробуйте удалить его или изменить его значение, чтобы проверить, отклоняет ли сервер запрос в случае неправильного токена.
2.3. Использование Repeater для тестирования
- Перенесите перехваченный запрос в модуль Repeater.
- Попробуйте отправить запрос заново без изменений, чтобы убедиться, что он работает корректно.
- Удалите из запроса CSRF-токен (если он есть) и повторно отправьте запрос. Если сервер принимает запрос без токена или с измененным токеном, это указывает на уязвимость к CSRF.
- Включите в запросы дополнительные заголовки (Referer, Origin), если они используются для проверки источника запроса, и попробуйте их модифицировать.
2.4. Создание PoC с помощью CSRF PoC Generator
Если уязвимость CSRF обнаружена, Burp Suite может автоматически сгенерировать простую Proof of Concept (PoC) страницу, которая будет использоваться для демонстрации атаки.
1. В модуле Repeater, где вы подтвердили уязвимость, щелкните правой кнопкой мыши на запрос и выберите опцию Engagement Tools > Generate CSRF PoC.
2. В открывшемся окне вы увидите HTML-код страницы, которая отправляет вредоносный запрос от имени пользователя. Этот код можно разместить на внешнем сайте, и если пользователь перейдет на эту страницу, вредоносный запрос будет выполнен.
Пример кода:
<html>
<body>
<form action="http://target_site.com/change_password" method="POST">
<input type="hidden" name="new_password" value="123456" />
<input type="hidden" name="confirm_password" value="123456" />
<input type="submit" value="Submit request" />
</form>
<script>document.forms[0].submit();</script>
</body>
</html>
Этот код автоматически отправит запрос на изменение пароля, если жертва перейдет на страницу, где он размещен.
2.5. Дополнительные методы защиты, которые можно проверить
- Double Submit Cookies: Иногда веб-приложения используют механизм двойной отправки cookie, где CSRF-токен хранится как в cookie, так и в теле запроса. Проверьте, не допускает ли сервер запросы с несовпадающим токеном.
- SameSite Cookies: Современные браузеры поддерживают атрибут SameSite для cookie, который может ограничить возможность выполнения CSRF-атак. Проверьте, включен ли этот атрибут для чувствительных cookie-файлов (например, сессий).
3. Заключение
Тестирование CSRF с помощью Burp Suite — это важный этап обеспечения безопасности веб-приложений. С его помощью можно не только обнаружить уязвимости, но и создать PoC для демонстрации атаки. Основные шаги по тестированию включают в себя перехват запросов, проверку наличия CSRF-защиты (токенов), а также создание PoC для демонстрации атаки.
Чтобы предотвратить CSRF-атаки, разработчики должны внедрять такие механизмы защиты, как:
- Генерация уникальных CSRF-токенов для каждого запроса.
- Использование атрибута SameSite для cookie.
- Проверка заголовков Referer и Origin.
Burp Suite помогает аналитикам безопасности и пентестерам эффективно выявлять и демонстрировать уязвимости, что позволяет вовремя исправить их и защитить веб-приложение от атак.
Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Обязательно прочитайте: Что должен знать и уметь тестировщик
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам