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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2024-38077-MadLicense-exploit — CVE-2024-38077 (Windows RDL heap overflow) के लिए modular exploit framework, जिसमें ASLR bypass, heap grooming, ROP chain generation, और DLL injection payloads शामिल हैं, pre-auth remote code execution के लिए। | Kitploit
उपकरण/GitHubGitHub/ermensonx/cve-2024-38077-madlicense-exploit
शोषण फ्रेमवर्कभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगशेलकोडपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षापेलोड डेवलपमेंटबाइनरी शोषण
GitHubermensonx/cve-2024-38077-madlicense-exploit

CVE-2024-38077-MadLicense-exploit

CVE-2024-38077 (Windows RDL heap overflow) के लिए modular exploit framework, जिसमें ASLR bypass, heap grooming, ROP chain generation, और DLL injection payloads शामिल हैं, pre-auth remote code execution के लिए।

रिपॉजिटरी देखें
1129 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें

CVE-2024-38077 MadLicense - पूर्ण शोषण ढाँचा

📚 प्रस्तुति हेतु तकनीकी दस्तावेज़

यह दस्तावेज़ ढाँचे के प्रत्येक घटक को समझाता है, वे क्यों मौजूद हैं, और आधुनिक विंडोज़ में हीप बफर ओवरफ़्लो का शोषण कैसे काम करता है।


🎯 CVE-2024-38077 क्या है?

कमज़ोरी

विंडोज़ रिमोट डेस्कटॉप लाइसेंसिंग सेवा (lserver.exe) में CDataCoding::DecodeData फ़ंक्शन में हीप बफर ओवरफ़्लो है।

┌─────────────────────────────────────────────────────────────┐
│  भेद्यता: गलत आकार गणना                                    │
├─────────────────────────────────────────────────────────────┤
│  1. क्लाइंट आकार N का Base64 डेटा भेजता है                │
│  2. सर्वर गणना करता है: buffer_size = (N / 4) * 3          │
│  3. सर्वर 'buffer_size' बाइट्स का बफर आवंटित करता है      │
│  4. वास्तविक Base64 डिकोड लिखता है: ceil(N * 3/4) बाइट्स  │
│  5. यदि N, 4 का गुणज नहीं है: अतिप्रवाह!                  │
└─────────────────────────────────────────────────────────────┘

ठोस उदाहरण:

  • इनपुट: 4001 बाइट्स
  • सर्वर गणना: (4001 / 4) * 3 = 1000 * 3 = 3000 बाइट्स आवंटित
  • वास्तविक डिकोड: ceil(4001 * 0.75) = 3001 बाइट्स लिखे
  • अतिप्रवाह: 1 बाइट (लेकिन अधिक के लिए नियंत्रणीय)

यह गंभीर क्यों है?

  1. प्री-ऑथ: किसी क्रेडेंशियल की आवश्यकता नहीं
  2. रिमोट: नेटवर्क के माध्यम से, पोर्ट 135 (RPC)
  3. SYSTEM: सेवा NT AUTHORITY\SYSTEM के रूप में चलती है
  4. सामान्य: विंडोज़ सर्वर 2000-2025 प्रभावित

🏗️ ढाँचे की वास्तुकला

मॉड्यूल का सिंहावलोकन

