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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
paracosme — Paracosme एक ज़ीरो-क्लिक रिमोट मेमोरी भ्रष्टाचार एक्सप्लॉइट है जो ICONICS Genesis64 से समझौता करता है, जिसे Pwn2Own Miami 2022 प्रतियोगिता के दौरान मंच पर सफलतापूर्वक प्रदर्शित किया गया था। | Kitploit
उपकरण/GitHubGitHub/0vercl0k/paracosme
भेद्यता विश्लेषणशोषणSCADA/ICS सुरक्षापेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंटबाइनरी शोषणArchived
GitHub0vercl0k/paracosme

paracosme

Paracosme एक ज़ीरो-क्लिक रिमोट मेमोरी भ्रष्टाचार एक्सप्लॉइट है जो ICONICS Genesis64 से समझौता करता है, जिसे Pwn2Own Miami 2022 प्रतियोगिता के दौरान मंच पर सफलतापूर्वक प्रदर्शित किया गया था।

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

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

सभी देखें →

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

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

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

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

Paracosme - CVE-2022-33318 - ICONICS Genesis64 में रिमोट कोड निष्पादन

Paracosme एक मेमोरी करप्शन एक्सप्लॉइट है जिसे मैंने ICONICS द्वारा निर्मित Genesis64 सुइट v10.97.1 को लक्षित करने के लिए लिखा था, ताकि रिमोट कोड निष्पादन प्राप्त किया जा सके।

यह एक्सप्लॉइट S4x22 Conference में आयोजित Pwn2Own 2022 Miami प्रतियोगिता के दौरान प्रदर्शित किया गया था। आप इसके बारे में Pwn2Own ICS 2022 Miami में प्रतिस्पर्धा: ICONICS Genesis64 में ज़ीरो-क्लिक रिमोट मेमोरी करप्शन का शोषण में पढ़ सकते हैं।

इस समस्या ने CVSS पर 9.8 स्कोर किया और इसे CVE-2022-33318 / ZDI-22-1041 निर्दिष्ट किया गया। इसे ठीक किया गया और इसे Genesis64 10.97.2 में ठीक किया गया। आप ICSA-22-202-04 एडवाइज़री के साथ-साथ ICONICS का ICONICS Suite सुरक्षा भेद्यताओं पर व्हाइटपेपर भी पढ़ सकते हैं।

आप एक्सप्लॉइट कोड को src/paracosme.py, क्रैश ट्रिगर करने / यह सत्यापित करने कि आप प्रभावित हैं या नहीं, के लिए PoC को src/paracosme-poc.py, और मशीन पर निष्पादित पेलोड को src/payload में पा सकते हैं।

क्या मैं प्रभावित हूँ?

यह जानने का सबसे अच्छा तरीका है कि आप प्रभावित हैं या नहीं, GenBroker64.exe के लिए Page Heap चालू करें, सेवा को पुनः आरंभ करें, GenBroker64.exe में एक डीबगर संलग्न करें, अपने सर्वर पर paracosme-poc.py चलाएँ और आपको नीचे जैसे क्रैश दिखने चाहिए:

क्रैश देखने के लिए आपको लक्ष्य प्रक्रिया में एक डीबगर संलग्न करना होगा, अन्यथा एप्लिकेशन इसे अनदेखा कर देता है।

एक्सप्लॉइट चलाना

यह एक्सप्लॉइट केवल Windows पर परीक्षण किया गया है, लेकिन Linux प्लेटफ़ॉर्म पर भी काम करना चाहिए:

  1. impacket इंस्टॉल करें: pip3 install impacket
  2. अपनी मशीन पर चल रहे किसी भी SMB सर्वर को sc config lanmanserver start=disabled से बंद करें और रिबूट करें
  3. smbserver.py के साथ एक smbserver प्रारंभ करें (impacket के उदाहरणों का हिस्सा): python src\smbserver.py -smb2support x bin
  4. एक्सप्लॉइट को python src\paracosme.py --target <ip> के साथ प्रारंभ करें

एक्सप्लॉइट

