几个月前,我发现在Check Point端点安全V**客户端中有一个DACL权限覆盖漏洞。此漏洞允许Windows系统上的任何用户Full Control为Authenticated Users安全组的任何文件设置权限(唯一的限制是SYSTEM用户需要访问该文件的编辑权限,因此TrustedInstaller无法覆盖某些系统文件) 。V**客户端有两个对应部
几个月前,我发现在Check Point端点安全V**客户端中有一个DACL权限覆盖漏洞。此漏洞允许windows系统上的任何用户Full Control
为Authenticated Users
安全组的任何文件设置权限(唯一的限制是SYSTEM
用户需要访问该文件的编辑权限,因此TrustedInstaller
无法覆盖某些系统文件) 。
V**客户端有两个对应部分,一个运行的Windows服务SYSTEM
和一个作为当前用户运行的用户空间客户端。对于此漏洞,除了重新启动它之外,我们并不需要与服务器进行交互。但是,我确实研究了用户客户端和服务之间的通信,这是一种有趣的自定义RPC协议类型,可能很有趣。
虽然我确实单独发现了此漏洞,但我并不是第一个向Check Point报告此漏洞的人。在固定的版本发布16. 2019年4月。
启动“Check Point Endpoint Security V**”服务后,它会对所有文件的权限执行重置C:\
Windows
\Internet Logs
。它设置的权限是Full Control
对于Authenticated Users
这意味着该系统上的任何用户有权限写入,读取和修改这些文件。它还提供了Full Control
对Internet Logs
文件夹本身。Internet Logs
无论源是什么,无论文件夹中的所有文件的内容如何,都会执行此权限重置。
Windows可以创建硬链接。简单地说(并且远非实际正确)解释,硬链接是另一个文件的副本,其中在副本上执行的任何文件传播到原始文件,反之亦然。这意味着如果我们有一个指向文件的硬链接,并且我们在硬链接上设置了权限,那么这些权限在原始权限上也是相同的。但是,内置的命令行工具mklink
要求创建硬链接的用户具有对“原始”文件的写访问权。Google的Project Zero的James Forshaw实际上发现这并不是一项艰难的要求。在Windows中mklink
使用CreateHardlinkW
API来强制执行写入检查,然后NtSetInformationFile
在用户具有写访问权限时调用。但是,如果我们只是使用NtSetInformationFile
直接,我们可以绕过这种写访问实施。詹姆斯·福肖(James Forshaw)在他的帖子中详细介绍了这种绕过它的功能,除非正在运行的应用程序是沙箱的。
这意味着从具有编辑权限的C:\Windows\Internet Logs
任何文件创建硬链接SYSTEM
会将这些权限重置为系统中的任何用户都可以覆盖它的状态。这可以导致标准用户帐户的特权提升。
首先,我们需要一个覆盖的文件,这可能会给我们提升权限。查看任务调度程序以查看正在运行的任务SYSTEM
是一个良好的开端。
Google Update计划任务是一个很好的目标,它运行为SYSTEM
,在可预测的时间运行(在任何用户登录时),并且可执行文件可以修改和写入SYSTEM
。
接下来,我们需要创建一个C:\Windows\Internet Logs
到Google Update可执行文件的硬链接。FuzzySecurity的PowerShell-Suite有一个方便的PowerShell脚本,可以NtSetInformationFile
直接使用创建硬链接; Native-HardLink。我们导入该脚本并创建指向Google Update可执行文件的硬链接。
我们现在将看到在两个目录中镜像的可执行文件。
接下来,由于标准用户帐户无法重新启动Check Point服务,因此我们重新启动计算机以重新启动服务。启动时,我们会看到文件权限GoogleUpdate.exe
已更新,我们现在可以作为标准用户覆盖其内容。
我选择用反向shell替换可执行文件,所以我们这样做,注销并重新SYSTEM
进入,我们将获得一个具有访问权限的shell 。
黑白网翻译,原文由https://bordplate.no/blog/en/post/check-point-file-permissions-overwrite/