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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-6329 — HP Support Assistant में स्थानीय विशेषाधिकार वृद्धि | Kitploit
उपकरण/GitHubGitHub/manhndd/cve-2019-6329
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणपार्श्व आंदोलनपोस्ट-शोषणपेलोड डेवलपमेंटबाइनरी शोषण
GitHubmanhndd/cve-2019-6329

CVE-2019-6329

HP Support Assistant में स्थानीय विशेषाधिकार वृद्धि

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

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

सभी देखें →

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

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

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

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

HP Support Assistant में स्थानीय विशेषाधिकार वृद्धि

हार्ड लिंक का दुरुपयोग करके HP Support Assistant में एक स्थानीय विशेषाधिकार वृद्धि बग

शोधकर्ता: Bkav के ManhNDd

विवरण

HP Support Assistant GUI में, जब आप Check for updates and messages पर क्लिक करते हैं, तो सेवा HP Support Solution Framework कुछ कार्य चलाएगी, और HPSAObjUtil8.exe प्रारंभ करेगी (SYSTEM के रूप में चलता है) जो C:\ProgramData\Hewlett-Packard\HP Support Framework\Logs\Temp\HPSA फ़ोल्डर में सभी .xml फ़ाइलों की अनुमति बदलती है। विस्तार से, HPSAObjUtil8.exe इन .xml फ़ाइलों पर सभी उपयोगकर्ताओं को पूर्ण नियंत्रण प्रदान करता है। HPSAObjUtil8 में कमजोर कोड निम्नलिखित है:

root@kitploit:~
public static void AddTempLogsPermission()
	{
		string path = Environment.GetEnvironmentVariable("ProgramData") + "\\Hewlett-Packard\\HP Support Framework\\Logs\\Temp\\HPSA";
		if (Directory.Exists(path))
		{
			string[] files = Directory.GetFiles(path, "*.xml");
			if (files != null && files.Length != 0)
			{
				foreach (string fileOrFolderName in files)
				{
					Patches._utils.AddFileSecurity(fileOrFolderName);
				}
			}
		}
	}

एक उपयोगकर्ता फ़ोल्डर C:\ProgramData\Hewlett-Packard\HP Support Framework\Logs\Temp\HPSA में ???.xml नाम के साथ एक हार्ड लिंक बना सकता है, और इसे हमारी पसंद की एक पीड़ित फ़ाइल की ओर इंगित कर सकता है (हमें केवल पढ़ने की पहुँच चाहिए), फिर HPSAObjUtil8 को इसकी अनुमतियाँ बदलने दें ताकि हमारे पास फ़ाइल पर पूर्ण अनुमतियाँ (पढ़ना/लिखना/हटाना) हों। इसलिए यह बग हमें सिस्टम फ़ाइलों पर पूर्ण अनुमतियाँ प्राप्त करने की अनुमति देता है => आप सिस्टम विशेषाधिकार प्राप्त करने के लिए एक सिस्टम DLL को अधिलेखित कर सकते हैं। वैसे, बग का CVSS 3.0 स्कोर Privileges Required को High पर सेट करता है। यह None होना चाहिए, क्योंकि मैंने गैर-व्यवस्थापक उपयोगकर्ता पर सफलतापूर्वक बग का परीक्षण किया।

शोषण

HPSF.exe और HPSupportSolutionsFrameworkService.exe को रिवर्स करके, मैंने पता लगाया कि क्लाइंट HPSF.exe सेवा के साथ इंटरफ़ेस HP.SupportFramework.ServiceManager.Interfaces.IServiceInterface (HP.SupportFramework.ServiceManager.dll में परिभाषित) के माध्यम से संचार करता है। यदि क्लाइंट विधि IserviceInterface.RunAnalysis को कॉल करता है, तो सेवा HPSAObjUtil8 प्रारंभ करेगी और बग को ट्रिगर करेगी।

root@kitploit:~
ServiceInterface.Instance.RunAnalysis("en-US", true);

