实例:详解跨站脚本攻击的攻与防
如果服务器对客户的输入不进行有效验证,黑客就会输入一些恶意的HTML代码,当这些HTML代码输入是用于脚本程序时,黑客就能利用它来进行破坏……
【IT专家网独家】很多时候当人们谈到黑客,总会想到无所不能,潜入目标电脑,无所顾及的窃取和破坏数据。如今暴力破坏或炫耀技术已经不再是黑客最乐于尝试的活动,黑客,不应该准确的是网络犯罪分子更乐意去借助黑客技术,获取经济上的利益。例如,攻击访问网站的客户,记录用户信息,我们的服务器也成了他的帮凶。如今有一种攻击大多数都发生在网站动态产生网页的时侯,但黑客的目标并不是你的网站,而是浏览网站的客户,微软称这种攻击为"跨站脚本攻击"。
认识跨站脚本攻击
CERT曾警告:如果服务器对客户的输入不进行有效验证,黑客就会输入一些恶意的HTML代码,当这些HTML代码输入是用于脚本程序时,黑客就能利用它来进行破坏,如插入一些图片或声音等,同时可以干扰客户正确浏览网页。去年十分流行的流氓软件,以及广告弹出窗口,使得无数用户对恶意软件开始有了基本认识。恶意的标签和脚本不是单纯的恶作剧,他们甚至可以窃取资料和破坏系统。攻击者可以利用脚本干扰或改变服务器数据的输入,同时也可以攻击客户系统。而且你要知道,在你一边使用服务器的时候,黑客的脚本程序也正在你服务器里安全的地方运行着。如果客户对你的服务器非常信认,同样他们也会信任那些恶意的SCRIPT代码。甚至这个代码是来自黑客的服务器的<CRIPT>或者<OBJECT>的形式。即使使用了防火墙也不能完全防止跨站脚本攻击,这是由于如果生成恶意SCRIPT代码的设备也使用了SSL,我们服务器的SSL是不能辨别出这些代码来的。如何防御呢?让我们来通过案例来分析。
跨站脚本攻击示例:
根据CERT的资料,动态输入大致有这几种形式:URL参数,表格元素,COOKISE以及数据请求。让我们来分析一下只有两个页面的测试站点。
第一页使用一张表格或COOKIE来获取用户名:
<%@ Language=VBScript %> <% If Request.Cookies("userName") <> "" Then Dim strRedirectUrl strRedirectUrl = "page2.asp?userName=" strRedirectUrl = strRedirectUrl & Response.Cookies("userName") Response.Redirect(strRedirectUrl) Else %> <HTML> <HEAD> <TITLE>MyNiceSite.com Home Page</TITLE> </HEAD> <BODY> <H2>MyNiceSite.com</H2> <FORM method="post" action="page2.asp"> Enter your MyNiceSite.com username: <INPUT type="text" name="userName"> <INPUT type="submit" name="submit" value="submit"> </FORM> </BODY> </HTML> <% End If %> 第二页返回用户名以示欢迎:
当你正常常输入文字时,一切都很正常。如果你输入Script代码:
JavaScript警告标签就会弹出来,在你下一次访问时,这个警示标签同样会出现。为什么会这样?这主要是因为这个Script代码在你第一次访问的时后就已经留在cookie中。这是一个简单的跨站攻击的范例。 如果你认为这是一个特殊情况,你也不妨到网上别的地方看看,亲自试一下。笔者曾测试过很多许多专业网站,其中有微软、电力系统等大型国有企业,或多或少都存在这样的跨站漏洞,很难想象如此大型的机构都存在众多的过滤疏漏,那其他小网站就更危机重重。 用E-Mail进行跨站脚本攻击 在列表服务器或邮件服务器中进行跨站脚本攻击是十分容易的。由于你经常浏览某个网站,你就会对这个站点产生一定的忠诚度,因此在不知不觉中你就把浏览器的改成了总是信任这个动态网站内容的设置。有许多网站会提供注册数或广告点击来获得收入,于是很多用户会在电子邮件中鼓动用户尽快访问某个网站,甚至邮件中直接存有地址链接,假如这个链接的URL中的username参数中舔加script代码。有些客户就会在不知不 |
- 戴尔推出中小企业服务器R300与T300(02-22)
- 蓝色基因GL-1120服务器突破1U服务器性价比极限(02-23)
- 64位线程!SUN 富士通扩展SPARC产品线(03-13)
- 处理器主频超5GHz IBM新推高端P595服务器(03-10)
- MemoRight推GT系列128G高速SSD(03-24)
- 日本推出手持式极端环境Linux服务器(03-25)