分享
 
 
 

IEIFRAM漏洞的简单分析和临时补丁

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1. 漏洞的由来

bugtraq上有人发布了一个针对IE iframe的exploit, 用的方法非常巧妙,针对2K IE6能做到基本通用了. 牛人就是牛人.

2. 漏洞的分析.

IE 在处理iframe 标签的时候,会调用SHDOCVW!CBaseBrowser2::SetFrameName函数来进行unicode copy(wcscpy):

.text:71754F67 ; public: virtual long __stdcall CBaseBrowser2::SetFrameName(unsigned short *)

.text:71754F67 ?SetFrameName@CBaseBrowser2@@UAGJPAG@Z proc near ; DATA XREF: .text:717233B8o

.text:71754F67

; .text:71739900o

.text:71754F67

.text:71754F67 arg_0

= dword ptr

4

.text:71754F67 arg_4

= dword ptr

8

.text:71754F67

.text:71754F67

mov

eax, [esp+arg_0]

.text:71754F6B

push

[esp+arg_4]

; wchar_t *

.text:71754F6F

add

eax, 368h

.text:71754F74

push

eax

; wchar_t *

.text:71754F75

call

ds:__imp__wcscpy

.text:71754F7B

pop

ecx

.text:71754F7C

pop

ecx

.text:71754F7D

xor

eax, eax

.text:71754F7F

retn

8

.text:71754F7F ?SetFrameName@CBaseBrowser2@@UAGJPAG@Z endp

在拷贝iframe的name时候,没有进行边界检查,导致了溢出.

3. 能覆盖的东西

这里没有进行深入研究,大部分引用exp的原文.

这个exp覆盖了一个结构,什么结构目前未知, 按照作者的说法,是在

7178EC02

8B08

MOV

ECX, DWORD PTR [EAX]

//[0x0D0D0D0D] == 0x0D0D0D0D, so ecx = 0x0D0D0D0D.

7178EC04

68 847B7071

PUSH

71707B84

7178EC09

50

PUSH

EAX

7178EC0A

FF11

CALL

NEAR DWORD PTR [ECX]

这里的时候,因为其中的一个指针被覆盖,最后当程序运行到

7178EC0A 的时候,会跳转到ecx.而ecx是一个受控制的区域.(其实

是通过暴力扩大内存区域,使0d0d0d0d总能指向我们的javascript请求的内存块) 这个从他的exp上能很好的看出来,这里就不多说了.

4. 补丁.

目前microsoft官方还没有发布补丁, 但是未了避免遭受毒害, 我还是想简单的patch一下. 思想是用msvcrt!wcsncpy来代替wcscpy.

因为要保证字节一至,就没有严格做到程序的输入/返回一样.

下面是做的简单补丁:

text:71754F67 sub_71754F67

proc near

; DATA XREF: .text:717233B8o

.text:71754F67

; .text:71739900o

.text:71754F67

.text:71754F67 arg_0

= dword ptr

4

.text:71754F67

.text:71754F67

mov

eax, [esp+arg_0]

.text:71754F6B

push

20h

.text:71754F6D

push

esi

.text:71754F6E

add

eax, 368h

.text:71754F73

push

eax

.text:71754F74

mov

eax, 780104FCh

.text:71754F79

call

eax

.text:71754F7B

pop

ecx

.text:71754F7C

pop

ecx

.text:71754F7D

pop

eax

.text:71754F7E

nop

.text:71754F7F

retn

8

.text:71754F7F sub_71754F67

endp

因为在前面调用的时候就是push esi来做arg 2的,所以这里直接用push esi 节省了几个字节的指令. 后面本来是要返回0的,但

因为call 一个8字节的地址在6字节内没有解决(不知道大家有没有好方法?) 所以只好牺牲eax了, 其实调用返回后eax本身也没用.

[root@DUMPLOGIN C:\WINNT\system32\dllcache]#fc /b shdocvw.dll shdocvw.dll.org

正在比较文件 shdocvw.dll 和 SHDOCVW.DLL.ORG

0005436B: 6A FF

0005436C: 20 74

0005436D: 56 24

0005436E: 05 08

0005436F: 68 05

00054370: 03 68

00054371: 00 03

00054373: 50 00

00054374: B8 50

00054375: FC FF

00054376: 04 15

00054377: 01 6C

00054378: 78 12

00054379: FF 70

0005437A: D0 71

0005437D: 58 33

0005437E: 90 C0

5. 使用.

patch补丁后, 用zap 删除掉shdocvw.dll,然后将这个copy过去,打开IE, 再来浏览exploit页,发现已经攻击无效了.

6. 郁闷:

很奇怪的是,在explorer中加载我修改后的shdocvw.dll和IE中加载的不一样,

具体在:

explorer中:

0:015 uf SHDOCVW!CBaseBrowser2::SetFrameName

SHDOCVW!CBaseBrowser2::SetFrameName:

00dd4f67 8b442404

mov

eax,[esp+0x4]

00dd4f6b 6a20

push

0x20

00dd4f6d 56

push

esi

00dd4f6e 0568030000

add

eax,0x368

00dd4f73 50

push

eax

00dd4f74 b8fc040178

mov

eax,0x780104fc

00dd4f79 6760

pushad

00dd4f7b 59

pop

ecx

00dd4f7c 59

pop

ecx

00dd4f7d 58

pop

eax

00dd4f7e 90

nop

00dd4f7f c20800

ret

0x8

IE中:

SHDOCVW!CBaseBrowser2::SetFrameName:

71754f67 8b442404

mov

eax,[esp+0x4]

71754f6b 6a20

push

0x20

71754f6d 56

push

esi

71754f6e 0568030000

add

eax,0x368

71754f73 50

push

eax

71754f74 b8fc040178

mov

eax,0x780104fc

71754f79 ffd0

call

eax

71754f7b 59

pop

ecx

71754f7c 59

pop

ecx

71754f7d 58

pop

eax

71754f7e 90

nop

71754f7f c20800

ret

0x8

注意到了吗?

00dd4f79 6760

pushad

vs

71754f79 ffd0

call

eax

这里没有深入研究, 不知道为什么会出现这种情况.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有