导语:如果你在最近的更新如KB4025342中看到以下三个关键字,请不要惊慌,...
如果你在最近的更新如KB4025342中看到以下三个关键字,请不要惊慌,…
…保持冷静,并阅读新的安全更新指南门户网站上的CVE-2017-8565
是的,CVE-2017-8565于2017年7月11日发布。
来自Hewlett-Packard Enterprise Security的Oleksandr Mirosh和AlvaroMuñoz报告了这个漏洞,我们可以在致谢页面看到。
在下一页中,你可以阅读有关这个安全问题的详细说明:https:
//portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-8565
当PSObject包装CIM实例时,PowerShell中就会存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可能会在易受攻击的系统上执行恶意代码。
在攻击方案中,攻击者可以在PowerShell远程会话中执行恶意代码。
该更新通过更正PowerShell如何反序列化用户提供的脚本来解决漏洞。
上述页面说明了这是一个远程执行代码(RCE)漏洞,我猜测这是因为在攻击场景中调用了Remoting所致。
这就是为什么我并不是百分之百的同意这个漏洞级别:
首先,我们快速检查一下谁可以在Windows 10 1703工作站上使用Get-PSSessionConfiguration cmdlet 访问到Remoting。
§ NT AUTHORITY INTERACTIVE(S-1-5-4)是登录交互式操作的用户。当进程以交互方式登录时会将这个权限添加到进程令牌中的组标识符。相应的登录类型为LOGON32_LOGON_INTERACTIVE。(来源)
§ BUILTIN Administrators(S-1-5-32-544)
内置组。初始安装操作系统后,该组的唯一成员是管理员帐户。当计算机加入域时,域管理员组将添加到管理员组。当服务器成为域控制器时,企业管理员组也将添加到管理员组(来源)
§ BUILTIN Remote Management Users(S-1-5-32-580) 内置本地组。该组的成员可以通过管理协议访问WMI资源(例如通过Windows远程管理服务进行WS-Management)。这仅适用于授予用户访问权限的WMI命名空间。(来源)
上面列出的这三个组都可以通过Remoting进行连接,并且这些组的用户已经拥有了计算机的管理权限,或者是可以交互方式登录(此时你已经是管理员或标准用户)或者是属于本地BUILTIN Remote Management Users的成员。
如果你还不是管理员,那么你可以通过利用CVE-2017-8565这个漏洞获取远程会话最终成为管理员。
在这种情况下,我更愿意将这类“远程执行代码”(RCE)的漏洞称为特权提升(EoP)。
记住:
通过PowerShell调用代码远程处理是PowerShell Remoting的主要目的。
现在,假设我们添加了其他远程配置,因为你已经使用RunAs帐户(特权帐户)实现了JEA(Just Enough Administration)或限制远程终端以授权访问某些(较少特权)的远程用户(通常是helpdesk组的成员)。
较小权限的远程用户可以通过利用此漏洞获得访问(易受攻击的)远程配置/会话的权限,然后获得更多的权限。
我们可以在PowerShell Core中看到有关此漏洞的更多详细信息。开源项目的优点在于,它们在修复错误时往往更加透明和敏捷。
在PowerShell Core github存储库中,对于常规Windows版本的PowerShell发布安全更新的第二天,CIM解串器的问题就被引入了。
它在约三天内被修复。
你可以使用此链接查看相关的合并Pull请求。
我已经在安装了KB4025342的Windows 10 1703上完全修补了这个漏洞。导入损坏的CIM类,并没有启动计算器进程。
我已经删除了KB4025342并重新启动了计算机
wusa.exe /uninstall /kb:4025342 /norestart
导入损坏的CIM类然后成功启动了一个计算器进程。它的完整性标记为“AppContainer”,并且实际上具有了比其父进程(wsmprovhost.exe)级别设置为中等(作为标准用户运行)的完整性级别。
导入损坏的CIM类和执行下面的命令具有相同的结果:
Invoke-Command -ComputerName . -EnableNetworkAccess { calc.exe }
到目前为止我没有成功特权提升。
现在我们假设我添加了一个非常有限的端点(仅允许import-clixml和访问filessystem提供程序)
$HT = @{ SchemaVersion = '1.0' ExecutionPolicy = 'Restricted' SessionType = 'RestrictedRemoteServer' LanguageMode = 'NoLanguage' VisibleCmdlets = 'Import-Clixml' VisibleProviders = 'FileSystem' RunAsVirtualAccount = $true } New-PSSessionConfigurationFile -Path C:config.pssc @HT Register-PSSessionConfiguration -Path 'C:config.pssc' -Name "Test" -Force
导入损坏的CIM类导致了逃离受限端点限制(“沙箱”)的能力,并在更高特权的帐户下运行任意代码。你可以看到wsmprovhost.exe在WinRM虚拟用户下运行,具有高完整性级别,并且有两个从其安全上下文继承的子进程(cmd.exe和openwith.exe通过尝试运行calc来触发):
在我看来,没有必要因为这个漏洞感到恐慌。
任意代码只能在某些特定场景中运行在更高的安全上下文中。
通过应用已经可用的Windows安全更新,可以轻松地修复此漏洞。
在Windows 7上,默认情况下,只有管理员才能通过Remoting进行连接: