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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/ronf98/cve-2023-21716-poc
भेद्यता विश्लेषणशोषणपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण
GitHubronf98/cve-2023-21716-poc

CVE-2023-21716-POC

CVE-2023-21716 माइक्रोसॉफ्ट वर्ड हीप भ्रष्टाचार के लिए अवधारणा का प्रमाण

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

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

सभी देखें →

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

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

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

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

इतिहास

फरवरी 2023 में, Microsoft ने Microsoft Word में एक गंभीर कमज़ोरी को पैच किया, जिसे CVE-2023-21716 के रूप में पहचाना गया, जिसका CVSS स्कोर 9.8 था, जो हमलावरों को बिना प्रमाणीकरण के रिमोट कोड निष्पादित करने की अनुमति दे सकता था। यह कमज़ोरी Outlook पूर्वावलोकन फलक को भी प्रभावित करती थी, जिसका अर्थ है कि इसे केवल फ़ाइल का पूर्वावलोकन करके ट्रिगर किया जा सकता है। जबकि Microsoft ने एक पैच और एक वर्कअराउंड जारी किया, उन्होंने मुद्दे के बारे में विवरण प्रकट नहीं किया। 6 मार्च को, बग की खोज करने वाले शोधकर्ता (Joshua J.Drake - @jduck) ने Twitter पर एक प्रूफ ऑफ कॉन्सेप्ट (PoC) साझा किया।

यह कैसे होता है

CVE-2023-21716 इस तरह से उत्पन्न होता है जैसे Microsoft Word Rich Text Format (RTF) फ़ाइलों को संभालता है, विशेष रूप से \fonttbl नियंत्रण शब्द, जो \f फ़ॉर्मेट का उपयोग करके दस्तावेज़ में फ़ॉन्ट परिभाषित करता है। wwlib.dll के अंदर \fonttbl को हीप के अंदर एक निश्चित मात्रा में स्थान आवंटित किया जाता है (ऐसा इसलिए है क्योंकि हीप आवंटन आमतौर पर गतिशील डेटा के लिए उपयोग किया जाता है, जैसे कि फ़ॉन्ट तालिका जैसी बड़ी संरचनाओं को पार्स करना, जहाँ इनपुट के आधार पर आकार भिन्न हो सकता है)। क्रैश एक बफ़र ओवरफ़्लो के कारण होता है जब फ़ॉन्ट की संख्या सीमा (POC द्वारा 32760 सिद्ध) से अधिक हो जाती है। आवंटित हीप स्थान को ओवररन करने से रिटर्न इंस्ट्रक्शन पॉइंटर (RIP) ओवरराइट हो जाता है, जिससे एप्लिकेशन क्रैश हो जाता है।

