CVE-2019-1315:基于错误报告机制的Windows提权漏洞
该漏洞由@clavoillotte于2019年10月8日公布
影响产品:Windows 10,Windows Server 2019(旧版本可能也受影响,但并没有测试)
漏洞类型:本地权限提升
概要:Windows错误报告服务会对普通用户可写文件执行一些敏感的文件(涉及权限)操作,这可能被攻击者利用来重命名/移动
只有SYSTEM
特权才能读取修改的文件。普通权限用户可以利用它来提升权限。
此漏洞已被Windows于2019年10月发布的安全补丁修复。
是由David Cash独立发现的。
描述
当Windows的错误报告服务被触发时(例如在程序崩溃之后),wermgr.exe
进程将在%ProgramData%\Microsoft\Windows\WER\ReportQueue\*_*_*_*_*
的目录下寻找报告文件,其中%ProgramData%\Microsoft\Windows\WER\ReportQueue
目录可被普通用户读取。在服务找到现有报告文件Report.wer
并读取后,会创建一个临时文件Report.wer.tmp
,再对其进行写入,最后将该文件重命名(SetRenameInformationFile)为Report.wer
,以覆盖已存在的报告文件。
如下所示,在通过PowerShell的FailFast()
生成报告时,可以从Procmon
中观察到文件重命名操作:
而这些操作是在SYSTEM
权限的情况下执行的,而操作所涉及的文件和目录是普通用户通过WerFault.exe
就可以创建的,并不需要符号链接的帮忙。
因此,普通权限用户可利用该漏洞,以SYSTEM
权限重命名/移动
文件。
实际上,用户可以控制这些操作所针对的目录,因为普通用户可以通过NTFS junction将某个目录指向任意位置,修改文件内容也会影响所指向的其他敏感文件。
虽然在默认情况下普通用户不能创建“真实的”针对系统文件的NTFS符号链接,但他们可以将解析到\RPC Control\
的对象目录挂载点与解析到目标的对象管理符号链接关联起来,构造一个“伪符号链接”,就像James Forshaw所展示的一样(1和2)。有关这方面的更多信息,请参阅详细说明文件。
因此,通过以下设置:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\a_b_c_d_e -> \RPC Control (NTFS junction)
\RPC Control\Report.wer -> C:\Windows\System32\evil.dll(object manager symbolic link)
和C:\ProgramData\Microsoft\Windows\WER\ReportQueue\a_b_c_d_e\Report.wer
有关的创建文件操作将会直接影响C:\Windows\System32\evil.dll
文件的出现。
当然,要实现稳定的利用,还需要克服一些障碍,比如wermgr
读取的文件必须是有效的报告文件,以及链接操作的时间,但是通过oplocks(锁操作)可以轻松解决这些问题。
普通用户可以利用重命名操作,设置以下“伪符号链接”来创建或替换只有SYSTEM
权限才能操作的文件:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\a_b_c_d_e\Report.wer -> C:\Windows\System32\evil.dll
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\a_b_c_d_e\Report.wer.tmp -> C:\path\to\payload.dll
最后,重命名操作将把C:\path\to\payload.dll
以SYSTEM
权限移动到C:\Windows\System32\evil.dll
。
PoC
我针对Windows 10 1903提供了一个PoC演示,具体是在你运行Test-Exploit
函数时,创建普通用户可写的%SystemRoot%\evil.txt
文件,文件内容为test
。
以下是一个展示视频,利用该漏洞植入一个恶意DLL文件,并获得一个SYSTEM
权限的shell:
视频地址:https://offsec.almond.consulting/videos/windows-error-reporting-arbitrary-file-move-eop/demo_wermgr.mp4
修复
微软已经发布了安全补丁和警告,用户可通过日常渠道进行更新。
参考文献
https://portal.msrc.microsoft.com/zh-CN/security-guidance/advisory/CVE-2019-1315
时间线
2019-09-22:漏洞报告给厂商
2019-09-23:厂商确认漏洞
2019-09-27:厂商回复说这个漏洞将在下周二的补丁中修复
2019-10-08:厂商发布了补丁和修复建议
2019-10-08:漏洞详情公布
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://offsec.almond.consulting/windows-error-reporting-arbitrary-file-move-eop.html
最新评论