标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-2886] 作者: 大猪 发表于: [2021-05-21] [2021-05-21]被用户:大猪 修改过
本文共 [482] 位读者顶过
环境描述漏洞模块 %SystemRoot%\system32\profsvc.dll 补丁对比文件环境:win7 x86 调试环境:win 10 x64 1903 补丁查看修补情况如下图所示
先来看看改动最大的函数CreateTempDirectoryForUser 修补前 在创建目录前没有模拟用户
[出自:jiwo.org]
另一个被修补的LoadUserClasses函数 同样也是没有经过模拟用户便创建目录,被修补后则选择了模拟用户token
LoadUserProfileServer是一个rpc接口函数,在调用CUserProfile::Load之前其实是模拟了本地用户的但是后面又取消了模拟 LoadUserProfileServer 的参数是一个上下文句柄,该句柄具有in 属性,所以需要先调用DropClientContext 获得服务端返回给我们初始化好的上下文句柄。 如下图所示,映射名称为IUserProfile2,uuid为326731e3-c1c0-4a69-ae20-7d9044a4ea5c
当我使用rpc view反编译的接口编译后提示1764.提示参数错误,便去ida查看参数,得知最后一个Struct_6_t最后一个成员应该是long*而不是unsigend,于是修改后便没有报错 其实Struct_6_t就是PROFILEINFO结构,这是用户配置结构。
当DropClientContext调用成功后,上下文句柄初始化好了,然而初始化好的并不完美,因为我传了一个空的PROFILEINFOW结构,
要想上下文句柄的后8个字节不为0,需要在调用DropClientContext时传入一个正确PROFILEINFOW,如下图所示
此时便能进入CUserProfile::Load
一直跟,直接对CreateDirectoryW下断,断下后再查看创建的目录名
现在我们得知我们可以利用该漏洞创建
我们对CloudStore 所在的Windows目录有着删除权限 关于利用部分请参考这篇:
从任意目录创建到任意文件读取
|