Real Player v.20.0.8.310 G2 Control 'DoGoToURL()' 远程代码执行漏洞
视频演示:https://www.youtube.com/watch?v=9c9Q4VZQOUk
Real Player G2 Control 组件包含一个远程代码执行漏洞,因为它允许将 'javascript:' URI 作为参数传递,这通常是不安全的,因为在某些情况下可能允许在任意域中注入脚本代码(通用跨站脚本 - uXSS),进而可能被用来窃取 Cookie 等。通过将 'URL' 参数设置为 'javascript:' URI,并将 'target' 参数设置为 'iframe' HTML 元素,就可以在用同一个 Control 导航到诸如 'mhtml:http://%SERVER%/frame.htm' 这样的无效 URI 后,导致 JavaScript 代码在随后显示的本地错误页面的上下文中运行:当 MS IE 渲染引擎调用 'mhtml:' URI 时,它期望一个其扩展名对应的 MIME 类型为 "message/rfc822" 的 MHTML 文件,'.mht' 文件就是这样;'.htm' 文件的 MIME 被设置为 'text/html',因此 IE 会取消加载文档并显示本地错误页面(导航已取消)。本地错误页面地址是 'res://ieframe.dll/navcancl.htm',它属于 IE / Windows 的“我的电脑”安全区域,该区域按设计允许读取任意本地文件并执行任意代码。在该控件中禁止 'javascript:' URI 可以缓解此问题。
该 PoC 使用 'SYSMON' ActiveX 控件将一个 HTA 文件植入到用户的启动文件夹中,该文件将在下次登录或启动时执行。HTA 文件可以包含代码,例如下载或提取嵌入的 EXE 文件并运行它。 该 PoC 假设 Real Player 的当前工作目录设置为用户主目录的子目录。当使用例如 Web 浏览器下载文件时,默认情况下它们会被下载到用户的 'Downloads' 文件夹中,因此我们无需检索 Windows 用户名即可将 HTA 文件植入启动文件夹。这仅仅是为了方便,因为可以通过多种方式获取此信息,包括 MS Web Browser ActiveX。
该漏洞可以通过打开 Real Player 播放列表文件(如 RAM 文件)来利用。
要重现该问题,请执行以下操作:
a) 搭建一个 Web 服务器 b) 在 Web 服务器根目录下,将 "RP_G2" 文件夹解压到其中。 c) 打开刚解压出的 "RP_G2" 文件夹,然后在文本编辑器中打开以下文件: "poc.htm"、"sm_rpx.js"、"start.ram"。只需将每个文件中的字符串 %SERVER% 替换为实际 Web 服务器的 IP 地址。 d) 确保 Web 服务器和所有相关文件均可访问。在 MS IIS Web 服务器上,您可能需要添加一个新扩展名并将其与某个 MIME 类型关联,因此请将 .RAM 扩展名与 MIME "audio/x-pn-realaudio" 关联。 e) 在客户端(受害者)上,打开 Web 浏览器并下载 "start.ram" 文件(也可以通过例如 'rtsp:' 等 URL 协议访问),然后打开它。几秒钟后,您应该会看到一个 HTA 文件被植入到用户的启动文件夹中。
注意:要打开启动文件夹,请执行以下操作:打开“运行”菜单,然后输入:
shell:Startup
按回车键,就这么简单。
已在 Real Player v.20.0.8.310(以及可追溯到几年前的更低版本,例如 2014 年左右)上成功测试,运行环境为 Windows XP SP3、Vista、7、8.1、10、11,均已应用最新补丁。 (例如,Windows XP 最近一次更新是在 2014 年 4 月……Win 7 是在 2020 年 1 月,等等。)