🔍
Пять простых способов найти баги в веб-приложении с GraphQLНашел хост GraphQL? Это тот самый строго типизированный язык запросов, который разработчики используют для простого извлечения данных.
💡
Мини-чек-лист для багхантера:☑️ Запускаем introspection-запрос — получаем карту всех типов, запросов и мутаций.
☑️ Визуализируем структуру через GraphQL Voyager — это упростит анализ.
☑️ Используем BatchQL или расширение InQL — ищем IDOR, SQL-инъекции, SSRF и др.
☑️ Проверяем на CSRF, особенно если авторизация на основе cookie.
☑️ Тестим обход rate limit и DoS через батч-запросы.
🚀
Разберем подробнее
1️⃣
Introspection-запросЕсли включен — bingo. Получаем всю схему: типы, запросы, мутации. Собранную структуру удобно анализировать через
GraphQL Voyager: он отлично фильтрует мутации и показывает архитектуру API.
2️⃣
Introspection отключен?Не беда. GraphQL-серверы вроде Apollo часто поддерживают
автодополнение: они подсказывают поля даже без схемы.
Вручную перебирать — боль, поэтому подключаем
Clairvoyance: он восстанавливает схему даже без introspection.
3️⃣
CSRF
GraphQL сам по себе не защищен от CSRF. Если сессии на cookie, а не через Authorization-заголовок, — риск высокий. Пример: можно подделать запрос от пользователя без его ведома.
4️⃣
Обход лимитов
Многие лимиты считают
HTTP-запросы, а не количество вложенных GraphQL-запросов.
GraphQL позволяет использовать
алиасы: шлем кучу запросов в одном теле, сервер в шоке, лимит не триггерится.
5️⃣
DoS через батч-запросыЕсли сервер не ограничивает число обработанных запросов в одной пачке — мы просто заваливаем его ресурсоемкими мутациями. Это может легко положить сервис.
💡 Автоматизация:• BatchQL — проверка батчей, мутаций, SSRF, SQLi, IDOR и прочего.
• GraphQL Cop — делает 10+ тестов безопасности, включая CSRF.
• InQL — расширение для Burp Suite, идеально интегрируется и помогает в перехвате GraphQL-запросов.
P. S. При подготовке поста вдохновлялись
статьей багбаунти-площадки Intigriti.