记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

CVE-2013-3893 临时修复解决方案

2013-09-23 18:45

今天,我们给大家带来的是CVE-2013-3893这个漏洞的一个临时修复解决方案,CVE-2013-3893这一漏洞允许黑客们在用户使用IE上网时,发送含有恶意代码的远程代码。这个修复工具会对mshtml.dll这个动态链接库文件进行一些小修改,使之在载入内存的时候避免了漏洞促发。

漏洞修复工具在下文即可下载到,这个修复工具只可以运行在Windows XP 或Windows 7中,而且针对的版本是Internet Explorer 8 或 9.

修复工具

卸载修复工具

Microsoft Fix it 51001

Microsoft Fix it 51002

CVE-2013-3893漏洞简介

Internet Explorer,简称MS IE,是微软公司推出的一款网页浏览器。MS IE的MSHTML.DLL组件存在一个远程代码执行漏洞。此漏洞可以利用Javascript促发(和java、Flash等没什么关系),漏洞的促发高度依赖微软的DLL文件。当浏览器解析含有HTML的 href属性时, 此DLL (hxds.dll)就会被载入到 IE中,例如下文所示的代码:

try { location.href = 'ms-help://' } catch (e) { }

 

利用此漏洞访问已经被删除或未正确分配的内存对象,导致内存破坏,从而以IE当前用户身份执行任意指令。远程攻击者可能利用此漏洞通过诱使用户访问恶意网页执行挂马攻击,控制用户系统。

一旦漏洞访问已经被删除或未正确分配的内存对象之后,系统就会调用一个函数来释放对象。如果攻击者控制了EIP之后,然后让指针指向0×12121212这个堆栈地址。0×12121212包含了一个ROP链。如以下的代码所示:

Addr        Data   Significance
12121212 51c3b376 //ret
12121216 51c3b376 //ret
1212121a 51c3b376 //ret
1212121e 51c3b376 //ret
12121222 51c3b376 //ret
12121226 51c3b376 //ret
1212122a 51c3b376 //ret
1212122e 51c3b376 //ret
12121232 51c3b376 //ret
12121236 51c3b376 //ret
1212123a 51c3b376 //ret
1212123e 51c3b376 //ret
12121242 51c3b376 //ret
12121246 51c3b376 //ret
1212124a 51c3b376 //ret
1212124e 51c3b376 //ret
12121252 51c3b376 //ret
12121256 51c3b376 //ret
1212125a 51c3b376 //ret
1212125e 51c3b376 //ret
12121262 51c3b376 //ret
12121266 51c3b376 //ret
1212126a 51c3b376 //ret
1212126e 51c3b376 //ret
12121272 51c3b376 //ret
12121276 51c3b376 //ret
1212127a 51c3b376 //ret
1212127e 51c2046e //pop edi; ret
12121282 51be4a41 //xchg eax, esp; ret stack pivot. we call into here
12121286 51c2046e //pop edi; ret
1212128a 51bd10b8 //VirtualProtect IAT entry in hxds
1212128e 51c0e455 //mov eax, [edi]; pop edi; ret move VirtualProtect address in to eax and waste next ROP chain link
12121292 51c3b376 //ret
12121296 51bd71f4 //push eax; ret push VirtualProtect address, and ret into it
1212129a 121212da return address after VirtualProtect (Shellcode)
1212129e 12121212 lpAddress //VirtualProtect(lpAddress = 12121212, dwSize = 00001000,
121212a2 00001000 dwSize //flNewProtect = 00000040 = PAGE_EXECUTE_READWRITE,
121212a6 00000040 flNewProtect // lpflOldProtect = 12120a0c)
121212aa 12120a0c lpflOldProtect //

EMET 4.0

EMET 4.0可以用来帮助我们找出项目里面的漏洞,通过流程化的分析,来找出你的项目里的未知漏洞. 下面是一份安全加固清单:

    • 强制 ASLR
    • ROP
      • 打开 MemProt
      • 打开 Caller
      • 打开 SimExecFlow
      • 打开 StackPivot
    • Heap Spray

找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EMET\iexplore.exe\ *\Internet Explorer\iexplore.exe中的值

      • 打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EMET\_settings_\VALUE_FROM_STEP_1\heap_pages
      • 在列表中增加0×12121212 键值

