首页
社区
课程
招聘
[讨论]菜鸟对CVE-2010-3962的一点分析
发表于: 2012-3-27 08:42 10637

[讨论]菜鸟对CVE-2010-3962的一点分析

2012-3-27 08:42
10637

继续学windbg,参考了坛子里的两篇文章,但是侧重点不太一样

本机环境为win xp sp3+IE6,mshtml版本为6.0.2900.5726,poc样本来自metasploit->CVE-2010-3962。
Metasploit上对该漏洞的简述为:mshtml在解析某特定CSS Tag时,有可能发生内存错误,进而导致某次调用变成[vTable+0x30+1],此漏洞能否利用取决于[vTable+0x30+1]处取出的地址能否被heapspray覆盖,因为不能操纵eip,所以此漏洞无法使用ROP来bypass DEP云云。
Poc分为两部分,一部分为heapspray,此处略过,另一部分是引发漏洞的那个特制的CSS Tag,如下

<table style=position:absolute;clip:rect(0)>
(950.274): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=7e2233e1 ebx=0012d6a0 ecx=0273b6e0 edx=3fffffff esi=00000000 edi=0273b6e0
eip=147e27c9 esp=0012d654 ebp=0012d664 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206
<Unloaded_erify.dll>+0x147e27c8:
147e27c9 ??              ???

0:000> k
ChildEBP RetAddr  
WARNING: Frame IP not in any known module. Following frames may be wrong.
0012d650 7e291a95 <Unloaded_erify.dll>+0x147e27c8
0012d664 7e2c61df mshtml!CLayout::EnsureDispNodeBackground+0x97
0012d728 7e2c5440 mshtml!CTableLayoutBlock::EnsureTableDispNode+0x388
0012d908 7e2c5c25 mshtml!CTableLayout::CalculateLayout+0x295
0012da58 7e28b790 mshtml!CTableLayout::CalcSizeVirtual+0x665
0012db6c 7e2b9ec5 mshtml!CLayout::CalcSize+0x224
0012dbe0 7e2baa11 mshtml!CFlowLayout::MeasureSite+0x1e5
0012dc24 7e2ba948 mshtml!CFlowLayout::GetSiteWidth+0x12b
0:000> u 7e291a90 
mshtml!CLayout::EnsureDispNodeBackground+0x92:
7e291a90 8bcf            mov     ecx,edi
7e291a92 ff5030          call    [COLOR="Red"]dword ptr [eax+30h][/COLOR] ;CRASH!!!
7e291a95 85c0            test    eax,eax
7e291a97 7587            jne     CLayout::EnsureDispNodeBackground+0x9b
7e291a99 8b8380000000    mov     eax,dword ptr <Unloaded_.dll>+0x7f (00000080)[ebx]
7e291a9f c1e803          shr     eax,3
7e291aa2 6a00            push    0
7e291aa4 83e001          and     eax,1
0:000> dd eax
7e2233e1  e47e2a60 837e28ad d47e4140 dd7e2bdf
7e2233f1  c27e2e84 4d7e4140 1d7e2cf6 817e2b5f
7e223401  b97e2bdc 207e2bce 267e2ef5 147e27ce
7e223411  147e27c9 147e27c9 e17e27c9 a27e28fa
7e223421  267e2919 d97e2b40 707e28a7 687e2cff
7e223431  3f7e28b8 067e2e95 227e28b0 9e7e2d2f
7e223441  537e2b99 61007400 6b006300 6f002000
7e223451  65007600 66007200 6f006c00 00007700
0:000> dd eax-1
7e2233e0  7e2a6013 7e28ade4 7e414083 7e2bdfd4
7e2233f0  7e2e84dd 7e4140c2 7e2cf64d 7e2b5f1d
7e223400  7e2bdc81 7e2bceb9 7e2ef520 7e27ce26
7e223410  7e27c914 7e27c914 7e27c914 7e28fae1
7e223420  7e2919a2 7e2b4026 7e28a7d9 7e2cff70
7e223430  7e28b868 7e2e953f 7e28b006 7e2d2f22
7e223440  7e2b999e 00740053 00630061 0020006b
7e223450  0076006f 00720065 006c0066 0077006f
.text:7E291A4E                 mov     edi, [ebp+pDispNode] ;参数2
.text:7E291A51                 test    edi, edi
.text:7E291A53                 mov     esi, ecx
.text:7E291A55                 jz      loc_7E32D97B
;------------------------------此处略过部分------------------------------
.text:7E291A87                 mov     ecx, edi
.text:7E291A89                 call    CDispNode::SetBackground(int)
.text:7E291A8E                 mov     eax, [edi];eax = pDispNode -> vTable
.text:7E291A90                 mov     ecx, edi  ;ecx = pDispNode -> this
.text:7E291A92                 call    dword ptr [eax+30h] ; CRASH!!!!
ba e 1 7E291B73 ".printf \"CDispNode 0x%08x\n\",@eax;.echo;g"
0:014> g
ModLoad: 75bc0000 75c3d000   C:\WINDOWS\system32\jscript.dll
CDispNode 0x02739144 
CDispNode 0x027391b0 
CDispNode 0x0273b304 
CDispNode [COLOR="red"]0x0273b350 [/COLOR]
(a84.eb4): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=7e2233e1 ebx=0012d6a0 ecx=0273b350 edx=3fffffff esi=00000000 edi=[COLOR="red"]0273b350[/COLOR]
eip=147e27c9 esp=0012d654 ebp=0012d664 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206
<Unloaded_erify.dll>+0x147e27c8:
147e27c9 ??              ???

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 6
支持
分享
最新回复 (17)
雪    币: 183
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
楼主精神大大的!!!
2012-3-27 08:56
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
3
大哥 你真心误会了,这都是很老的 拾人牙慧
2012-3-27 09:18
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
4
这篇分析的不错,继续努力!!!
2012-3-27 10:25
0
雪    币: 306
活跃值: (85)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
强大啊..
2012-3-27 11:03
0
雪    币: 284
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
请问楼主一个问题,楼主是怎么在ida中识别出CLayout::EnsureDispNodeBackground的?
2012-3-27 19:47
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
7
有symbols,ida的function窗口能找到
2012-3-27 20:19
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
对于CVE是个门外汉,有几个问题想请教。
1. 漏洞都是特定的,需要特定的系统和特定的模块的版本,楼主难道准备了一大堆不同的image来测试?
2. 楼主是如何重现问题的?有了样本就可以直接crash了嘛?
3. heapspray是个什么概念?
2012-3-27 21:46
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
9
1,我都是从metasploit上直接生成poc的,因为是浏览器漏洞,所以注释掉heapspray就是crash样本,metasploit上有针对浏览器版本选项,我机器上正好IE6,所以一般就选个IE6
2,见1,有了exp样本,注释heapspray,他就是crash样本
3,堆喷射,就是用javascript大量申请堆内存,填充nop和shellcode,导致引用的无效指针有很大几率落在申请的内存里,如果落进喷射区了,就能执行到shellcode
2012-3-27 22:02
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
10
哦我明白你第一个问题的意思了,其实漏洞本身对环境要求不严格,如果你只是想crash的话,只要是补丁版本以下的通常都能分析