अधिक विवरण के लिए, कृपया Pwn2Own ICS 2022 Miami में प्रतिस्पर्धा: ICONICS Genesis64 में ज़ीरो-क्लिक रिमोट मेमोरी करप्शन का शोषण देखें।

भेद्यता का अवलोकन

Paracosme, GenBroker64 प्रक्रिया में पाई गई use-after-free समस्या का शोषण करके Windows 21H2 x64 सिस्टम पर रिमोट कोड निष्पादन प्राप्त करता है।

उच्च स्तर पर, GenBroker64 प्रक्रिया TCP पोर्ट 38080 पर सुनती है और क्लाइंट के साथ हैंडशेक हो जाने के बाद विभिन्न पैकेटों को डीसेरियलाइज़ करने में सक्षम होती है। मुझे जो समस्या मिली, वह नेटवर्क सॉकेट से VARIANT पढ़ने को संभालने वाले कोड में है। मूल रूप से, एक variant एक प्रकार और एक मान होता है। फ़ंक्शन पहली नज़र में अच्छी तरह से लिखा हुआ लगता है, और केवल कुछ प्रकारों को अनपैक करने का प्रयास करता है। यह ऐसा दिखता है:

bool CheckVariantType(VARTYPE VarType) {
  if((VarType & 0x2FFF) != VarType) {
    return false;
  }

  switch(VarType & 0xFFF) {
    case VT_EMPTY:
    case VT_NULL:
    case VT_I2:
    case VT_I4:
    case VT_R4:
    case VT_R8:
    case VT_CY:
    case VT_DATE:
    case VT_BSTR:
    case VT_ERROR:
    case VT_BOOL:
    case VT_VARIANT:
    case VT_I1:
    case VT_UI1:
    case VT_UI2:
    case VT_UI4:
    case VT_I8:
    case VT_UI8:
    case VT_INT:
    case VT_UINT:
    case VT_HRESULT:
    case VT_FILETIME:
      return true;
      break;
    default:
      return false;
  }
}

size_t VariantTypeToSize(VARTYPE VarType) {
  switch(VarType) {
    case VT_I1: return 1;
    case VT_UI2: return 2;
    case VT_UI4:
    case VT_INT:
    case VT_UINT:
    case VT_HRESULT:
      return 4;
    case VT_I8:
    case VT_UI8:
    case VT_FILETIME:
      return 8;
    default:
      return 0;
  }
}

void Utils::ReadVariant(tagVARIANT *Variant, Archive_t *Archive, int Level) {
    TRY {
        return ReadVariant_((CArchive *)Archive, (COleVariant *)Variant);
    } CATCH_ALL(e) {
        VariantClear(Variant);
    }
}

HRESULT Utils::ReadVariant_(tagVARIANT *Variant, Archive_t *Archive, int Level) {
  VARTYPE VarType = Archive.ReadUint16();
  if((VarType & VT_ARRAY) != 0) {
      // Special logic to unpack arrays..
      return ..;
  }

  Size = VariantTypeToSize(VarType);
  if (Size) {
      Variant->vt = VarType;
      return Archive.ReadInto(&Variant->decVal.8, Size);
  }

  if(!CheckVariantType(VarType)) {
      // ...
      throw Something();
  }

  return Archive >> Variant;
}

फ़ंक्शन स्वयं ऐरे अनपैकिंग को लागू करता है, साथ ही सरल variant प्रकारों को पढ़ना भी; लेकिन यदि उसे कुछ ऐसा मिलता है जो इन दोनों में से कोई नहीं है, तो वह archive इंस्टेंस के operator>> पर चला जाता है। यह archive इंस्टेंस Microsoft Foundation Class फ्रेमवर्क द्वारा प्रदान की गई एक वस्तु है, जो विभिन्न वस्तुओं के सीरियलाइज़ेशन और डीसेरियलाइज़ेशन को संभालता है। यह कोड वास्तव में ओपन-सोर्स है और आप इसे C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc\olevar.cpp में पा सकते हैं, लेकिन यह रहा:

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