
GraphQL सर्वर इंजन फ़िंगरप्रिंटिंग उपकरण जो बैकएंड तकनीक की पहचान करने और GraphQL Threat Matrix के माध्यम से सुरक्षा रक्षा प्रणालियों का आकलन करने के लिए सौम्य और दोषपूर्ण क्वेरी भेजता है।
<h1 align="center">
<img src="https://raw.githubusercontent.com/dolevf/graphw00f/main/static/graphw00f.png?raw=true" height="50%" width="50%" alt="graphw00f"/>
<br>
</h1>
<h5 align="center">
<small>क्रेडिट्स <a href="https://github.com/nicholasaleks">निक अलेक्स </a>को लोगो के लिए!</small>
</h5>
<h1 align="center">
graphw00f - GraphQL सर्वर फिंगरप्रिंटिंग
</h1>
# विषय सूची
* [यह कैसे काम करता है?](#how-does-it-work)
* [पहचान](#detections)
* [GraphQL खतरा मैट्रिक्स](#graphql-threat-matrix)
* [पूर्वापेक्षाएँ](#prerequisites)
* [स्थापना](#installation)
* [विन्यास](#configuration)
* [उपयोग उदाहरण](#example)
* [GraphQL फिंगरप्रिंटिंग](#fingerprinting-graphql)
* [GraphQL का पता लगाना और फिंगरप्रिंट करना](#detecting-and-fingerprinting-graphql)
* [समर्थन और समस्याएँ](#support-and-issues)
* [संसाधन](#resources)
# यह कैसे काम करता है?
graphw00f (wafw00f से प्रेरित) GQL एंडपॉइंट्स के लिए GraphQL फिंगरप्रिंटिंग उपकरण है, यह पर्दे के पीछे चल रहे GraphQL इंजन को निर्धारित करने के लिए सामान्य और विकृत क्वेरीज़ का मिश्रण भेजता है।
graphw00f GraphQL Threat Matrix परियोजना का उपयोग करेगा ताकि यह जानकारी प्रदान कर सके कि प्रत्येक तकनीक बॉक्स से बाहर कौन सी सुरक्षा रक्षा प्रदान करती है, और वे डिफ़ॉल्ट रूप से चालू या बंद हैं या नहीं।
विशेष रूप से तैयार की गई क्वेरीज़ विभिन्न GraphQL सर्वर कार्यान्वयनों को क्वेरीज़, म्यूटेशन और सब्सक्रिप्शन के लिए अद्वितीय रूप से प्रतिक्रिया देने का कारण बनती हैं, जिससे बैकएंड इंजन को फिंगरप्रिंट करना और विभिन्न GraphQL कार्यान्वयनों के बीच अंतर करना आसान हो जाता है। (CWE: [CWE-200](https://cwe.mitre.org/data/definitions/200.html))
graphw00f GET या POST-आधारित क्वेरी का उपयोग करने वाले GraphQL सर्वरों का पता लगाने और फिंगरप्रिंट करने में सक्षम है।
# पहचान
graphw00f वर्तमान में निम्नलिखित GraphQL इंजनों की खोज करने का प्रयास करता है:
* Graphene - Python
* Ariadne - Python
* Apollo - TypeScript
* graphql-go - Go
* gqlgen - Go
* WPGraphQL - PHP
* GraphQL API for Wordpress - PHP
* Gato GraphQL - PHP
* graphql-ruby - Ruby
* graphql-php - PHP
* Hasura - Haskell
* HyperGraphQL - Java
* graphql-java - Java
* Juniper - Rust
* Sangria - Scala
* Flutter - Dart
* Diana.jl - Julia
* Strawberry - Python
* Tartiflette - Python
* Dgraph - JavaScript
* Directus - TypeScript
* AWS AppSync
* GraphQL Yoga - TypeScript
* Lighthouse - PHP
* Agoo - Ruby
* Mercurius - JavaScript
* morpheus-graphql - Haskell
* Lacinia - Clojure
* Caliban - Scala
* jaal - Golang
* absinthe-graphql - Elixir
* GraphQL.NET - Microsoft .NET
* pg_graphql - Rust
* tailcall - Rust
* Hot Chocolate - Microsoft .NET
* Inigo - Go
* ballerina-graphql - Ballerina
# GraphQL खतरा मैट्रिक्स
graphw00f परियोजना अपने प्रौद्योगिकी सुरक्षा मैट्रिक्स डेटाबेस के रूप में [GraphQL Threat Matrix Project](https://github.com/nicholasaleks/graphql-threat-matrix/) का उपयोग करती है। जब graphw00f किसी GraphQL एंडपॉइंट को सफलतापूर्वक फिंगरप्रिंट करता है, तो यह खतरा मैट्रिक्स दस्तावेज़ को प्रिंट करेगा। यह दस्तावेज़ सुरक्षा इंजीनियरों को यह पहचानने में मदद करता है कि तकनीक कितनी परिपक्व है, यह कौन सी सुरक्षा सुविधाएँ प्रदान करती है, और इसमें कोई CVE शामिल हैं या नहीं।

# पूर्वापेक्षाएँ
* python3
* requests
# स्थापना
## रिपॉजिटरी क्लोन करें
`git clone https://github.com/dolevf/graphw00f.git`
## graphw00f चलाएँ
```
Usage: main.py -d -f -t http://example.com
Options:
-h, --help show this help message and exit
-r, --noredirect Do not follow redirections given by 3xx responses
-t URL, --target=URL target url with the path
-f, --fingerprint fingerprint mode
-d, --detect detect mode
-p PROXY, --proxy=PROXY
HTTP(S) proxy URL in the form
http://user:pass@host:port
-T TIMEOUT, --timeout=TIMEOUT
Request timeout in seconds
-o OUTPUT_FILE, --output-file=OUTPUT_FILE
Output results to a file (CSV)
-l, --list List all GraphQL technologies graphw00f is able to
detect
-u USERAGENT, --user-agent=USERAGENT
Custom user-agent to use (overrides the one from
headers configuration)
-H HEADER, --header=HEADER
Custom headers to send (e.g. "Authorization: Bearer
ey...").
-w WORDLIST, --wordlist=WORDLIST
Path to a list of custom GraphQL endpoints
-v, --version Print out the current version and exit.
```
# विन्यास
graphw00f के लिए बहुत अधिक विन्यास की आवश्यकता नहीं है। लेकिन, यदि आपको किसी विशेष एंडपॉइंट के लिए प्राधिकरण हेडर या कुकीज़ सेट करने जैसी चीज़ों की आवश्यकता है, तो `conf.py` फ़ाइल का उपयोग करें।
```
# Custom Headers
HEADERS = {'User-Agent':'graphw00f'}
# Custom Cookies
COOKIES = {"PHPSESS":"DEADBEEF"}
```
`--user-agent` का उपयोग करने से `User-Agent` कुंजी जोड़ी जाती है, भले ही `conf.py` फ़ाइल में यह हो या नहीं, यदि फ़ाइल में पहले से एक है, तो कमांड-लाइन पैरामीटर इसे ओवरराइड करता है।
# उदाहरण
## GraphQL फिंगरप्रिंटिंग
यह एक उदाहरण है कि किसी एंडपॉइंट को कैसे फिंगरप्रिंट करें (`-f`) जहाँ GraphQL का स्थान पहले से ज्ञात है (`/graphql`)
```
python3 main.py -f -t https://demo.hypergraphql.org:8484/graphql
+-------------------+
| graphw00f |
+-------------------+
*** ***
** ***
** **
+--------------+ +--------------+
| Node X | | Node Y |
+--------------+ +--------------+
*** ***
** **
** **
+------------+
| Node Z |
+------------+
graphw00f - v1.0.7
The fingerprinting tool for GraphQL
Dolev Farhi <[email protected]>
[*] Checking if GraphQL is available at https://demo.hypergraphql.org:8484/graphql...
[*] Found GraphQL...
[*] Attempting to fingerprint...
[*] Discovered GraphQL Engine: (HyperGraphQL)
[!] Attack Surface Matrix: https://github.com/dolevf/graphw00f/blob/main/docs/hypergraphql.md
[!] Technologies: Java
[!] Homepage: https://www.hypergraphql.org
[*] Completed.
```
## GraphQL का पता लगाना और फिंगरप्रिंट करना
यह एक उदाहरण है कि graphw00f कैसे पता लगा सकता है (`-d`) कि GraphQL कहाँ है और फिर फिंगरप्रिंटिंग प्रक्रिया को निष्पादित कर सकता है (`-f`).
```
python3 main.py -f -d -t http://localhost:5000
+-------------------+
| graphw00f |
+-------------------+
*** ***
** ***
** **
+--------------+ +--------------+
| Node X | | Node Y |
+--------------+ +--------------+
*** ***
** **
** **
+------------+
| Node Z |
+------------+
graphw00f - v1.1.2
The fingerprinting tool for GraphQL
Dolev Farhi <[email protected]>
[*] Checking http://dvga.example.local:5000/graphql
[!] Found GraphQL at http://dvga.example.local:5000/graphql
[*] Attempting to fingerprint...
[*] Discovered GraphQL Engine: (Graphene)
[!] Attack Surface Matrix: https://github.com/nicholasaleks/graphql-threat-matrix/blob/master/implementations/graphene.md
[!] Technologies: Python
[!] Homepage: https://graphene-python.org
[*] Completed.
```
# समर्थन और समस्याएँ
graphw00f के साथ किसी भी समस्या जैसे झूठी सकारात्मकता, गलत पहचान, बग आदि के लिए, कृपया पर्यावरण विवरण के साथ एक GitHub समस्या बनाएं।
# संसाधन
GraphQL के बारे में और अधिक जानना चाहते हैं? मेरी अन्य परियोजना पर जाएँ और GraphQL हैक करें: [Damn Vulnerable GraphQL Application](https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application/)