GraphQL Voyager como herramienta para encontrar vulnerabilidades



Actualmente, cada vez m谩s empresas est谩n comenzando a usar GraphQL . Esta es una tecnolog铆a relativamente nueva (para ser m谩s precisos, es un lenguaje de consulta), que est谩 dise帽ada para resolver problemas REST existentes.

Si no est谩 familiarizado con GraphQL , le recomiendo comenzar con los recursos:


En este art铆culo quiero compartir una de las herramientas para encontrar vulnerabilidades en la API GraphQL. Si estaba buscando vulnerabilidades en la API GraphQL, entonces probablemente encontr贸 tales problemas:

  • En lugar de documentaci贸n, tiene un enorme JSON ilegible (esquema GraphQL).
  • La aplicaci贸n web usa solo una parte de la API GraphQL, por lo que no ve todos los datos y puntos finales.

Un buen ayudante para resolver estos problemas es GraphQL Voyager , que representa el esquema GraphQL. La visualizaci贸n facilita enormemente la comprensi贸n de la API GraphQL y ayuda a encontrar vulnerabilidades m谩s r谩pido.

驴Por qu茅 usar GraphQL Voyager?


Antes de buscar vulnerabilidades, queremos entender qu茅 datos se pueden obtener y qu茅 operaciones se pueden realizar con la API GraphQL. Como regla general, no habr谩 p谩gina de documentaci贸n, porque GraphQL contiene documentaci贸n dentro de s铆 mismo. Puede obtener la documentaci贸n mediante una solicitud especial que devuelve un esquema GraphQL que contiene toda la informaci贸n p煤blica sobre la API GraphQL (m谩s informaci贸n sobre c贸mo hacerlo).

Muy a menudo, un esquema es un gran JSON, y es muy dif铆cil entender la API con solo leerlo. Otra cosa es una representaci贸n visual del mismo JSON:


JSON vs IMAGEN

驴C贸mo usar GraphQL Voyager?


En primer lugar, debe encontrar la URL donde se encuentra la API GraphQL. Hay varias formas de hacer esto:

  1. Ver las solicitudes del cliente (navegador, aplicaci贸n m贸vil).
  2. Iterar sobre las URL est谩ndar para GraphQL. Por ejemplo: / graphql, / api / graphql, ... (se pueden encontrar m谩s URL aqu铆 https://medium.com/@localh0t/discovering-graphql-endpoints-and-sqli-vulnerabilities-5d39f26cea2e ).
  3. Encuentre una menci贸n en la documentaci贸n ( https://developer.github.com/v4/ ) o las noticias ( https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53 ).

Una vez que encuentre la URL para las API GraphQL, puede proceder a usar GraphQL Voyager. Es bastante simple Por ejemplo, puede visualizar SWAPI GraphQL en tres pasos:

Paso 1. Copie la consulta de introspecci贸n (una consulta que devuelve un esquema):

  1. Vaya a https://apis.guru/graphql-voyager/ .
  2. Haga clic en "Esquema personalizado".
  3. Haga clic en "Copiar consulta de introspecci贸n".

Paso 2. Ejecute la consulta de introspecci贸n:

  1. Vaya a https://graphql.imtqy.com/swapi-graphql .
  2. Inserte una consulta de introspecci贸n en la consulta (lado izquierdo de la p谩gina).
  3. Enviar una solicitud

Paso 3. Copie el diagrama resultante (el lado derecho de la p谩gina) y p茅guelo en Voyager.

Nota : los pasos espec铆ficos pueden variar de una API a otra, como Las consultas en GraphQL se pueden implementar de diferentes maneras.

Despu茅s de eso, tendr谩 una interfaz intuitiva que contiene: un gr谩fico con objetos, sus campos y relaciones entre objetos.


Ahora es mucho m谩s claro

No se alarme si tiene un gran esquema. La API GraphQL puede tener mucha funcionalidad, as铆 como la API REST, por lo tanto, incluso a pesar de la presentaci贸n conveniente, todav铆a tomar谩 tiempo estudiar todos los detalles.

Conclusi贸n


GraphQL Voyager es una herramienta indispensable cuando se prueba la API GraphQL. Con 茅l, puede ver la imagen completa y comprender c贸mo usar la API GraphQL.

Puede hacer que Voyager sea a煤n mejor si agrega la capacidad de comparar dos esquemas. La idea es hacer un seguimiento de los cambios en GraphQL y visualizarlos cuando se producen cambios. Esto ayudar谩 a aprender r谩pidamente sobre la nueva funcionalidad o sobre la modificaci贸n de la funcionalidad anterior.

Cre茅 un ticket en GitHub para esta funci贸n . Puede ayudar en el desarrollo, por ejemplo, de las siguientes maneras:

  1. (versi贸n f谩cil) Vote por la funci贸n. Por lo tanto, se elevar谩 la prioridad de su desarrollo.
  2. (versi贸n dif铆cil) Escriba el c贸digo usted mismo, porque GraphQL Voyager tiene c贸digo fuente abierto .

Source: https://habr.com/ru/post/448354/


All Articles