┌─────────────────────────────────────────────────────────────────┐
│                      शोषण श्रृंखला                              │
├──────────┬──────────┬──────────┬──────────┬──────────┬─────────┤
│  LEAK    │  MODEL   │  WRITE   │  GROOM   │ TRIGGER  │ EXECUTE │
│ (ASLR)   │ (Target) │ (Where)  │ (Heap)   │ (Use)    │ (RCE)   │
├──────────┼──────────┼──────────┼──────────┼──────────┼─────────┤
│ leak.py  │target_   │write_    │heap_     │trigger   │code_    │
│          │model.py  │primitive │controller│.py       │reuse.py │
│          │          │.py       │.py       │          │         │
└──────────┴──────────┴──────────┴──────────┴──────────┴─────────┘
          ↓                                              ↓
    ┌───────────┐                              ┌──────────────┐
    │ execution │                              │   payload    │
    │   .py     │                              │     .py      │
    └───────────┘                              └──────────────┘
          ↓                                              ↓
    ┌───────────────────────────────────────────────────────────┐
    │                    mitigations.py                         │
    │              (DEP, ASLR, CFG जागरूकता)                   │
    └───────────────────────────────────────────────────────────┘
                              ↓
    ┌───────────────────────────────────────────────────────────┐
    │                      exploit.py                           │
    │                   (ऑर्केस्ट्रेटर)                          │
    └───────────────────────────────────────────────────────────┘

📦 मॉड्यूल 1: primitives.py - आधार

यह क्या है?

मेमोरी हेरफेर के लिए निम्न-स्तरीय उपयोगिताएँ।

यह क्यों मौजूद है?

शोषण को चाहिए:

  • प्रकारों के बीच रूपांतरण (int ↔ bytes)
  • क्रैश विश्लेषण के लिए पैटर्न उत्पन्न करना
  • डेटा को सही ढंग से संरेखित करना

मुख्य फ़ंक्शन

# Pack/Unpack - पूर्णांकों को बाइट्स में और इसके विपरीत रूपांतरित करें
p64(0xDEADBEEF)      # → b'\xef\xbe\xad\xde\x00\x00\x00\x00'
p32(0x41414141)      # → b'AAAA'
u64(b'\x41\x42...')  # → 0x... (int)

# चक्रीय पैटर्न - क्रैश ऑफ़सेट की पहचान करने के लिए
cyclic(100)          # De Bruijn अनुक्रम उत्पन्न करता है
cyclic_find(pattern, value)  # मान का ऑफ़सेट ढूँढता है

# संरेखण - मेमोरी को संरेखित होना चाहिए
align(0x1003, 0x10)  # → 0x1010 (16 बाइट्स में संरेखित)

इससे क्या फर्क पड़ता है?

वास्तविक समस्या: आप क्रैश का कारण बनते हैं और RIP में 0x61616171 होता है।

  • बिना cyclic के: "मेरे बफर में कहीं..."
  • cyclic के साथ: cyclic_find(pattern, 0x61616171) → सटीक ऑफ़सेट!

📦 मॉड्यूल 2: leak.py - ASLR को बायपास करना

ASLR क्या है?

एड्रेस स्पेस लेआउट रैंडमाइज़ेशन: प्रत्येक बूट/निष्पादन पर पते बदल जाते हैं।

बूट 1:  ntdll.dll @ 0x7FFA12340000
बूट 2:  ntdll.dll @ 0x7FFB98760000
बूट 3:  ntdll.dll @ 0x7FFC55550000

हमें लीक की आवश्यकता क्यों है?

मेमोरी कहाँ है यह जाने बिना:

  • हम नहीं जानते कि पेलोड कहाँ रखें
  • हम ROP गैजेट्स का पता नहीं जानते
  • कोई भी प्रयास = यादृच्छिक क्रैश

मॉड्यूल संरचना

class LeakInfo:
    """लीक किए गए पतों के लिए कंटेनर"""
    heap_base: int         # हीप का आधार
    ntdll_base: int        # ntdll.dll का आधार
    kernel32_base: int     # kernel32.dll का आधार
    # ...

class LeakProvider:
    """लीक स्रोतों का ऑर्केस्ट्रेटर"""
    sources: List[LeakSource]
    
    def obtain() -> LeakInfo:
        # प्रत्येक स्रोत को तब तक आज़माएँ जब तक सफल न हो जाए

कार्यान्वित लीक स्रोत

