标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-3085] 作者: 羽毛 发表于: [2022-04-29]
本文共 [336] 位读者顶过
漏洞概述WPS Office安装时,会以管理员权限安装服务程序wpscloudsvr,该服务程序配置为手动启动,但错误配置了该服务程序所在文件夹的访问控制列表(ACL)属性,普通Users组成员仍然对该文件夹有读写权限。 影响范围
WPS Office版本小于11.2.0.10258均存在该漏洞。[出自:jiwo.org] 利用场景普通Users组成员在服务程序wpscloudsvr所在文件夹放置被劫持的DLL文件,以普通用户权限启动该服务,最终DLL被服务程序加载执行,实现本地提权。 (wpscloudsvr服务程序自身并不存在DLL劫持漏洞,可使用系统DLL劫持漏洞,测试时win7 6.1.7601 sp1 32位系统存在可被利用的系统DLL劫持漏洞,win10 10.0.18363.592 64位不存在可被利用的DLL劫持漏洞) 复现环境操作系统:Win7 6.1.7601 sp1 32位WPS Office版本:WPS Office 11.2.0.10200复现工具:Process Explorer,Process Monitor,CFF Explorer,vs2008 分析过程首先使用普通Users组用户登录windows系统,如下图所示。安装WPS Office 11.2.0.10200.exe程序,安装好后可以看到已经安装了一个名为wpscloudsvr的服务程序,服务程序路径为C:\ProgramData\Kingsoft\office6\wpscloudsvr.exe,该服务配置为手动启动,启动后以System权限运行,如下图所示。使用icalcs命令查看服务程序所在文件夹的ACL属性,发现普通Users组成员对该路径有写入数据或者添加文件(WD)权限,如下图所示。使用CFF Explorer查看服务程序C:\ProgramData\Kingsoft\office6\wpscloudsvr.exe的导入表,发现只有KERNEL32.dll,无可被劫持的DLL,如下图所示。使用监控工具Process Monitor监控服务程序C:\ProgramData\Kingsoft\office6\wpscloudsvr.exe的运行过程,发现可被劫持的DLL文件有cryptsp.dll,cryptbase.dl等,如下图所示。所以,可以用普通Users组用户权限在服务程序C:\ProgramData\Kingsoft\office6\wpscloudsvr.exe同目录下放置被劫持的cryptsp.dll文件,然后启动wpscloudsvr服务,加载运行被劫持的cryptsp.dll,实现普通用户权限提升到系统权限。 复现过程
为简单起见,复现代码借鉴自https://github.com/HadiMed/KINGSOFT-WPS-Office-LPE,演示本地提权。这里主要阐述下这部分代码的逻辑。首先需要编译被劫持的cryptsp.dll文件。在该DLL运行时,激活系统超级管理员,并修改其密码,以备后续登录使用,如下图所示。 然后使用该系统超级管理员登录系统,并此账号权限运行另一利用程序nt_sys.exe,如下图所示。最后编译nt_sys.exe利用程序。该程序运行时,首先设置自身权限为SeDebugPrivilege,然后打开winlogon.exe进程(该进程为System权限),获取其Token,最后以此Token创建C:\Windows\System32\cmd.exe进程,实现提权,如下图所示。编译好后,应该有cryptsp.dll,exploit.exe,nt_sys.exe三个程序,将其放到同一目录下,以普通用户权限运行exploit.exe,利用该漏洞,可以实现以system权限运行cmd.exe,实现提权 |