इसलिए आपको एक नकली क्लाइंट बनाना होगा और RunAnalysis को कॉल करना होगा। हालांकि, सेवा अनुरोध को संसाधित करने से पहले अपने क्लाइंट को मान्य करती है:

  • जाँच करें कि क्लाइंट HP हस्ताक्षर के साथ हस्ताक्षरित है और C वॉल्यूम में है।
  • जाँच करें कि क्लाइंट का पैरेंट, ग्रैंडपैरेंट, ग्रेट-ग्रैंडपैरेंट... HP हस्ताक्षर के साथ हस्ताक्षरित है या एक मान्य विंडोज प्रक्रिया है (उदाहरण के लिए, System32 में)। हालांकि, यदि विधि GetParent शून्य (null) लौटाती है, तो जाँच रुक जाती है।
root@kitploit:~
        {
            Process processById = Process.GetProcessById(\u0002);
            string text = \u000E.\u0001(processById);
            if (processById.MainModule.FileName.ToLowerInvariant() != text.ToLowerInvariant())
            {
                if (DebugLog.IsDebug)
                {
                    DebugLog.LogDebugMessage("Invalid File detected: " + text, DebugLog.IndentType.None);
                }
                return false;
            }
            Process parent = processById.GetParent();
            bool flag = true;
            int num = 0;
            while (parent != null && flag && num <= 5)
            {
                bool flag2;
                flag = \u000E.\u0001(parent, out flag2);
                if (!flag || flag2)
                {
                    break;
                }
                num++;
                parent = parent.GetParent();
            }
            return flag;
        }

आइए क्लाइंट सत्यापन को बायपास करें:

  • हस्ताक्षर जाँच को बायपास करने के लिए, आपको एक HP हस्ताक्षरित EXE प्रारंभ करना होगा और उसमें कोड इंजेक्ट करना होगा, या कुछ नकली DLL बनाना होगा, और HP EXE इसे लोड करे। मैंने दूसरी विधि चुनी। मुझे पता चला कि BatteryTest.exe (C:\Program Files (x86)\Hewlett-Packard\HP Support Framework\Resources\HPBatteryCheck में) HP हस्ताक्षर के साथ हस्ताक्षरित है, और जब मैं BatteryTest.exe प्रारंभ करता हूँ, तो यह %PATH% में खोजने से पहले अपनी निर्देशिका में userenv.dll को लोड करने का प्रयास करता है। इसलिए मैं एक नकली userenv.dll बनाता हूँ और इसे और BatteryTest.exe को एक ही फ़ोल्डर में कॉपी करता हूँ, फिर BatterTest चलाता हूँ => BatterTest हमारा क्लाइंट exe बन जाता है और आपके लिए RunAnalysis ट्रिगर करता है => क्लाइंट हस्ताक्षर जाँच को बायपास करता है।
  • मैं BatterTest.exe और अन्य आवश्यक फ़ाइलों को %tmp% में कॉपी करता हूँ, ताकि वे C वॉल्यूम में हों => यह सुनिश्चित करना कि क्लाइंट C वॉल्यूम में है।
  • पैरेंट जाँच को बायपास करने के लिए, मैं एक प्रोग्राम बनाता हूँ जो BatteryTest.exe को कॉल करता है और तुरंत बाहर निकल जाता है, ताकि GetParent शून्य (null) लौटाए!