स्रोतयह कैसे काम करता हैकब उपयोग करें
ManualLeakSourceउपयोगकर्ता पते प्रदान करता हैलैब/डिबग लक्ष्य तक पहुँच के साथ
ResponseLeakSourceRPC प्रतिक्रियाओं से निकालता हैयदि सेवा पॉइंटर्स लीक करती है
TimingLeakSourceसमय-पक्ष चैनलसैद्धांतिक, बहुत कठिन

मैन्युअल इनपुट क्यों?

प्रदर्शनों/लैब में, आप कर सकते हैं:

  1. लक्ष्य पर डीबगर संलग्न करें
  2. मॉड्यूल का आधार देखें
  3. --ntdll-base 0x7ffa... के माध्यम से प्रदान करें

यह वास्तविक लीक होने का अनुकरण करता है, जिससे आप शेष श्रृंखला का परीक्षण कर सकते हैं।


📦 मॉड्यूल 3: target_model.py - लक्ष्य मानचित्रण

यह क्या है?

भेद्य और आसन्न डेटा संरचनाओं की मॉडलिंग।

यह क्यों मौजूद है?

अतिप्रवाह ≠ शोषण। हमें जानना होगा:

  • हम क्या अधिलेखित कर रहे हैं?
  • वस्तु का आकार क्या है?
  • कौन सा क्षेत्र भ्रष्ट करने के लिए उपयोगी है?

घटक

class VulnerableBuffer:
    """वह बफर जो अतिप्रवाह का शिकार होगा"""
    allocation_size: int   # कितना आवंटित किया गया
    write_size: int        # कितना लिखा जाएगा
    overflow_amount: int   # अंतर = अतिप्रवाह
    
    def calculate_overflow(input_size):
        # गणना बग का अनुकरण
        alloc = (input_size // 4) * 3
        actual = ((input_size + 3) // 4) * 3
        return alloc, actual, actual - alloc

class AdjacentObject:
    """वह वस्तु जो भ्रष्ट होगी (हीप में आसन्न)"""
    fields: List[StructField]
    has_vtable: bool       # क्या इसमें वर्चुअल तालिका है?
    has_function_ptr: bool # क्या इसमें फ़ंक्शन पॉइंटर है?

लक्ष्य संरचना का उदाहरण

# रिवर्स इंजीनियरिंग पर आधारित काल्पनिक वस्तु
license_req = AdjacentObject(
    name="CLicenseRequest",
    typical_size=0x100,
    has_vtable=True
)

# मैप किए गए क्षेत्र
license_req.add_field("vtable",   0x00, 8, VTABLE,   is_target=True)
license_req.add_field("refcount", 0x08, 4, REFCOUNT)
license_req.add_field("callback", 0x10, 8, CALLBACK, is_target=True)

is_target=True क्यों?

शोषण के लिए उपयोगी क्षेत्रों को चिह्नित करता है:

  • vtable: यदि हम अधिलेखित करते हैं, तो हम विधि कॉल को नियंत्रित करते हैं
  • callback: यदि हम अधिलेखित करते हैं, तो हम नियंत्रित करते हैं कि कॉलबैक कब कॉल किया जाता है

📦 मॉड्यूल 4: write_primitive.py - नियंत्रित लेखन

समस्या

अतिप्रवाह अनुक्रमिक डेटा लिखता है। लेकिन हमें चाहिए:

  • विशिष्ट मान लिखना (हमारे ROP का पता)
  • विशिष्ट ऑफ़सेट पर (जहाँ vtable पॉइंटर है)

समाधान

class WritePrimitive:
    def build_overflow_data(self) -> bytes:
        """
        सटीक मानों के साथ अतिप्रवाह बफर बनाता है
        
        लेआउट:
        [ऑफ़सेट तक PADDING] [नियंत्रित मान] [अधिक डेटा]
        """
        data = bytearray(b"A" * max_offset)
        
        for target in self.targets:
            # सटीक ऑफ़सेट पर सटीक मान रखें
            data[target.offset:target.offset+8] = p64(target.value)
        
        return bytes(data)

ओवरराइट के प्रकार

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