摘要
StorSvc 是一个以 NT AUTHORITYSYSTEM
身份运行的服务,在本地触发 SvcRebootToFlashingMode
RPC 方法时会尝试加载缺失的 SprintCSP.dll DLL。
描述
StorSvc.dll!SvcRebootToFlashingMode
RPC 方法调用 StorSvc.dll!InitResetPhone
,该方法又调用 StorSvc.dll!ResetPhoneWorkerCallback
,后者尝试加载如下图像所示的 SprintCSP.dll:
由于这个 DLL 是缺失的,它将按照 DLL 搜索顺序 进行加载,我们可以利用这种行为,通过在 SYSTEM %PATH%
中包含的可写文件夹中放置恶意 DLL。然后,恶意 DLL 应该会以 SYSTEM 权限 执行。
值得注意的是,该服务以 LocalSystemNetworkRestricted
服务组中的 NT AUTHORITYSYSTEM
身份启动,该服务组具有以下权限:
Privilege Name Description State
============================ =================================================== =============
SeTcbPrivilege Act as part of the operating system Enabled
SeLoadDriverPrivilege Load and unload device drivers Disabled
SeBackupPrivilege Back up files and directories Disabled
SeRestorePrivilege Restore files and directories Disabled
SeSystemEnvironmentPrivilege Modify firmware environment values Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeManageVolumePrivilege Perform volume maintenance tasks Enabled
概念验证
在这个资源库中,我们提供了两种不同的源代码:
-
RpcClient.exe:触发RPC调用的程序。 -
SprintCSP.dll:可以放置来利用DLL劫持。这个概念验证运行一个 whoami
命令,并将输出写入C:ProgramDatawhoamiall.txt
。如果你想扩展这个概念验证的功能,你可以编辑 main.c 中的DoStuff()
函数。
提供的漏洞利用应该可以默认工作,并且已经在 Windows 10、Windows 11、Windows Server 2019 和 Windows Server 2022 上进行了测试。为了使其工作,必须更改 storsvc_c.c 中的 #define
宏,以便将漏洞利用适配到目标机器的操作系统。
触发漏洞利用后,需要停止或重启服务,SprintCSP.dll 已经做到了这一点。
步骤
-
使用 reg query "HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment" -v Path
查找可写的 SYSTEM 路径。 -
将 SprintCSP.dll 复制到可写路径。 -
执行 RpcClient.exe。 -
检查 C:ProgramDatawhoamiall.txt
。
参考
-
使用 RpcView 对 Windows RPC 进行模糊测试 -
CdpSvcLPE -
CDPSvc DLL 劫持 - 从 LOCAL SERVICE 到 SYSTEM
原文始发于微信公众号(3072):Windows 通过 StorSvc 提权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论