Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2024-30088 — CVE-2024-30088 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, AuthzBasepCopyoutInternalSecurityAttributes में एक विंडोज कर्नेल TOCTOU भेद्यता जो दौड़ की स्थिति के माध्यम से विशेषाधिकार वृद्धि के लिए मनमाना लेखन सक्षम करती है। | Kitploit
उपकरण/GitHubGitHub/tykawaii98/cve-2024-30088
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणबाइनरी शोषण
GitHubtykawaii98/cve-2024-30088

CVE-2024-30088

CVE-2024-30088 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, AuthzBasepCopyoutInternalSecurityAttributes में एक विंडोज कर्नेल TOCTOU भेद्यता जो दौड़ की स्थिति के माध्यम से विशेषाधिकार वृद्धि के लिए मनमाना लेखन सक्षम करती है।

रिपॉजिटरी देखें
29061462 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

CVE-2024-30088

बग:

  • बग फ़ंक्शन AuthzBasepCopyoutInternalSecurityAttributes के अंदर है जब कर्नेल वर्तमान टोकन ऑब्जेक्ट के _AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION को यूज़र मोड में कॉपी करता है, जिसकी संरचना इस प्रकार है:
root@kitploit:~
//0x30 bytes (sizeof)
struct _AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION
{
    ULONG SecurityAttributeCount;                                           //0x0
    struct _LIST_ENTRY SecurityAttributesList;                              //0x8
    ULONG WorkingSecurityAttributeCount;                                    //0x18
    struct _LIST_ENTRY WorkingSecurityAttributesList;                       //0x20
}; 
  • SecurityAttributesList की प्रतिलिपि करते समय, कर्नेल SecurityAttribute की संरचना की सूची को सीधे यूज़र द्वारा प्रदान किए गए पॉइंटर पर सेट करता है। उसके बाद, यह SecurityAttribute संरचना के नाम और मान को कॉपी करने के लिए RtlCopyUnicodeString और AuthzBasepCopyoutInternalSecurityAttributeValues फ़ंक्शन को कॉल करता है, जिससे इस फ़ंक्शन में कई TOCTOU उत्पन्न होते हैं।

  • RtlCopyUnicodeString कॉल होने से पहले विशेषता नाम के Buffer पॉइंटर को संशोधित करने वाले एक सरल रेसिंग थ्रेड के साथ [*], मैं आसानी से एक निश्चित मान और नियंत्रित आकार के साथ एक मनमाना पता लेखन प्राप्त कर सकता हूँ।

  • ध्यान दें कि इसका शोषण करने के कुछ अन्य तरीके भी हैं, लेकिन मेरे मामले में, मैंने RtlCopyUnicodeString का उपयोग करना चुना।

बग ट्रिगर करें:

  • इस बग को TokenAccesInformation वर्ग के साथ NtQueryInformationToken को कॉल करके आसानी से ट्रिगर किया जा सकता है।

पैच:

  • पैच कर्नेल स्टैक पर एक स्थानीय चर (v18 नीचे कोड ब्लॉक में) का उपयोग बफर के रूप में करता है ताकि यदि सिस्कॉल यूज़रमोड से है तो यूज़र बफर पर वापस लिखने से पहले सुरक्षा विशेषता के नाम (नामों) को कॉपी कर सके।
root@kitploit:~
    [...]
        p_SecurityAttributesList = &a1->SecurityAttributesList;
        Flink = a1->SecurityAttributesList.Flink;
        if ( Flink == p_SecurityAttributesList )
          return (unsigned int)inserted;
        v13 = a2 + 0x98;
        while ( 1 )
        {
          if ( (unsigned int)Feature_2516935995__private_IsEnabledDeviceUsage() )
          {
            inserted = AuthzBasepProbeAndInsertTailList(a2 + 8, v13 - 0x68);
            if ( inserted < 0 )
              goto LABEL_24;
          }
          else
          {
            [...]
          }
          ++*(_DWORD *)a2;
          *(_WORD *)(v13 - 56) = Flink[3].Flink;
          *(_DWORD *)(v13 - 52) = HIDWORD(Flink[3].Flink);
          *(_QWORD *)(v13 - 24) = v13 - 32;
          *(_QWORD *)(v13 - 32) = v13 - 32;
          *(_QWORD *)v13 = v13 - 8;
          *(_QWORD *)(v13 - 8) = v13 - 8;
          *(_QWORD *)(v13 - 48) = 0i64;
          *(_DWORD *)(v13 - 40) = 0;
          *(_DWORD *)(v13 - 16) = 0;
          Flink_low = LOWORD(Flink[2].Flink);
          v19 = Flink_low;
          v17 = (wchar_t *)((v10 + 1) & 0xFFFFFFFFFFFFFFFEui64);
          v15 = (unsigned __int64)v17 + Flink_low;
          if ( (unsigned __int64)v17 + Flink_low > v6 )
            break;
          if ( (unsigned int)Feature_3391791421__private_IsEnabledDeviceUsage() )
          {
            *(_QWORD *)&v18.Length = 0i64;
            v18.MaximumLength = Flink_low;
            v18.Buffer = v17;
            RtlCopyUnicodeString(&v18.Length, (unsigned __int16 *)&Flink[2]);
            *(_UNICODE_STRING *)(v13 - 0x48) = v18;
          }
          else
          {
            [...]
          }
          inserted = AuthzBasepCopyoutInternalSecurityAttributeValues(
                       (__int64)Flink,
                       v13 - 104,
                       v15,
                       (int)v6 - (int)v15,
                       &v19);
    [...]
  • डिबग सत्र में, हम देख सकते हैं कि rcx पैच के बाद कर्नेल पता है:
root@kitploit:~
5: kd> 
nt!AuthzBasepCopyoutInternalSecurityAttributes+0x1aa:
fffff803`5dbcf14a e8810fa5ff      call    nt!RtlCopyUnicodeString (fffff803`5d6200d0)
5: kd> r
rax=0000025a81d006a0 rbx=0000025a81d00590 rcx=ffffe20697c4f778
rdx=ffffa609c7a101a0 rsi=0000025a81d00598 rdi=0000025a81d00628
rip=fffff8035dbcf14a rsp=ffffe20697c4f740 rbp=0000025a81d006c0
 r8=0000000000000003  r9=0000025a81d00590 r10=ffffa609c816ef78
r11=ffffe20697c4f7d0 r12=0000000000000a70 r13=ffffa609ca9b1118
r14=ffffa609c7a10180 r15=0000025a81d01000
iopl=0         nv up ei pl nz na pe nc
cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00040202
nt!AuthzBasepCopyoutInternalSecurityAttributes+0x1aa:
fffff803`5dbcf14a e8810fa5ff      call    nt!RtlCopyUnicodeString (fffff803`5d6200d0)

प्रमाण:

  • https://youtu.be/y5LnlHjzA64
टूल डाउनलोड करें