threst's Blog

readfile-0day复现

2018/12/23 Share

poc:下载
http://sandboxescaper.blogspot.com/2018/12/readfile-0day.html
http://www.filedropper.com/readfile
ReadFile函数:
https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-readfile
新闻:https://www.bleepingcomputer.com/news/security/windows-zero-day-poc-lets-you-read-any-file-with-system-level-access/

## 漏洞描述
该错误发生在“MsiAdvertiseProduct”中
调用此函数将导致安装程序服务进行文件复制。
这会将我们可以用第一个参数控制的任意文件复制到c:\windows\installer …模拟时进行检查,但是使用联结仍然有一个TOCTOU …这意味着我们可以将它复制到SYSTEM ,目标文件将始终可读。这导致任意文件读取漏洞。
重现:
确保同时复制readfile.exe和“file”(位于文件夹PoC-Files下)…并将它们放在同一目录中。
用法:readfile.exe targetfile(其中targetfile是要读取的文件,IE:“readfile.exe c:\users\test\desktop\desktop.ini”)
在2核或更多核上运行,这应该在一个核心上进行一些修改…因为你应该能够用oplocks来达到计时(但我很懒)..你应该能够看到这样的东西,如果它有效:https://www.youtube.com/watch?v=x4P2H64GI1o
确认错误的最简单方法是创建两个本地帐户并读取另一个帐户的desktop.ini。
即使没有枚举向量,这仍然是坏消息,因为许多文档软件,如office,实际上会将文件保存在静态位置,其中包含最近打开的文档的完整路径和文件名。因此,通过读取这样的文件,你可以获取由其他用户创建的文档的文件名..文件系统是一个spiderweb,并且可以在任何地方找到对用户创建的文件的引用..所以没有枚举错误并不是那么大的交易。
如果启用了卷影副本,你可以明显地窃取SAM和SYSTEM hive我认为……
也许还有一些其他的用例..但我不是很聪明,所以我不知道。

本地复现

1.新建一个test普通用户
2.将poc解压
3.C:\Users\test\Desktop\PoC-Files>Readfile.exe C:\Users\threst\Desktop\key.ps1

CATALOG
  1. 1. 本地复现