论坛: 菜鸟乐园 标题: RPC溢出漏洞 复制本贴地址    
作者: ping123 [ping123]    论坛用户   登录

 详细: 
自RPC被发现存在严重的缓冲溢出漏洞以来,安络也一直在跟踪,并对其进行了深入研究。在此以前已先后发布了两篇安全漏洞公告(Microsoft RPC接口远程溢出缺陷允许执行任意代码、Microsoft Windows 2000 DCOM RPC接口DoS及权限提升缺陷),并也提供了相应的测试代码。

鉴于此漏洞危险程度之高,安络将再次重申,希望引起广大用户的重视。因为此漏洞会影响nt\2k\xp\2003+sp4的所有服务器,建议用户最好查一下是不是所有机器都打上了hotfix 。

LSD 的RPC溢出漏洞(MS03-26)其实包含了2个溢出漏洞,一个是本地的,一个是远程的。他们都是由一个通用接口导致的。

导致问题的调用如下:

hr = CoGetInstanceFromFile(pServerInfo,NULL,0,CLSCTX_REMOTE_SERVER,STGM_READWRITE,L"C:\\1234561111111111111111111111111.doc",1,&qi);

这个调用的文件名参数(第5个参数,会引起溢出),当这个文件名超长的时候,会导致客户端的本地溢出(在RPCSS中的GetPathForServer函数里只给了0X220堆栈的空间,但是是用lstrcpyw进行拷贝的),这个我们在这里就不深入研究了(不过这个API先会检查本地文件是否存在,在进行处理,因此由于建不了长文件,所以要利用这个溢出不能直接调用这个API,而是构造好包信息以后直接调用LPC的函数,有兴趣的可以自己去试。),我们来讲解一下远程的溢出。

在客户端给服务器传递这个参数的时候,会自动转化成如下格式:L“\\servername\c$\1234561111111111111111111111111.doc"这样的形式传递给远程服务器,于是在远程服务器的处理中会先取出servername名,但是这里没做检查,给定了0X20(默认问题代码如下:


GetPathForServer:
.text:761543DA           push   ebp
.text:761543DB           mov   ebp, esp
.text:761543DD           sub   esp, 20h <-----0x20空间
.text:761543E0           mov   eax, [ebp+arg_4]
.text:761543E3           push   ebx
.text:761543E4           push   esi
.text:761543E5           mov   esi, [ebp+hMem]
.text:761543E8           push   edi
.text:761543E9           push   5Ch
.text:761543EB           pop   ebx
.text:761543EC           mov   [eax], esi
.text:761543EE           cmp   [esi], bx
.text:761543F1           mov   edi, esi
.text:761543F3           jnz   loc_761544BF
.text:761543F9           cmp   [esi+2], bx
.text:761543FD           jnz   loc_761544BF
.text:76154403           lea   eax, [ebp+String1]《-----------写入的地址,只有0X20
.text:76154406           push   0
.text:76154408           push   eax
.text:76154409           push   esi     〈----------------------我们传入的文件名参数
.text:7615440A           call   GetMachineName
。。。。。。。。。。。。。。。。。。。。。。。。。。 此函数返回的时候,溢出点生效

GetMachineName:
.text:7614DB6F           mov   eax, [ebp+arg_0]
.text:7614DB72           mov   ecx, [ebp+arg_4]
.text:7614DB75           lea   edx, [eax+4]
.text:7614DB78           mov   ax, [eax+4]
.text:7614DB7C           cmp   ax, 5Ch       〈-----------------只判断0X5C
.text:7614DB80           jz    short loc_7614DB93
.text:7614DB82           sub   edx, ecx
.text:7614DB84 
.text:7614DB84 loc_7614DB84:                  ; CODE XREF: sub_7614DA19+178 j
.text:7614DB84           mov   [ecx], ax    〈----------------写入上个只有0X20的空间,超过就溢出
.text:7614DB87           inc   ecx
.text:7614DB88           inc   ecx
.text:7614DB89           mov   ax, [ecx+edx]
.text:7614DB8D           cmp   ax, 5Ch
.text:7614DB91           jnz   short loc_7614DB84
.text:7614DB93 
解决方案: 
下载补丁:

Windows NT 4.0 Server:
http://microsoft.com/downloads/details.aspx?FamilyId=2CC66F4E-217E-4FA7-BDBF-DF77A0B9303F&displaylang=en

Windows NT 4.0 Terminal Server Edition :
http://microsoft.com/downloads/details.aspx?FamilyId=6C0F0160-64FA-424C-A3C1-C9FAD2DC65CA&displaylang=en

Windows XP 32 bit Edition:
http://microsoft.com/downloads/details.aspx?FamilyId=2354406C-C5B6-44AC-9532-3DE40F69C074&displaylang=en

Windows XP 64 bit Edition:
http://microsoft.com/downloads/details.aspx?FamilyId=1B00F5DF-4A85-488F-80E3-C347ADCC4DF1&displaylang=en

Windows Server 2003 32 bit Edition:
http://microsoft.com/downloads/details.aspx?FamilyId=F8E0FF3A-9F4C-4061-9009-3A212458E92E&displaylang=en

Windows Server 2003 64 bit Edition:
http://microsoft.com/downloads/details.aspx?FamilyId=2B566973-C3F0-4EC1-995F-017E35692BC7&displaylang=en

临时解决方案:

* 使用防火墙过滤135端口
 
  
  
  
 
    
     
 
   
 
 


地主 发表时间: 07/26 14:17

回复: jamesgj [jamesgj]   论坛用户   登录
美女,厉害啊。不错!~继续努力!:)DING

B1层 发表时间: 07/30 15:26

回复: jamesgj [jamesgj]   论坛用户   登录
美女,厉害啊。不错!~继续努力!:)DING

B2层 发表时间: 07/30 15:26

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号