Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
codeql-workshop-cve-2021-21380 — CVE-2021-21380 को कवर करने वाली एक CodeQL कार्यशाला | Kitploit
उपकरण/GitHubGitHub/rvermeulen/codeql-workshop-cve-2021-21380
स्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणवेब सुरक्षालर्निंग और शिक्षालैब और अभ्यास
GitHubrvermeulen/codeql-workshop-cve-2021-21380

codeql-workshop-cve-2021-21380

CVE-2021-21380 को कवर करने वाली एक CodeQL कार्यशाला

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
रिपॉजिटरी देखें
125141 साल पहलेअभी तक समीक्षित नहीं
साझा करें

जावा के लिए CodeQL कार्यशाला: SQL इंजेक्शन ढूँढना

इस कार्यशाला में हम CVE-2021-21380 द्वारा प्रलेखित XWiki प्लेटफ़ॉर्म के रेटिंग घटक में SQL इंजेक्शन खोजने के लिए वाक्यात्मक और अर्थगत तर्क का उपयोग करेंगे।

सामग्री

  • जावा के लिए CodeQL कार्यशाला: SQL इंजेक्शन ढूँढना
    • सामग्री
    • पूर्वापेक्षाएँ और सेटअप निर्देश
      • आपकी स्थानीय मशीन पर
        • स्थापना
        • सेटअप चरण
    • कार्यशाला
      • सीखने के बिंदु
      • समस्या विवरण
      • अभ्यास
        • अभ्यास 1
        • अंतराल 1
        • अभ्यास 2
        • अभ्यास 3
        • अंतराल 2
        • अभ्यास 4
        • अभ्यास 5
        • अंतराल 3
        • अभ्यास 6
        • अभ्यास 7
        • अभ्यास 8
    • आगे क्या?

पूर्वापेक्षाएँ और सेटअप निर्देश

आपकी स्थानीय मशीन पर

यदि संभव हो तो कृपया कार्यशाला से पहले यह अनुभाग पूरा करें।

स्थापना

  • Visual Studio Code स्थापित करें।

  • Visual Studio Code के लिए CodeQL एक्सटेंशन स्थापित करें।

  • आपको CodeQL CLI स्थापित करने की आवश्यकता नहीं है: एक्सटेंशन आपके लिए यह संभाल लेगा।

  • इस रिपॉजिटरी को क्लोन करें:

    git clone https://github.com/advanced-security/codeql-workshop-cve-2021-21380.git
    

सेटअप चरण

  • कार्यशाला में उपयोग के लिए CodeQL डेटाबेस आयात करें:
    • Explorer दृश्य में xwiki-platform-CVE-2021-21380.zip फ़ाइल पर राइट-क्लिक करें और CodeQL: Set Current Database कमांड चुनें।
    • डेटाबेस CodeQL डेटाबेस दृश्य में दिखाई देगा जो गतिविधि पट्टी पर QL आइकन से सुलभ है।
  • जावा कोड का विश्लेषण करने और अभ्यासों और समाधानों के परीक्षण चलाने के लिए निर्भरताएँ स्थापित करें।
    • कमांड पैलेट (Cmd/Ctrl+Shift+P) से, CodeQL: Install Pack Dependencies कमांड खोजें और चलाएँ।
    • अपने VS Code विंडो के शीर्ष पर, सूची को फ़िल्टर करने के लिए बॉक्स में github टाइप करें।
    • cve-2021-21380-exercises, cve-2021-21380-exercises-tests, cve-2021-21380-solutions, और cve-2021-21380-solutions-tests के आगे वाले बॉक्स चेक करें।
    • OK/Enter पर क्लिक करें।
  • समाधानों के परीक्षण चलाकर सत्यापित करें कि सब कुछ अपेक्षित रूप से काम करता है।
    • परीक्षण दृश्य खोलें और ट्री में solutions आइटम के बगल में रन टेस्ट (समाधानों पर होवर करने पर प्ले आइकन दिखाई देता है) दबाएँ।

कार्यशाला

सीखने के बिंदु

कार्यशाला को कई अभ्यासों में विभाजित किया गया है जो Java के लिए QL भाषा समर्थन का परिचय देते हैं और ज्ञात SQL इंजेक्शन खोजने के लिए एक अंतिम क्वेरी के साथ समाप्त होते हैं। इन अभ्यासों में आप सीखेंगे:

  • वाक्यात्मक जानकारी के बारे में तर्क कैसे करें।
  • अर्थगत जानकारी के बारे में तर्क कैसे करें।
  • पैटर्न व्यक्त करने के लिए Java के लिए QL भाषा समर्थन का अन्वेषण करें।
  • मौजूदा मॉडलिंग का पुन: उपयोग और विस्तार कैसे करें, इसका अन्वेषण करें।
  • अंतिम क्वेरी बनाने के लिए कई बिल्डिंग ब्लॉक्स का उपयोग करें।

समस्या विवरण

इस कार्यशाला में हम XWiki Platform के रेटिंग्स API घटक में ज्ञात SQL इंजेक्शन भेद्यताओं की तलाश करेंगे। ऐसी भेद्यताएँ अनुप्रयोगों में तब हो सकती हैं जब किसी बाहरी उपयोगकर्ता द्वारा नियंत्रित जानकारी उस अनुप्रयोग कोड तक पहुँचती है जो असुरक्षित रूप से SQL क्वेरी बनाता है और उसे निष्पादित करता है।