修复工具

我们也制作了一个应用程序修复工具,可作为临时的替代方案,来保护你的系统不被攻击者所入侵。

这个补丁只有23个字节,但是这个修复工具却能够有效的缓解被攻击的危险。这个只有23个字节的补丁分为两个部分。一个部分是用来直接执行的shim 代码的代码(喵的,好难翻译啊), 另一部分是 shim 代码本身.下面是一个win7IE9,在修复工具起作用之前和之后的对比:

修复工具生效之前:

mshtml!CDoc::SetMouseCapture [j:\win7\inetcore\mshtml\src\site\base\ipwnd.cxx @ 3211]:
8bff mov edi,edi
55 push ebp
8bec mov ebp,esp
81eca0000000 sub esp,0A0h
53 push ebx
8b5d08 mov ebx,dword ptr [ebp+8]
56 push esi
57 push edi
8bf9 mov edi,ecx
f7879807000000100000 test dword ptr [edi+798h],1000h
8bf0 mov esi,eax
0f855b000400 jne mshtml!CDoc::SetMouseCapture+0x21 (6ca068f1)
85db test ebx,ebx
0f855a000400 jne mshtml!CDoc::SetMouseCapture+0x32 (6ca068f8)
53 push ebx
e88d2affff call mshtml!CDoc::ClearMouseCapture (6c9b9331)

mshtml!_NULL_IMPORT_DESCRIPTOR+0x420b:
0000 add byte ptr [eax],al
0000 add byte ptr [eax],al
0000 add byte ptr [eax],al
0000 add byte ptr [eax],al
0000 add byte ptr [eax],al
0000 add byte ptr [eax],al
0000 add byte ptr [eax],al
0000 add byte ptr [eax],al

修复工具生效之后:

mshtml!CDoc::SetMouseCapture [j:\win7\inetcore\mshtml\src\site\base\ipwnd.cxx @ 3211]:
8bff mov edi,edi
55 push ebp
8bec mov ebp,esp
81eca0000000 sub esp,0A0h
53 push ebx
8b5d08 mov ebx,dword ptr [ebp+8]
56 push esi
57 push edi
8bf9 mov edi,ecx
f7879807000000100000 test dword ptr [edi+798h],1000h
8bf0 mov esi,eax
0f855b000400 jne mshtml!CDoc::SetMouseCapture+0x21 (6c6d68f1)
85db test ebx,ebx
0f856d8d6700 jne mshtml!_NULL_IMPORT_DESCRIPTOR+0x420b (6cd0f60b)
53 push ebx
e88d2affff call mshtml!CDoc::ClearMouseCapture (6c689331)

mshtml!_NULL_IMPORT_DESCRIPTOR+0x420b:
66f743260100 test word ptr [ebx+26h],1
0f848d7298ff je mshtml!CDoc::SetMouseCapture+0x227 (6c6968a4)
e9dc729cff jmp mshtml!CDoc::SetMouseCapture+0x32 (6c6d68f8)

正如你所见到的, NULL_IMPORT_DESCRIPTOR中的代码,正是这个修复方案中的核心代码。它通过检查一个C++ 对象的旗标信息来阻止漏洞的产生.

这是一个很复杂的修复工具,因为要考虑到各个版本各种语言的IE和各个版本的win系操作系统。所以需要大家一起来做实验,以找出这个漏洞修复方案的漏洞。这里需要感谢Michael Howell Han Li on ,他们的IE项目组帮助我测试了不同版本不同语言不同操作系统的IE浏览器修复方案。还要感Elias Bachaalany 提供的技术支持。

-          来自Neil Sikka, MSRC 工程师.

原文地址:http://blogs.technet.com/b/srd/archive/2013/09/17/cve-2013-3893-fix-it-workaround-available.aspx

 

小编语:其实小编不懂英语,前面那些都是我编的,现在我编不下去了……

本文由网络安全研究室(www.91ri.org)原创翻译,转载请注明出处

 

文中若未特别声明转载请注明来自:91ri.org
知识来源: www.91ri.org/7277.html

阅读:85851 | 评论:0 | 标签:最新漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“CVE-2013-3893 临时修复解决方案”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云