- PVSM.RU - https://www.pvsm.ru -
В настоящее время все больше компаний начинают использовать GraphQL [1]. Это относительно новая технология (если быть более точным, то это язык запросов), которая призвана решить существующие проблемы REST [2].
Если вы еще не знакомы с GraphQL [1], то рекомендую начать с ресурсов:
В этой статье я хочу поделиться одним из инструментов для поиска уязвимостей в GraphQL API. Если вы искали уязвимости в GraphQL API, то наверняка сталкивались с такими проблемами:
В решении этих проблем хорошим помощником является GraphQL Voyager [6], который визуализирует GraphQL schema. Визуализация значительно облегчает понимание GraphQL API и помогает быстрее найти уязвимости.
Прежде чем искать уязвимости мы хотим понять какие данные можно получить и какие операции выполнить с помощью GraphQL API. Как правило, не будет страницы с документацией, потому что GraphQL содержит документацию внутри себя. Получить документацию можно с помощью специального запроса, который вернет GraphQL схему, которая содержит всю публичную информацию о GraphQL API (о том как это сделать — дальше по тексту).
Чаще всего схема — это огромный JSON, и очень трудно разобраться в API, просто читая его. Другое дело — визуальное представление того же самого JSON-а:
JSON vs IMAGE
В первую очередь вам необходимо найти URL, на котором находится GraphQL API. Это можно сделать несколькими способами:
Найдя URL для GraphQL API-шки можно переходить к использованию GraphQL Voyager. Это довольно просто. Для примера, визуализировать SWAPI GraphQL [10] можно в три шага:
Примечание: конкретные шаги могут варьироваться от одного API к другому, т.к. запросы в GraphQL могут быть реализованы по-разному.
После этого перед вами будет интуитивно понятный интерфейс, содержащий: граф с объектами, их полями и связями между объектами.
Теперь стало намного понятнее
Не пугайтесь, если у вас получилась огромная схема. В GraphQL API может быть очень много функционала, так же как и REST API, поэтому, даже несмотря на удобное представление, все равно потребуется время на изучение всех деталей.
GraphQL Voyager — незаменимый инструмент при тестировании GraphQL API. С его помощью можно увидеть полную картину и понять, как использовать GraphQL API.
Можно сделать Voyager еще лучше, если добавить в него возможность сравнивать две схемы. Идея в том, чтобы отслеживать изменения в GraphQL и при возникновении изменений визуализировать их. Это поможет быстро узнавать о новом функционале или о модификации старого функционала.
Я создал тикет на GitHub для этой фичи [11]. Вы можете оказать содействие в разработке, например, такими способами:
Автор: nikitastupin
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/314773
Ссылки в тексте:
[1] GraphQL: https://graphql.org/
[2] REST: https://ru.wikipedia.org/wiki/REST
[3] https://www.howtographql.com/: https://www.howtographql.com/
[4] https://graphql.org/learn/: https://graphql.org/learn/
[5] https://graphql.github.io/graphql-spec/June2018: https://graphql.github.io/graphql-spec/June2018
[6] GraphQL Voyager: https://apis.guru/graphql-voyager/
[7] https://medium.com/@localh0t/discovering-graphql-endpoints-and-sqli-vulnerabilities-5d39f26cea2e: https://medium.com/@localh0t/discovering-graphql-endpoints-and-sqli-vulnerabilities-5d39f26cea2e
[8] https://developer.github.com/v4/: https://developer.github.com/v4/
[9] https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53: https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53
[10] SWAPI GraphQL: https://github.com/graphql/swapi-graphql
[11] тикет на GitHub для этой фичи: https://github.com/APIs-guru/graphql-voyager/issues/113
[12] GraphQL Voyager открытый исходный код: https://github.com/APIs-guru/graphql-voyager
[13] Источник: https://habr.com/ru/post/448354/?utm_campaign=448354
Нажмите здесь для печати.