关于阿里巴巴支付宝控件漏洞,网络上还存在争议。有的说漏洞存在,有的说不存在,搞得我也不知道该信谁了。不过没有调查就没有发言权,还是让我们自己去找问题的答案吧。
我们先来看看关于漏洞的说明:在支付宝密码输入控件中存在一个远程代码执行漏洞,攻击者可利用此漏洞在被攻击者系统上执行任意代码,进而可安装木马以及间谍程序,窃取相关敏感信息,比如淘宝账号与密码,或者支付宝账号与密码。此漏洞存在于由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] [2] [3] 下一页