
यह स्क्रिप्ट graphql-java में CVE-2024-40094 भेद्यता का शोषण करती है।
यह स्क्रिप्ट graphql-java में CVE-2024-40094 भेद्यता का शोषण करती है, जो ExecutableNormalizedFields (ENF) आधारित सेवा अस्वीकार को ट्रिगर करती है। यह गहरे नेस्टेड उपनामों के साथ एक क्राफ्टेड GraphQL इंट्रोस्पेक्शन क्वेरी बनाती है, जिसे कमजोर सर्वर को अभिभूत करने के लिए डिज़ाइन किया गया है।
स्क्रिप्ट एक लक्ष्य GraphQL सर्वर पर बड़े इंट्रोस्पेक्शन क्वेरी की एक श्रृंखला भेजने के लिए अतुल्यकालिक अनुरोधों का उपयोग करती है। क्वेरीज़ को JSON पेलोड के रूप में भेजा जाता है और इस तरह से संरचित किया जाता है कि वे GraphQL सर्वरों द्वारा गहराई से नेस्टेड इंट्रोस्पेक्शन क्वेरी को संभालने के तरीके में एक विशिष्ट भेद्यता का शोषण करें। समानांतर में ऐसी क्वेरी की बड़ी संख्या को ट्रिगर करके, स्क्रिप्ट का उद्देश्य कमजोर सिस्टम में सेवा अस्वीकार की स्थिति पैदा करना है।
asyncio और aiohttp का उपयोग करता है।यह शोषण graphql-java के एक संवेदनशील संस्करण को चलाने वाले सर्वरों को लक्षित करता है, विशेष रूप से वे जो गहराई से नेस्टेड इंट्रोस्पेक्शन क्वेरी को ठीक से संभाल नहीं पाते।
graphql-java सर्वर (CVE-2024-40094 के प्रति संवेदनशील संस्करण)शोषण चलाने के लिए, आपको Python 3.7+ और निम्नलिखित निर्भरताएँ चाहिए:
aiohttp अतुल्यकालिक HTTP अनुरोधों के लिएurllib3 SSL हैंडलिंग के लिए (स्व-हस्ताक्षरित प्रमाणपत्र चेतावनियों को अक्षम करता है)आप pip का उपयोग करके आवश्यक निर्भरताएँ स्थापित कर सकते हैं:
pip install aiohttp urllib3
सभी मुख्य पैरामीटर रनटाइम पर कमांड-लाइन विकल्पों के माध्यम से प्रदान किए जा सकते हैं:
--url): लक्ष्य GraphQL API URL.--header): आवश्यकतानुसार प्राधिकरण टोकन और अन्य हेडर को अनुकूलित करें। अनुरोध JSON बॉडी भेजते हैं, इसलिए Content-Type: application/json शामिल करें। विकल्प को दोहराया जा सकता है।--job-count): लॉन्च करने के लिए समवर्ती जॉब (कोरूटीन) की संख्या। डिफ़ॉल्ट 50 है।--concurrency-limit): सभी जॉब में एक साथ अनुरोधों की अधिकतम संख्या। JOB_COUNT से ≥ होना चाहिए। डिफ़ॉल्ट जॉब काउंट है; सावधानी से बढ़ाएँ।--alias-count): क्वेरी में उपनाम ब्लॉक की संख्या। यह क्वेरी की गहराई और लोड को नियंत्रित करता है।--delay): अनुरोधों के बीच सेकंड में देरी। बिना देरी के लिए 0 सेट करें या लक्ष्य को बहुत जल्दी अभिभूत करने से बचने के लिए समायोजित करें।--max-requests): प्रत्येक जॉब द्वारा भेजे जाने वाले अनुरोधों की अधिकतम संख्या। असीमित अनुरोधों के लिए 0 का उपयोग करें।रिपॉजिटरी को अपनी स्थानीय मशीन पर क्लोन करें:
git clone https://github.com/kabiri-labs/CVE-2024-40094.git
cd CVE-2024-40094
स्क्रिप्ट चलाएँ, कमांड लाइन पर कोई भी वांछित विकल्प प्रदान करें:
python CVE-2024-40094.py \
--url https://api.example.com/graphql \
--header "Authorization: Bearer <token>" \
--header "Host: api.example.com" \
--job-count 50 \
--alias-count 500 \
--concurrency-limit 50
स्क्रिप्ट लक्ष्य सर्वर पर अनुरोध भेजना शुरू कर देगी। आप प्रत्येक अनुरोध की स्थिति कंसोल पर मुद्रित देखेंगे, और लॉग निर्दिष्ट लॉग फ़ाइल में लिखे जाएंगे।
उदाहरण आउटपुट:
[Worker-0] Status: 200, Len: 1000, Time: 0.35s, Snippet: {"data":{"__schema":{"types":[...]}...
[Worker-1] Status: 200, Len: 1050, Time: 0.37s, Snippet: {"data":{"__schema":{"types":[...]}...
अनधिकृत लक्ष्यों पर उपयोग न करें: यह स्क्रिप्ट नियंत्रित वातावरण में सुरक्षा अनुसंधान और परीक्षण के लिए है। इसे स्पष्ट प्राधिकरण के बिना उत्पादन सर्वर या सिस्टम पर उपयोग न करें।
सेवा अस्वीकार जोखिम: किसी संवेदनशील सर्वर के विरुद्ध इस स्क्रिप्ट को चलाने से वह अनुत्तरदायी हो सकता है या क्रैश हो सकता है। सावधानी से उपयोग करें।
यह स्क्रिप्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। अधिक जानकारी के लिए LICENSE फ़ाइल देखें।