3.ActiveX
微软的ie之所以在很多领域受到欢迎,与ActiveX技术带来的方便与实用性分不开。但ActiveX也时常会出现一些漏洞。那么在RSS之中,这个令人又爱又恨的功能,是否可以被使用呢?下面的例子里,天缘试着调用了一个媒体播放器:
<?xml version="1.0" encoding="gb2312" ?>
<rss version="2.0">
<channel>
<title>伊人有约 喜欢稀饭BBS</title>
<link>http://skylove.study-area.org/bbs/thread.php?fid=18</link>
<description>拒绝浮躁,让我们沉寂下来认真学习</description>
<copyright>Copyright(C)喜欢稀饭BBS</copyright>
<managingEditor />
<language>zh-cn</language>
<ttl>10</ttl>
<generator>喜欢稀饭BBS</generator>
<item>
<title>
<![CDATA[ [喜欢稀饭特别版]-------<<美丽心情>>-------- ]]>
</title>
<description>
<![CDATA[ 电台地址:<a href=‘http://skylove.study-area.org/ssqx/mlxq.mp3‘ target=_blank>http://skylove.study-area.org/ssqx/mlxq.mp
3</a><br/><br/><br/><br/><br/><br/><object class="OBJECT" id="MediaPlayer" width=336 height=256 classid="CLSID:22d6f312-b0f6-11d0-94
ab-0080c74c7e95" align="middle" height="256" width="314"><param value="-1" name="ShowStatusBar"><param value="http://skylove.study-a
rea.org/ssqx/mlxq.mp3" name="SRC"><embed type="application/x-oleobject" codebase="http://activex.microsoft.com/activex/controls/mpla
yer/en/nsmp2inf.cab#Version=5,1,52,701" flename="mp" src="http://skylove.study-area.org/ssqx/mlxq.mp3" width=314 height=256></embed>
<param name="AutoStart" value="1"></object><br/><br/><br/>制作剪辑:素手清弦<br/>感谢我的支持者:天缘(SKYLOVE)<br/><br/><br/><a href=‘
http://bbs.oodiy.com/UploadFile/2005-4/200542612595936.gif‘ TARGET=_blank><img src=‘http://bbs.oodiy.com/UploadFile/2005-4/200542612
595936.gif‘ border=0 alt=‘点击打开新窗口查看全图‘ onload=‘javascript:if(this.width>screen.width*0.7)this.width=screen.width*0.7‘></a
><br/><br/><br/>PS:因为设备(软件)出了点问题,导致声音效果不太好,或者有些突兀,刺耳,请原谅;<br/> ^_^
]]>
</description>
<link>http://skylove.study-area.org/bbs/read.php?tid=645</link>
<comments>http://skylove.study-area.org/bbs/read.php?tid=645</comments>
<guid>http://skylove.study-area.org/bbs/read.php?tid=645</guid>
<author>
<![CDATA[ 素手清弦 ]]>
</author>
<source url="http://skylove.study-area.org/bbs/read.php?tid=645">喜欢稀饭BBS</source>
<pubDate>Sat, 04 Jun 2005 23:41:55 +0800</pubDate>
<category>
<![CDATA[ 伊人有约 喜欢稀饭BBS ]]>
</category>
</item>
</channel>
</rss>
测试的方法同样是保存为一个xml文件,然后在RSS浏览器中打开即可。在此例中,天缘引用了一个普通的mp3节目,而如果此功能被恶意利用,那么可能被包含的就是一个有漏洞的ActiveX控件,进而导致用户的防线被撕开,埋下安全的隐患。关于利用ActiveX漏洞进行攻击的文章是很多的,各位朋友以“ActiveX”、“漏洞”作为关键字,能搜索到不少的。
4. 页面跳转
有时候,我们常常在浏览某个网页的时候,被突然转到一个无关甚至有害的站点,这真的是很令人郁闷和危险的事情呢。而在使用RSS浏览器的时候,是否也会出现同样尴尬的事情呢?
<?xml version="1.0" encoding="gb2312" ?>
<rss version="2.0">
<channel>
<title>伊人有约 喜欢稀饭BBS</title>
<link>http://skylove.study-area.org/bbs/thread.php?fid=18</link>
<description>拒绝浮躁,让我们沉寂下来认真学习</description>
<copyright>Copyright(C)喜欢稀饭BBS</copyright>
<managingEditor />
<language>zh-cn</language>
<ttl>10</ttl>
<generator>喜欢稀饭BBS</generator>
<item>
<title>
<![CDATA[ [ 测试页面跳转 ]]>
</title>
<description>
<![CDATA[ <script Language=JavaScript>window.location="http://skylove.study-area.org/bbs/";</script> ]]>
</description>
<link>http://skylove.study-area.org/bbs/read.php?tid=645</link>
<comments>http://skylove.study-area.org/bbs/read.php?tid=645</comments>
<guid>http://skylove.study-area.org/bbs/read.php?tid=645</guid>
<author>
<![CDATA[ skylove ]]>
</author>
<source url="http://skylove.study-area.org/bbs/read.php?tid=645">喜欢稀饭BBS</source>
<pubDate>Sat, 04 Jun 2005 23:41:55 +0800</pubDate>
<category>
<![CDATA[ 伊人有约 喜欢稀饭BBS ]]>
</category>
</item>
</channel>
</rss>
当天缘将此脚本在GreatNews中进行测试的时候,毫无预警地,页面被跳转到了 http://skylove.study-area.org/bbs/ 上面。由此可见,页面跳转的安全隐患问题依旧是存在着的。
5. 服务器端的跨站脚本
RSS不光是给最终的浏览用户带来危险,在RSS的最大卖点之一“聚合”方面,写得不够严谨的代码甚至会导致聚合服务器的安全隐患。
以著名的共享开源软件lilina为例,在其PHP代码中进行include某页面操作的时候,用require_once(‘页面url’) 的方式进行引用。而问题就在于,如果在被聚合的多个rss源中,有一个恶意的站点,利用<?与?>标记进行php代码编写,那么当在聚合过程中,该rss的php代码部分事实上是在聚合服务器上被执行了。简单地来说,比如a站点的rss文件中有<?echo ‘skylove’;?>这样一行文字,那么b服务器如果对a站的这则rss进行聚合引用,而且b服务器恰好是使用php程序进行聚合,那么上面的那句代码,事实上就会在b服务器上被执行。此漏洞我是在车东先生的blog上了解到的,url是http://www.chedong.com/blog/archives/001047.html#more 。关于对此等可能包含有程序代码的rss文件的包含,php 4.3版本以后可以采用file_get_contents 函数来完成,详细可见http://cn.php.net/manual/zh/ref.stream.php 有详尽的解释和用法示例。
行文至此,大抵也是到了结束的时候。文章不长,对于如何进行恶意操作的细节更是未提及,或许有些意犹未尽?但相信有心的朋友已经可以从此文中了解到RSS目前存在的一些漏洞以及如何利用它们了,事实上比在web页上包含恶意代码更简单,因为根本没有进行必要的安全检查。而且目前的RSS浏览器大多内嵌了网页浏览的功能,却没做在浏览网页的时候进行代码安全检查的功能。因此事实上用RSS浏览器跳转到网页后比用ie直接浏览更为危险,因为连必要的基本安全检查也没有了。至于当前的解决办法呢——暂时没有太好的,因为目前的RSS浏览器中暂时没看到有限制js代码执行与ActiveX控件执行的功能。就目前而言,如果需要保证RSS浏览的安全性,天缘个人推荐试着使用Maxthon 浏览器附带的RSS阅读功能,至少在被跳转到恶意站点的时候,还有Maxthon本身可以进行网页的安全过滤。
此文写作的目的,是希望此文可以对RSS的浏览器作者在添加功能的时候有所帮助,同时也能使国内的杀毒厂商意识到RSS浏览器安全方面存在的一些问题,除了在web网页需要实时监控恶意代码外,RSS浏览器的实时监控或许也是不该放过的。目前就国内而言,利用到以上RSS漏洞的恶意站点并不多,这也同RSS 浏览方式在国内的普及和认同有关。但RSS浏览这一块存在重大的安全隐患,是很值得重视的。目前RSS 3.0的标准已基本制定完成(http://www.rss3.org/main.html),新设计的3.0中又新增了许多元素特性,不知道是“技术为人所用,还是人为技术所惑”呢。值得一提的是一位资深hacker Aaron Swartz(其主页在http://www.aaronsw.com/)在自行设计的rss 3.0标准中(http://www.aaronsw.com/2002/rss30),有提出返朴归真的想法,用类似ini文件的格式来表达元素,完全鄙弃html代码解释只用纯文本包含内容。回想起从最早的纯文字邮件,到后来的多媒体邮件——我们真的回的去么?不管如何,希望RSS这一良好的信息表达方式能更好地为大众造福。
文章的最后,由于此文的特殊性,天缘不得不做个免责声明:由于此文中的代码稍加修改即可能造成实际测试时候被转向恶意站点,望慎重~ 作者: 天缘