前言
上1篇文章写了关于 WEB 安全方面的实战,主要是解决 SQL 盲注的安全漏洞。这篇文章本来是要写1篇关于如何防治 XSS 攻击的,但是想来想去,还是决定先从理论上认识1下 XSS 吧。下1篇文章,再深入研究如何防治的问题。
概念
到底甚么是 XSS 攻击呢?XSS 攻击,全称是“跨站点脚本攻击”(Cross Site Scripting),之所以缩写为 XSS,主要是为了和“层叠样式表”(Cascading Style Sheets,CSS)区分开,以避免混淆。
XSS 是1种常常出现在web利用中的计算机安全漏洞,它允许歹意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。对跨站脚本攻击,黑客界共鸣是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
XSS 是针对特殊 Web 站点的客户隐私的攻击,当客户详细信息失窃或受控时可能引发完全的安全要挟。大部份网站攻击只触及两个群体:黑客和 Web 站点,或黑客和客户端受害者。与那些攻击不同的是,XSS 攻击同时触及3个群体:黑客、客户端和 Web 站点。XSS
攻击的目的是盗走客户端 cookies,或任何可以用于在 Web 站点肯定客户身份的其他敏感信息。手边有了合法用户的标记,黑客可以继续扮演用户与站点交互,从而冒充用户。
举例来讲,在对1个大型公司的调查中表明,利用 XSS 攻击窥视用户的信誉卡号码和私有信息是可能的。这是通过利用 Web 站点的访问特权,在受害者(客户端)阅读器上运行歹意的 JavaScript 代码来实现的。这些是非常有限的 JavaScript 特权,除与站点相干的信息,1般不允许脚本访问其他任何内容。重点强调的是,虽然
Web 站点上存在安全漏洞,但是 Web 站点从未遭到直接伤害。但是这已足够让脚本搜集 cookies,并且将它们发送给黑客。
分析
如果某个怀有歹意的人(攻击者)可以逼迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那末便会产生跨站点脚本攻击。“跨站点脚本”这个词应当属于用词不当的情况,由于它不但与脚本有关,而且它乃至不1定是跨站点的。所以,它就是1个在发现这类攻击时起的1个名字,并且1直沿用至今。从现在开始,我们将使用它常见的缩写名称“XSS”。
XSS 攻击的进程触及以下3者:
- 攻击者
- 受害者
- 存在漏洞的网站(攻击者可使用它对受害者采取行动)
在这3方当中,只有受害者会实际运行攻击者的代码。网站仅仅是发起攻击的1个载体,1般不会遭到影响。可以用多种方式发起 XSS 攻击。例如,攻击者可通过电子邮件、IM 或其他途径向受害者发送1个经过经心构造的歹意 URL。当受害者在 Web 阅读器中打开该 URL 的时侯,网站会显示1个页面并在受害者的计算机上履行脚本。
那末,XSS 漏洞是甚么样的呢?
作为1名 Web 开发人员或测试人员,您肯定知道 Web 利用程序的技术基础是由 HTTP 和 HTML 组成的。HTTP 协议是 HTML 的传输机制,可以使用代码设计 Web 页面布局和生成页面。
如果 Web 利用程序接受用户通过 HTTP 要求(如 GET 或 POST)提交的输入信息,然后使用输出 HTML 代码在某些地方显示这些信息,即可能存在 XSS 漏洞。下面是1个最简单的例子:
1. Web 要求以下所示:
GET http://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title
2. 在发出要求后,http://www.wfuyu.com/server/返回的 HTML 内容包括:
<h1>Section Title</h1>
可以看到,传递给“title”查询字符串参数的用户输入可能被保存在1个字符串变量中并且由 Web 利用程序插入到 <h1> 标记中。通过提供输入内容,攻击者可以控制 HTML。
3. 现在,如果站点没有在http://www.wfuyu.com/server/端对用户输入加以过滤(由于总是可以绕过客户端控件),那末歹意用户即可以使用许多手段对此漏洞加以滥用:
攻击者可以通过摆脱 <h1> 标记来注入代码:
<scrīpt>alert(‘XSS%20attack’)</scrīpt">http://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title</h1><scrīpt>alert(‘XSS%20attack’)</scrīpt>
这个要求的 HTML 输出将为:
<h1>Section Title</h1><scrīpt>alert(‘XSS attack’)</scrīpt>
即使是这个最简单的例子,攻击者也能够利用此连接完成数不清的事情。
结束语
看完这篇文章,相信你已了解了甚么是 XSS 攻击,而这样的攻击在我们的生活中也不是没有遇到过,不知道你发现没有,偶尔我们的邮箱中就会有1些不明的 URL,而这些 URL 很有可能就是假装好的攻击脚本,固然,我们要有自我保护的意识,不要轻易的点击这些链接之类的东东。不过,最重要的还是要知道他们攻击的原理,了解了原理,避免这些漏洞就不远了。