Writable Sys Path +Dll Hijacking Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
यदि आप पाते हैं कि आप System Path फ़ोल्डर में लिख सकते हैं (ध्यान दें कि यदि आप User Path फ़ोल्डर में लिख सकते हैं तो यह काम नहीं करेगा) तो यह संभव है कि आप system में privileges बढ़ा सकते हैं।
इसके लिए आप Dll Hijacking का दुरुपयोग कर सकते हैं जहाँ आप एक library को हाईजैक करने जा रहे हैं जिसे एक सेवा या प्रक्रिया द्वारा आपसे अधिक privileges के साथ लोड किया जा रहा है, और क्योंकि वह सेवा एक Dll लोड कर रही है जो शायद पूरे सिस्टम में मौजूद नहीं है, यह उसे उस System Path से लोड करने की कोशिश करेगी जहाँ आप लिख सकते हैं।
Dll Hijacking क्या है के बारे में अधिक जानकारी के लिए देखें:
आपको सबसे पहले एक प्रक्रिया की पहचान करनी होगी जो आपसे अधिक privileges के साथ चल रही है और जो System Path से Dll लोड करने की कोशिश कर रही है जिसमें आप लिख सकते हैं।
इन मामलों में समस्या यह है कि शायद वे प्रक्रियाएँ पहले से ही चल रही हैं। यह जानने के लिए कि कौन सी Dlls सेवाओं में कमी है, आपको जितनी जल्दी हो सके procmon लॉन्च करना होगा (प्रक्रियाएँ लोड होने से पहले)। इसलिए, कमी वाली .dlls खोजने के लिए करें:
Create the folder C:\privesc_hijacking
and add the path C:\privesc_hijacking
to System Path env variable. You can do this manually or with PS:
procmon
लॉन्च करें और Options
--> Enable boot logging
पर जाएं और प्रॉम्प्ट में OK
दबाएं।
फिर, रीबूट करें। जब कंप्यूटर फिर से शुरू होगा, procmon
तुरंत घटनाओं को रिकॉर्ड करना शुरू कर देगा।
एक बार जब Windows शुरू हो जाए, procmon
को फिर से चलाएं, यह आपको बताएगा कि यह चल रहा है और आपसे पूछेगा कि क्या आप घटनाओं को एक फ़ाइल में स्टोर करना चाहते हैं। हाँ कहें और घटनाओं को एक फ़ाइल में स्टोर करें।
फाइल जनरेट होने के बाद, खोले हुए procmon
विंडो को बंद करें और घटनाओं की फ़ाइल खोलें।
ये फिल्टर जोड़ें और आप सभी Dlls पाएंगे जो कुछ प्रोसेस ने लिखने योग्य सिस्टम पथ फ़ोल्डर से लोड करने की कोशिश की:
एक मुफ्त वर्चुअल (vmware) Windows 11 मशीन पर यह चलाने पर मुझे ये परिणाम मिले:
इस मामले में .exe बेकार हैं इसलिए उन्हें नजरअंदाज करें, छूटे हुए DLLs थे:
कार्य शेड्यूलर (Schedule)
WptsExtensions.dll
C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule
डायग्नोस्टिक पॉलिसी सेवा (DPS)
Unknown.DLL
C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS
???
SharedRes.dll
C:\Windows\system32\svchost.exe -k UnistackSvcGroup
यह खोजने के बाद, मैंने एक दिलचस्प ब्लॉग पोस्ट पाया जो यह भी बताता है कि कैसे WptsExtensions.dll का दुरुपयोग करें। जो हम अब करने जा रहे हैं।
तो, अधिकारों को बढ़ाने के लिए हम WptsExtensions.dll पुस्तकालय को हाईजैक करने जा रहे हैं। पथ और नाम होने के साथ, हमें बस दुष्ट dll जनरेट करने की आवश्यकता है।
आप इन उदाहरणों में से किसी का उपयोग करने की कोशिश कर सकते हैं। आप पे लोड चला सकते हैं जैसे: एक रिव शेल प्राप्त करें, एक उपयोगकर्ता जोड़ें, एक बीकन निष्पादित करें...
ध्यान दें कि सभी सेवाएं NT AUTHORITY\SYSTEM
के साथ नहीं चलतीं, कुछ NT AUTHORITY\LOCAL SERVICE
के साथ भी चलती हैं, जिनके पास कम अधिकार होते हैं और आप नया उपयोगकर्ता नहीं बना पाएंगे और इसके अनुमतियों का दुरुपयोग नहीं कर पाएंगे।
हालांकि, उस उपयोगकर्ता के पास seImpersonate
विशेषाधिकार है, इसलिए आप पोटैटो सूट का उपयोग करके अधिकारों को बढ़ा सकते हैं। इसलिए, इस मामले में एक रिव शेल एक बेहतर विकल्प है बजाय एक उपयोगकर्ता बनाने की कोशिश करने के।
लेखन के समय कार्य शेड्यूलर सेवा Nt AUTHORITY\SYSTEM के साथ चल रही है।
दुष्ट Dll (मेरे मामले में मैंने x64 रिव शेल का उपयोग किया और मुझे एक शेल वापस मिला लेकिन डिफेंडर ने इसे मार दिया क्योंकि यह msfvenom से था) जनरेट करने के बाद, इसे लिखने योग्य सिस्टम पथ में WptsExtensions.dll नाम से सहेजें और कंप्यूटर को रीस्टार्ट करें (या सेवा को रीस्टार्ट करें या प्रभावित सेवा/प्रोग्राम को फिर से चलाने के लिए जो भी करना हो करें)।
जब सेवा फिर से शुरू होती है, तो dll को लोड और निष्पादित किया जाना चाहिए (आप पुस्तकालय को अपेक्षित रूप से लोड किया गया है या नहीं जांचने के लिए procmon ट्रिक का पुनः उपयोग कर सकते हैं)।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)