
Windows विशेषाधिकार-वृद्धि एक्सप्लॉइट जो DiagTrack RPC के माध्यम से SeImpersonate का दुरुपयोग करता है, Secondary Logon का उपयोग करके INTERACTIVE टोकन प्राप्त करता है और SYSTEM हासिल करता है।
SeImpersonate विशेषाधिकार का दुरुपयोग करने का एक और तरीका।
यह PoC @crisprss द्वारा लिखे गए इस ब्लॉग पर आधारित है।
इस ब्लॉग में @crisprss ने SQL सर्वर के हालिया संस्करणों के साथ आने वाली AzureAttestService का उपयोग करके SeImpersonate विशेषाधिकार का दुरुपयोग करने का एक दिलचस्प तरीका दिखाया है, इसका PoC यहाँ पाया जा सकता है: https://github.com/crisprss/magicAzureAttestService.
उस ब्लॉग में वह DiagTrack सेवा का उपयोग करके SeImpersonate विशेषाधिकार का दुरुपयोग करने का एक और संभावित तरीका भी दिखाता है, लेकिन लेखक इसे हथियार बनाने में विफल रहा, यह उस ब्लॉग से लिया गया है (चीनी से अनुवादित, इसलिए शायद 100% सटीक नहीं है):
But just when I thought it could be triggered normally, I didn't realize that this service is transparent to service users, which also means that it is not feasible to simulate pipeline privilege escalation through service users, because service users such as sqlserver There is no way to call the RPC interface, which also means that you can only escalate rights from the administrator user to SYSTEM in this way, so here is just a process sharing
और हाँ, यदि आप सेवा उपयोगकर्ता से उस RPC सर्वर द्वारा एक्सपोज़ की गई विधि को कॉल करने का प्रयास करते हैं, तो आपको access denied त्रुटि मिलती है।

लेकिन सामान्य, बिना विशेषाधिकार वाले उपयोगकर्ता इस विधि को कॉल करने में सक्षम क्यों हैं?
मेरी धारणा थी कि चूंकि सेवा उपयोगकर्ता session 0 में कार्य करते हैं, उनके टोकन में NT AUTHORITY\INTERACTIVE SID नहीं होगा, जबकि RDP के माध्यम से या इंटरैक्टिव रूप से लॉगिन करने वाले सामान्य उपयोगकर्ताओं के पास यह होगा।
तो हम session 0 से NT AUTHORITY\INTERACTIVE SID कैसे प्राप्त कर सकते हैं? वास्तव में बहुत आसान है, Secondary Logon सेवा हमारे लिए यह कर देगी। हम NT AUTHORITY\INTERACTIVE SID के साथ टोकन प्राप्त करने के लिए LogonUser API कॉल का उपयोग कर सकते हैं और हमें वैध क्रेडेंशियल की आवश्यकता नहीं है क्योंकि हम NewCredentials(9) logon प्रकार का उपयोग करेंगे। जब NewCredentials logon प्रकार का उपयोग किया जाता है, Secondary Logon नया logon सत्र बनाएगा और कॉलर टोकन की प्रतिलिपि बनाएगा, लेकिन यह NT AUTHORITY\INTERACTIVE SID भी डालेगा। यह हमारे लिए एकदम सही स्थिति है क्योंकि हमें वैध क्रेडेंशियल रखने की आवश्यकता नहीं है (NewCredentials logon प्रकार के साथ उपयोग किए गए क्रेडेंशियल तब तक सत्यापित नहीं होते जब तक उपयोगकर्ता नेटवर्क संसाधन तक पहुँचने का प्रयास नहीं करता)।
तो अब जब हमारे पास NT AUTHORITY\INTERACTIVE SID वाला टोकन है, क्या exploit काम करेगा? हाँ, यह करेगा :D

यह PoC Windows 10 और Windows 2019 पर परीक्षण किया गया है।
@crisprss - https://www.crisprx.top/archives/561