关于ani 0day的简单分析

By ph4nt0m. Friday, 30. March 2007, 08:30:40
by axis
2007-03-28

本来没精力跟这个漏洞了,但是今天听swan在irc里说网上的exp利用方式不够好,只覆盖了2个字节,于是下午利用了一点空闲时间跟了一下。

在我的xp sp2 cn上,全补丁,漏洞发生在以下地方


77D53A5A    8BFF            MOV EDI,EDI
77D53A5C    55              PUSH EBP
77D53A5D    8BEC            MOV EBP,ESP
77D53A5F    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
77D53A62    8B55 10         MOV EDX,DWORD PTR SS:[EBP+10]                     ; 可以控制的长度
77D53A65    56              PUSH ESI
77D53A66    8B70 04         MOV ESI,DWORD PTR DS:[EAX+4]
77D53A69    8D0C16          LEA ECX,DWORD PTR DS:[ESI+EDX]
77D53A6C    3BCE            CMP ECX,ESI
77D53A6E    72 28           JB SHORT USER32.77D53A98
77D53A70    3BCA            CMP ECX,EDX
77D53A72    72 24           JB SHORT USER32.77D53A98
77D53A74    3B48 08         CMP ECX,DWORD PTR DS:[EAX+8]
77D53A77    77 1F           JA SHORT USER32.77D53A98
77D53A79    53              PUSH EBX
77D53A7A    57              PUSH EDI
77D53A7B    8B7D 0C         MOV EDI,DWORD PTR SS:[EBP+C]                      ; 目标buf [ebp+3c]
77D53A7E    8BCA            MOV ECX,EDX                                       ; 控制长度
77D53A80    8BD9            MOV EBX,ECX
77D53A82    C1E9 02         SHR ECX,2
77D53A85    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]    ; 覆盖


拷贝发生在user32.dll中,注意这里

77D53A7B    8B7D 0C         MOV EDI,DWORD PTR SS:[EBP+C]                      ; 目标buf [ebp+3c]
77D53A7E    8BCA            MOV ECX,EDX                                       ; 控制长度
77D53A80    8BD9            MOV EBX,ECX
77D53A82    C1E9 02         SHR ECX,2
77D53A85    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]    ; 覆盖


edx控制我们拷贝的长度.
edx由ani文件的0x54偏移处传入,但是由于后面有一些判断,所以要触发这个拷贝,edx不能太大。

在我的xp sp2 cn all hotfix上,edx = 0x50 正好覆盖了上层函数的ebp


由于是从[ebp+3c]开始覆盖的,所以无法在当前函数返回时控制,我们可以选择覆盖上层函数的返回地址。


由于公开的exp中只覆盖了user32.dll中的两个字节地址,这个不是很通用,所以swan会有前面那段话。


事实上,可以覆盖掉整个ebp,ebp+4,控制eip。

从codepage去找个中文的通用地址是很简单的。


而且这个dll没有/gs保护,所以利用起来很简单。


不同的平台,比如2000/2003上需要覆盖的字节可能不同。


但是这个漏洞的好处是不会让ie崩溃,除非你一直覆盖到了seh,让seh崩溃。


所以我们可以插入多张图片,针对多个地址,达到非常通用,全平台通杀的效果。


要查杀这个也很简单,各大AV只需要判断这个传入edx的长度是否超过了限制就可以了。
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值