अब आपको एक ऐसा निष्पादन योग्य खोजना होगा जो हार्ड लिंक का लक्ष्य हो सके। यह एक EXE या DLL होना चाहिए जो स्वचालित रूप से SYSTEM के रूप में कुछ समय बाद चलेगा, ताकि जब आप इसे अधिलेखित करें, तो आपको SYSTEM विशेषाधिकार मिलें। मैं देखता हूँ कि RunAnalysis को कॉल करने पर, HPSupportSolutionsFrameworkService कई प्रक्रियाओं को SYSTEM के रूप में प्रारंभ करती है। आप उन प्रक्रियाओं को अपने स्वयं के निष्पादन योग्य से अधिलेखित कर सकते हैं। हालांकि, सेवा उन EXE को प्रारंभ करने से पहले उनके हस्ताक्षरों की जाँच करती है, इसलिए आप नकली EXE नहीं बना सकते, लेकिन उन EXE द्वारा लोड की गई DLL का सहारा ले सकते हैं। कई DLL पहले से ही कहीं लोड हो चुकी हैं, और कई .NET DLL लोड होने से पहले हस्ताक्षर-जांची जाती हैं, इसलिए आप उनका उपयोग नहीं कर सकते। सौभाग्य से, अभी भी कुछ DLL उपयोग करने योग्य हैं:

  • c:\program files (x86)\hp\shared\hputils64.dll, Detect_BatteryFailure.exe (HP हस्ताक्षरित) द्वारा लोड की गई।
  • c:\windows\syswow64\rtutils.dll
  • c:\windows\system32\msxml3.dll

मैंने hputils64.dll को संशोधित करने का प्रयास किया और सफल रहा। मैं hputils64.dll के लिए एक हार्ड लिंक बनाता हूँ। RunAnalysis को कॉल करने पर, HPSAObjUtil8 hputils64.dll की अनुमतियाँ बदलता है, फिर कुछ सेकंड बाद Detect_BatteryFailure.exe प्रारंभ होता है (LOCAL SYSTEM के रूप में) और hputils64.dll लोड करता है। hputils64 लोड होने से पहले, आप इसे अधिलेखित कर सकते हैं, ताकि Detect_BatteryFailure.exe आपकी दुर्भावनापूर्ण DLL लोड करे और अंततः आपको SYSTEM अधिकार मिल जाए।

निष्कर्ष

शोषण लिखने के लिए, मैंने बनाया:

  • CreateProcess.exe: एक प्रक्रिया को कॉल करें और बाहर निकलें। इसका उपयोग पैरेंट सत्यापन बायपास के लिए किया जाता है।
  • CreateHardlink.exe: हार्ड लिंक बनाएं।
  • Userenv.dll: .NET असेंबली को निष्पादित करने और असेंबली invader.exe को BatterTest के संदर्भ में निष्पादित करने के लिए चीज़ें सेट करें। इसका उपयोग क्लाइंट हस्ताक्षर सत्यापन बायपास के लिए किया जाता है।
  • Invader.exe: RunAnalysis को कॉल करें जो बग को ट्रिगर करेगा।
  • MalDll.dll: नोटपैड को कॉल करें। hputils64.dll को इस DLL से अधिलेखित किया जाता है।

PrivHP4.py में शोषण के चरण निम्नलिखित हैं:

  1. BatteryTest.exe और अन्य आवश्यक फ़ाइलों को %tmp% फ़ोल्डर में कॉपी करें।
  2. C:\ProgramData\Hewlett-Packard\HP Support Framework\Logs\Temp\HPSA\hardlink.xml से C:\Program Files (x86)\HP\Shared\hputils64.dll तक हार्ड लिंक बनाएँ।
  3. CreateProcess.exe के साथ BatteryTest.exe प्रारंभ करें। CreateProcess.exe BatterTest प्रारंभ करने के तुरंत बाद समाप्त हो जाएगा।
  4. C:\Program Files (x86)\HP\Shared\hputils64.dll की अनुमति बदलने की प्रतीक्षा करें, फिर इसे MalDll.dll से अधिलेखित करें, और फिर नोटपैड के SYSTEM के रूप में प्रारंभ होने की प्रतीक्षा करें!

PoC का परीक्षण करने के लिए, बस रिपॉजिटरी को क्लोन करें और PrivHP4.py चलाएँ।

संदर्भ

  1. https://support.hp.com/us-en/document/c06388027
  2. http://www.securityfocus.com/bid/108891
टूल डाउनलोड करें