top of page
Writer's pictureParth Shukla

GraphQL exploitation → 💶💶💶

Hello Folks 👋, Parth, this side from BUG XS team. In this blog I am going to discuss about GraphQL Injection. You can find my other write-ups here. We discuss more about GRAPHQL exploitation in our bug bounty batches.DM BUG XS for more info ❤ Let’s get started🙌


ABOUT GRAPHQL:
As we recognize GraphQL became initially advanced and used by Facebook as an internal query language  and so the capabilities of GraphQL on the whole revolve around internal  and improvement regions. GraphQL executes queries that uses type system  with the data described. An important however often left out  characteristic of GraphQL is the potential to invite GraphQL schema  about the supported queries with the help of Introspection System.

WHAT IS GRAPHQL:
It is alternative to API standards like REST and SOAP
It is an Query Language for API. It is used to interact and to fetch data from back-end.
GraphQL are also written in JSON format.
Unlike Rest API, GraphQL get all the data in a single request ( Check below Image)
Now, we have rough idea what is GraphQL. Let’s jump into finding.



FINDING
Lets us consider the target is redacted.com.  Now there are many GraphQL endpoints. Thus, I suggest you to add this  in your fuzzing list. Moreover, burp-suite will help you out with  graphql endpoints. Some of the endpoints are:
-- /graphql
-- /graphiql
-- /graphql.php or /graphql.php/debug=1
-- /graphie/console/ → Online GQL IDE to interact with back-end

I found /graphql endpoint while fuzzing with FFUF.  So, now I tried if it has online IDE for graphql enabled for direct  interaction with server. Unfortunately it was not there 😪 but that  shouldn't put down your motivation because we don't expect online IDE  directly unless you are on lab.
Now,  Burpsuite is always to the rescue if you want to send manipulated  request to the server. So I sent my request to repeater for further  exploitation.
So, till now I found following points:
-- GraphQL is enabled
-- IDE is not enabled.

Introspection Query
Now, what does introspection query really do?
An introspection system can completely reveal the back-end system  defined by developers including  arguments,fields,types,descriptions,deprecated status of types and so  on. This could easily give out the complete map of the back-end system  along with the schema and directives. Thus, getting output for  introspection query is still a vulnerability.
So,  When I executed introspection query, it gave me output defining  relations between fields, types, etc but as I wrote before GraphQL works  in JSON. So, figuring out relations in JSON is really time taking.  Nevertheless, we have apis-guru to the rescue. You can paste your  introspection output and it will give you all the relations of all the  fields and columns. You can check it out here.
With all the relations, I could even do a DOS attack on their server. :-/

So, till now I found following points:
-- GraphQL is enabled
-- IDE is not enabled
-- Back-end system relations with the help of introspection
GRAPHQL MUTATION QUERIES:
What are GraphQL mutation queries used for?
So,  the answer is mutation queries are used to create , edit and delete  data from back end system. After seeing the relations in introspection  query I was able to figure out different methods, what I can edit and  what can do real harm to the redacted.com. Now, I can call different  methods with below query.
{
 __schema{
 queryType{
 name
 }
 }
}
In  query type you can mention what you would like to have. So, I tried to  add data, in gave me authorization error but I guess I could edit data  or delete data because it threw me different error which I knew how to  solve. ( I never did this because they mentioned not to play around  internal data 😂).
Thus I reported this vulnearblity and was rewarded with 💶💶💶.
If you read till here. Let’s Connect!
Instagram ( Community ) : https://www.instagram.com/bug_xs/
Website ( Community ) : https://www.bugxs.co/
Website (Personal ) : https://www.parthshu.com
I hope you found this productive! 🙌
See you soon guys ❤
71 views0 comments

Recent Posts

See All

Comments


bottom of page