Attacking GraphQL

Target(s): 94.237.55.43:30165

Escenario

Se le ha encomendado realizar una evaluación de seguridad de la aplicación web de un cliente. Aplique lo que ha aprendido en este módulo para obtener la flag.

Pregunta 1: Aprovecha la vulnerabilidad de la API GraphQL para obtener la flag.

  1. Accedemos al endpoint /graphql desde el navegador:

  1. Haremos una query de las queries de GraphQL permitidas:

Target(s): 83.136.252.171:47901

  1. Ejecutamos una query de introspection para mostrar los types del schema:

  1. Hay varios que podrían interesarnos como los de Add, el de Mutation, etc. Obtendremos el nombre de todos los campos del type AddEmployee con otra query:

  1. Hacemos lo mismo con el type Mutation:

  1. Ejecutamos la query de schema que nos da GraphQL Voyager:

  1. Copiamos y pegamos el resultado que nos da en GraphQL Voyager y le damos a display:

  1. Visualizando el esquema vamos a intentar obtener activeApiKeys:

  1. Enumeramos las API keys existentes:

  1. Antes en la consulta de GraphQL Voyager hemos identificado que hay dos queries que requieren API KEY:

    1. allCustomers

    2. customerByName

  1. Ejecutamos primero la query allCustomers:

  1. Ejecutamos la query customerByName indicando el lastName ahora que los tenemos disponibles:

  1. Lo repetimos con los otros 2 usuarios:

  1. Los ID coinciden y parecen estar codificados en base64:

Target(s): 94.237.56.254:54956

  1. Continuamos utilizando la API key, esta vez para una inyección SQL y obtener los nombres de tablas de la bbdd:

  1. La primera tabla que identificamos es ALL_PLUGINS. Vamos a identificar el resto con el siguiente payload que hemos visto en la teoría pero adaptado a este escenario:

  1. Hemos identificado la tabla flag. Utilizaremos el siguiente payload para extrar la flag:

Última actualización