इस कार्यशाला में चर्चित ज्ञात SQL इंजेक्शन की समीक्षा GitHub Advisory Database में GHSA-79rg-7mv3-jrr5 पर की गई है। SQL इंजेक्शन और संभावित प्रकारों को खोजने के लिए, हम निम्नलिखित उप-समस्याओं को हल करेंगे:

  • अविश्वसनीय जानकारी के स्रोत की पहचान करें और QL में इसका मॉडल बनाएँ।
  • सिंक (SQL क्वेरी निष्पादित करने वाली विधि) की पहचान करें और QL में इसका मॉडल बनाएँ।
  • स्रोत और सिंक के बीच सूचना प्रवाह है या नहीं यह निर्धारित करने के लिए उपरोक्त समाधानों को टेंट ट्रैकिंग का उपयोग करके संयोजित करें।

अभ्यास

पहले कुछ अभ्यासों में हम अमूर्त सिंटैक्स ट्री (AST) का उपयोग करके वाक्यात्मक जानकारी के बारे में तर्क करेंगे, ताकि पहचान सकें:

  • भेद्यता की समझ बनाने के लिए सुरक्षा सलाह में वर्णित विधि
  • पैरामीटर जिनमें अविश्वसनीय डेटा है, हमारे स्रोत
  • विधि कॉल जो SQL स्टेटमेंट स्वीकार करते हैं, हमारे सिंक

अभ्यास 1

क्वेरी exercise1.ql को पूरा करके प्रोग्राम में getAverageRating नाम वाली सभी विधियाँ और उसके घोषित प्रकार का पता लगाएँ।

संकेत
  • java मॉड्यूल प्रोग्राम में विधियों के बारे में तर्क करने के लिए एक वर्ग Method प्रदान करता है।
  • वर्ग Method एक विधि के नाम के बारे में तर्क करने के लिए सदस्य विधेय getName और hasName प्रदान करता है।
  • वर्ग Method विधि को घोषित करने वाले प्रकार के बारे में तर्क करने के लिए सदस्य getDeclaringType प्रदान करता है।

समाधान क्वेरी exercise1.ql में पाया जा सकता है।

अंतराल 1

अभ्यास 1 का समाधान विधियों की एक सूची लौटाता है। उनमें से कुछ RatingsManager नामक एक इंटरफ़ेस में परिभाषित हैं और कुछ वर्गों AbstractRatingsManager और RatingsScriptService में परिभाषित हैं।

क्वेरी और XWiki घटक दस्तावेज़ीकरण द्वारा लौटाई गई जानकारी से हम अनुमान लगा सकते हैं कि:

  • XWiki एक्सटेंशन और अनुकूलन की अनुमति देने के लिए घटक-उन्मुख डिज़ाइन का उपयोग करता है।
  • भेद्य विधि एक घटक का हिस्सा है।
  • एक घटक में एक इंटरफ़ेस होता है, जिसे Role से एनोटेट किया जाता है, और एक कार्यान्वयन होता है जिसे Component से एनोटेट किया जाता है।
  • एक घटक जो ScriptService का विस्तार करता है, स्क्रिप्टिंग के माध्यम से विकि पृष्ठों के लिए सुलभ बनाया जाता है।

अभ्यास 2

क्वेरी exercise2.ql को पूरा करके Component एनोटेशन से एनोटेट किए गए सभी वर्गों का पता लगाएँ। ध्यान दें कि एनोटेशन के प्रकार का पूर्ण योग्य नाम org.xwiki.component.annotation.Component है।

संकेत
  • /class domain type/ (इसके सुपर प्रकारों का प्रतिच्छेदन) को /characteristic predicate/ में कीवर्ड this का उपयोग करके एक्सेस किया जा सकता है।
  • Class वर्ग संबंधित एनोटेशन प्राप्त करने के लिए एक विधि getAnAnnotation प्रदान करता है।
  • Annotation वर्ग अपने प्रकार के बारे में तर्क करने के लिए सदस्य विधेय getType प्रदान करता है।
  • Type वर्ग किसी प्रकार के नाम के बारे में तर्क करने के लिए सदस्य विधेय getName और hasName प्रदान करता है।
  • RefType वर्ग (जो वर्गों और इंटरफ़ेस का प्रतिनिधित्व करता है) रेफ्टाइप के पूर्ण योग्य नाम के बारे में तर्क करने के लिए सदस्य विधेय getQualifiedName और hasQualifiedName प्रदान करता है।

समाधान क्वेरी exercise2.ql में पाया जा सकता है।

अभ्यास 3

क्वेरी excercise3.ql को पूरा करके ScriptService इंटरफ़ेस को लागू करने वाले सभी घटकों का पता लगाएँ।

संकेत
  • Class प्रकार सदस्य विधेय getASuperType प्रदान करता है ताकि किसी वर्ग के सुपर प्रकारों (अर्थात वे प्रकार जिन्हें वह extends या implements करता है) के बारे में तर्क किया जा सके।

समाधान क्वेरी exercise3.ql में पाया जा सकता है।

अंतराल 2

टूल डाउनलोड करें