Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376652
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2469
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-16 23:51
个人简介

活泼开朗是我的特性。

文章分类
文章存档

2014年(27)

2013年(46)

分类: 网络与安全

2013-07-18 09:55:39

关于阿里巴巴支付宝控件漏洞,网络上还存在争议。有的说漏洞存在,有的说不存在,搞得我也不知道该信谁了。不过没有调查就没有发言权,还是让我们自己去找问题的答案吧。
    我们先来看看关于漏洞的说明:在支付宝密码输入控件中存在一个远程代码执行漏洞,攻击者可利用此漏洞在被攻击者系统上执行任意代码,进而可安装木马以及间谍程序,窃取相关敏感信息,比如淘宝账号与密码,或者支付宝账号与密码。此漏洞存在于由ActiveX控件pta.dll导出的Remove()函数中,相关信息如下。
 
    InprocServer32: pta.dll
    ClassID      : 66F50F46-70A0-4A05-BD5E-FBCC0F9641EC
    [id(0x60030001), helpstring("method Remove")]
    void Remove([in] int idx);
 
我们还是直接看Remove()函数的处理流程,代码如下。
 
view plainprint?

        .text:10003D4E ; Remove  
        .text:10003D4E  
    .text:10003D4E sub_10003D4E   proc near  
    ; DATA XREF: .rdata:1000B3A4o  
        .text:10003D4E   ; .rdata:1000B41Co ...  
        .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函数,而不是在按下按钮之后。我们只需删掉“
阅读(2557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~