要成功exp,执行点神马的,那就挺严格了,这就得具体来看了

就这个漏洞而言,虽然ie6都会crash,但是不同的子版本,取出的错误虚函数不一样,有的明显超出0x80000000,那就没法利用了
2012-3-27 22:12
0
雪    币: 284
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主能不能给具体讲解一下,怎么用ida分析这个ie漏洞的,我一直没有搞清楚到底怎么使用ida分析ie漏洞问题,怎么加载symbol的?怎么用ida打开ie的?
2012-3-28 11:25
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
这里的PoC指的是什么?
2012-3-28 18:07
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
13
Proof of Concept,就是样本
2012-3-28 18:38
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
metaspolit 是个工具程序,可以生成PoC的样本,对于浏览器漏洞来说,PoC样本其实就是脚本,去掉heapspray部分,就可以crash了。大概是这个流程吧?
2012-3-29 10:00
0
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
15
可以这么说吧
2012-3-30 01:44
0
雪    币: 87
活跃值: (25)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
16
楼主好耐心,楼主有群吗 想跟楼主学习
2012-3-30 15:57
0
雪    币: 129
活跃值: (333)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xed
17
睡不着进来看看
2012-3-30 23:43
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
过来学习。感谢楼主
2012-4-1 10:39
0
游客
登录 | 注册 方可回帖
返回
//