“伤寒”是一种传染性极强的疾病,有接触就有可能感染。Web应用系统由于采用标准的协议,如果Web服务器被挂马,当访问者访问服务器时就如同接触到了伤寒病患者一样会被感染并且自身会被信息窃取、数据破坏:

经常上网的朋友会发现,有时候有些链接点击进去后,防病毒软件会报警,提示有病毒/木马存在。某银行科技处处长Y女士,正在为这样的一起客户投诉头疼不已:某网银用户接到一封网银活动通知邮件,点击后居然发现被防病毒软件报出存在木马。

在经过Y女士一番道歉后,客户的怒气似乎消退了一些,并表示可以把那封“肇事”邮件转发给Y女士。这封邮件内容是银行这段时间正在搞的一个小调查活动,点击“参加活动”按钮后,防病毒软件马上发出报警。经专业安全公司专家分析后得知,这是一封伪造的活动邮件,骇客伪造了“参加活动”按钮后的URL链接,用户点击后,虽然会进入活动页面,但同时也会被链接到一个恶意站点下载木马,这就是防病毒软件报警的原因。而能造成这种现象的原因是:该银行的网站页面编码存在缺陷。考虑到银行的业务连续性要求,Y女士按照安全专家的建议购买了安全防护产品,并迅速部署上线,用以屏蔽此类攻击行为。

为什么网页链接会导致木马病毒植入呢?这有如下几种可能:

a)网站所有者故意在页面嵌入恶意代码:常见于私人小站。为了牟取私利,有些站长故意在网站页面中嵌入恶意代码,以窃取访问者的信息。一般来说,企业用户不会存在这种情况。

b)骇客攻击网站获取权限后,在正常页面中添加恶意代码,这也就是常提到的XSS(跨站脚本)攻击※。

※详解:XSS(跨站脚本)攻击

XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。跨站脚本漏洞主要是由于没有对所有用户的输入进行有效的验证所造成的,它影响所有的Web应用程序框架。

在实际表现中,XSS攻击会有两种常见的形态,存储式攻击和反射式攻击。

存储式XSS:最常见的类型,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。其攻击过程如下:

Bob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。

Charly注意到Bob的站点具有XXS漏洞。

Charly发布一个热点信息,吸引其它用户纷纷阅读。

Bob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。

反射式XSS:Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。其攻击过程如下:

Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。

Charly发现Bob的站点包含反射性的XSS漏洞。

Charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。

Alice在登录到Bob的站点后,浏览Charly提供的URL。

嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。

上面的例子中,Y女士所遭遇到的就是这种反射式的XSS攻击。

如何判断自己已经遭受XSS攻击呢?和其他常见攻击行为一样,XSS攻击在网上也有许多免费工具,利用这些软件的骇客很有可能并不知道该如何清理自己留下的系统日志,从对日志的分析中可以很容易的看到是否有XSS攻击行为发生。还有一种更直接的方法就是检查页面源代码,看是否有不相干URL等字符串出现,如某页面源文件中存在与页面功能无关的代码,就很有可能是发生了XSS攻击。

由于XSS攻击的直接受害者往往并不是网站所有者,而是访问受攻击网站的普通用户,所以,经常会出现普通用户发现网站已经被骇客攻击,而网站的管理人员仍一无所知的情况。对于一些依靠网站开展业务的机构来说(如金融机构等),做好前期网站的检查服务※,是一项非常重要的工作。

※详解:网站的检查服务

一般来说,XSS攻击的后果很难直接发现,比如上面案例中如果骇客加入的攻击字符串不是网页木马,而是窃取cookie信息的话,用户在遭受攻击时将会完全没有表现症状,这种威胁将更加的危险。

一种常用的方法是,购买专业安全公司的网页挂马监测服务,定期检查网站页面是否含有恶意代码。

XSS攻击发生后,该如何应对呢?首先当然是检查被攻击页面,清除恶意代码,然后再考虑以后的防御,和大部分的Web威胁行为一样,XSS攻击发生原因是由于页面文件编写的不完备,也可以通过部署独立安全产品或代码级的页面文件修改来避免。但考虑到代码修改的复杂性和局限性,对于XSS防御来说也不是最佳选择。而应当选择部署那些胜任应用层威胁防护的安全产品(在前文已提到如何选择,在此不再赘述),在XSS防御的实际应用中,入侵防御产品也有非常广泛的运用。

被挂马的网站就像伤寒症患者,如果不小心发生接触(点击链接),就有染病(被种上木马)的可能。中医认为,伤寒六经病的总治疗原则是祛除外邪,扶助正气。所以被挂马网站的解决之道也应如此:驱除外邪(清理被挂马页面),扶助正气(以增加安全设备/代码评估服务/代码修补等行为来提升网站的内在防御力)。