प्रभावित संस्करण

  • Microsoft Office 2019
  • Microsoft Office Online Server
  • Microsoft Office LTSC 2021
  • Microsoft Office LTSC for Mac 2021
  • Microsoft Word 2013 Service Pack 1
  • Microsoft Word 2013 RT Service Pack 1
  • Microsoft Word 2016
  • Microsoft SharePoint Server 2019
  • Microsoft SharePoint Enterprise Server 2013 Service Pack 1
  • Microsoft SharePoint Enterprise Server 2016
  • Microsoft SharePoint Foundation 2013 Service Pack 1
  • Microsoft SharePoint Server Subscription Edition Language Pack
  • Microsoft SharePoint Server Subscription Edition
  • Microsoft Office Web Apps Server 2013 Service Pack 1
  • Microsoft 365 Apps for Enterprise
  • उपचार

    उपयोगकर्ताओं को दृढ़ता से सलाह दी जाती है कि वे Microsoft से नवीनतम सुरक्षा पैच स्थापित करें, क्योंकि उन्होंने इस मुद्दे को हल कर दिया है। जो लोग अपग्रेड करने में असमर्थ हैं, उनके लिए Microsoft ने कई वर्कअराउंड भी प्रदान किए हैं, जो यहाँ पाए जा सकते हैं: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-21716।

    CVE-2023-21716-POC

    पुनरुत्पादन के चरण

    1. Microsoft Office का एक कमज़ोर संस्करण स्थापित करें।
    2. RTF-creator स्क्रिप्ट डाउनलोड करें और चलाएँ।
    3. यदि आप फ़ाइल को पुनः नहीं बनाना चाहते हैं तो आप इसके बजाय malicious.rtf फ़ाइल का उपयोग कर सकते हैं, जिसमें 32761 फ़ॉन्ट हैं और यह सेवा को क्रैश करने के लिए बफ़र ओवरफ़्लो को ट्रिगर करेगा।
    4. .rtf फ़ाइल को ईमेल के माध्यम से पीड़ित को भेजें; यदि उसके पास Office का कमज़ोर संस्करण है, तो कमज़ोरी ट्रिगर हो जाएगी।

    पृष्ठभूमि तर्क

    WinDbg का उपयोग करके, हम क्रैश के कारण को समझने के लिए करीब से देख सकते हैं। यहाँ प्रक्रिया है:

    1. Microsoft Word लॉन्च करें।
    2. WinDbg खोलें और इसे WINWORD प्रक्रिया से संलग्न करें।
    3. Word का उपयोग करके malicious.rtf फ़ाइल खोलें।

    WinDbg स्वचालित रूप से तब ब्रेक होगा जब क्रैश होता है, जिससे हम इसका और विश्लेषण कर सकते हैं। शुरू करने के लिए, हम कॉल स्टैक देखने के लिए 'k' टाइप कर सकते हैं:

    root@kitploit:~
    0:000> k
     # ChildEBP RetAddr      
    00 012f5134 77a5feb5     ntdll!RtlReportCriticalFailure+0x4b       
    01 012f5170 77a5dda9     ntdll!RtlpReportHeapFailure+0x2f
    02 012f5170 77a66220     ntdll!RtlpHpHeapHandleError+0x89
    03 012f5188 77a5dab7     ntdll!RtlpLogHeapFailure+0x43
    04 012f51ec 779b400d     ntdll!RtlpAnalyzeHeapFailure+0x281
    05 012f5348 779f806d     ntdll!RtlpFreeHeap+0x24d
    06 012f53a4 779b3d66     ntdll!RtlpFreeHeapInternal+0x783
    07 012f53c4 6ea4aa24     ntdll!RtlFreeHeap+0x46                       //ntdll के अंतर्गत दिखाए गए फ़ंक्शन हीप भ्रष्टाचार की त्रुटि प्रबंधन से संबंधित हैं
    08 012f53d8 6ea4a9cb     mso20win32client!Ordinal1068+0xab
    09 012f53e8 6ea4a995     mso20win32client!Ordinal1068+0x52
    0a 012f53f4 6cccda52     mso20win32client!Ordinal1068+0x1c
    0b 012f5410 03657fea     mso!Ordinal1387+0x24
    0c 012f5424 03990115     wwlib!PTLS7::FsUpdateFinitePage+0x7e26f      //wwlib फ़ॉन्ट तालिका को संभालने के लिए जिम्मेदार है
    0d 012f5670 034ea593     wwlib!PTLS7::LsDestroyContext+0x245f90
    0e 012f6f5c 033a68ef     wwlib!PTLS7::FsUpdateBottomlessPage+0x17494
    0f 012f7484 035054ed     wwlib!PTLS7::LsAssert+0x2bd1c
    10 012f888c 03503d3b     wwlib!PTLS7::FsUpdateBottomlessPage+0x323ee
    11 012f8910 0400be52     wwlib!PTLS7::FsUpdateBottomlessPage+0x30c3c
    12 012f9e9c 0390013a     wwlib!wdGetApplicationObject+0xdf8a0
    13 012faf48 03ebf20e     wwlib!PTLS7::LsDestroyContext+0x1b5fb5
    14 012faf90 0410ab2a     wwlib!DllCanUnloadNow+0xcc314
    15 012fcfe0 03752fb4     wwlib!wdGetApplicationObject+0x1de578
    16 012ff538 03385b93     wwlib!PTLS7::LsDestroyContext+0x8e2f
    17 012ff578 75e6173b     wwlib!PTLS7::LsAssert+0xafc0
    18 012ff5a4 75e57eaa     USER32!_InternalCallWinProc+0x2b
    19 012ff68c 75e57666     USER32!UserCallWinProcCheckWow+0x33a
    1a 012ff6c4 75e55e8b     USER32!CallWindowProcAorW+0x7f
    1b 012ff6dc 7500ae9d     USER32!CallWindowProcW+0x1b
    .....
    .....
    

    हमारी दो प्रमुख लाइब्रेरी wwlib.dll हैं, जो एक कोर वर्ड लाइब्रेरी है जो फ़ॉन्ट, टेक्स्ट और लेआउट जैसी दस्तावेज़ सामग्री का प्रबंधन करती है, और ntdll.dll, जो मेमोरी प्रबंधन और त्रुटि प्रबंधन जैसे निम्न-स्तरीय सिस्टम कार्यों को संभालती है। क्रैश तब होता है जब Word RTF फ़ाइल से बड़ी संख्या में फ़ॉन्ट संसाधित करता है। जैसे ही ntdll.dll पता लगाता है कि Word अमान्य मेमोरी (संभवतः फ़ॉन्ट ओवरफ़्लो के कारण दूषित) तक पहुँचने या मुक्त करने का प्रयास कर रहा है, यह एक हीप भ्रष्टाचार त्रुटि उठाता है, जिससे क्रैश होता है।

    गहराई में जाने के लिए हम wwlib लाइब्रेरी के अंतिम भाग में एक ब्रेकपॉइंट रख सकते हैं ताकि यह देख सकें कि हमारे फ़ॉन्ट मेमोरी के अंदर कैसे लोड हो रहे हैं, और समझ सकें कि मुद्दा किसने ट्रिगर किया:

    bc * //अन्य सभी ब्रेकपॉइंट हटाएं

    bp wwlib!PTLS7::FsUpdateFinitePage+0x7e26f //ब्रेकपॉइंट बनाएं

    अब हमें एक एक्सेस वायलेशन मिलता है:

    root@kitploit:~
    (ba4.1a14): Access violation - code c0000005 (first chance)
    First chance exceptions are reported before any exception handling.
    This exception may be expected and handled.
    eax=004f1ce4 ebx=00000001 ecx=000004e4 edx=ffff7ffc esi=13474fe8 edi=00008002
    eip=02b300d5 esp=004f1c3c ebp=004f1c48 iopl=0         nv up ei pl nz na pe nc
    cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00210206
    wwlib!PTLS7::FsUpdateFinitePage+0x7635a:
    02b300d5 66894c5604      mov     word ptr [esi+edx*2+4],cx ds:002b:13464fe4=????  //ब्रेक यहाँ हो रहा है
    

    चूंकि हमने प्रोग्राम को पहले रोक दिया, उस बिंदु पर जहां wwlib.dll पहली बार अमान्य मेमोरी (FsUpdateFinitePage में) तक पहुँचने या संशोधित करने का प्रयास कर रहा है, यह हमें प्रारंभिक एक्सेस वायलेशन (जो मेमोरी भ्रष्टाचार का कारण बनता है) देखने देता है, जिससे हमें यह जांचने का मौका मिलता है कि ntdll.dll द्वारा हीप भ्रष्टाचार त्रुटि का पता लगाने से पहले क्या गलत हुआ।

    अधिक सटीक होने के लिए, प्रोग्राम wwlib!PTLS7::FsUpdateFinitePage+0x7635a फ़ंक्शन के अंदर mov word ptr [esi+edx2+4],cx निर्देश पर एक एक्सेस वायलेशन (कोड c0000005) के कारण रुका। यह त्रुटि इंगित करती है कि Word ने एक अमान्य मेमोरी स्थान तक पहुँचने का प्रयास किया, विशेष रूप से जब esi+edx2+4 स्थान पर मेमोरी में एक मान (cx) संग्रहीत करने का प्रयास किया गया।

    यदि हम ESI रजिस्टर में और देखें, तो हम देख सकते हैं कि इसमें फ़ॉन्ट डेटा है: image image लिटिल-एंडियन प्रारूप में प्रत्येक 16-बिट मान (दो बाइट्स) फ़ॉन्ट प्रविष्टि को \fA; प्रारूप में दर्शाता है।

    ESI के अंदर दर्शाया गया अंतिम मान f8 7f है जो समाप्ति (29-00 द्वारा प्रतीकित) तक पहुँचने से पहले {\f32760A;} से मेल खाता है। image

    अब जब फ़ॉन्ट तालिका ESI रजिस्टर द्वारा इंगित मेमोरी स्थान पर लोड हो गई है, इतनी बड़ी संख्या में फ़ॉन्ट संसाधित होने के साथ, गणना की गई मेमोरी स्थान (esi + edx*2 + 4) संभवतः फ़ॉन्ट तालिका के लिए आवंटित मेमोरी से अधिक हो जाती है। इसके परिणामस्वरूप आउट-ऑफ-बाउंड्स राइट होता है, जिससे एक्सेस वायलेशन त्रुटि उत्पन्न होती है। एक्सेस वायलेशन का पता ntdll.dll द्वारा लगाया जाता है, जो मेमोरी प्रबंधन और त्रुटि रिपोर्टिंग को संभालता है। परिणामस्वरूप, ntdll.dll ऐसे फ़ंक्शन लागू करता है जो हीप भ्रष्टाचार का पता लगाते हैं, अंततः एप्लिकेशन को क्रैश करने का कारण बनता है।

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