XSS定义 跨站脚本攻击(Cross-site scripting,通常简称为XSS,因为和层叠样式表的扩展名CSS重名了,故取名为XSS)。通常指的是利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。简单的说,SQL注入是将用户输入的数据当作SQL语句,放到数据库中去执行,而XSS是将用户输入的数据当作HTML或者JavaScript脚本,放到页面上去执行。实际上,“跨站脚本攻击”这个名字本身也另有来历,仅仅是因为当时第一次演示这个漏洞的黑客是通过“跨站”的方式植入脚本进行攻击的。 由于现代浏览器的“同源策略”已经让运行在浏览器中的javascript代码很难对外站进行访问了, 所以这个漏洞的名称可能存在一定的误导性,让很多初学者看了很多次都不能理解这个漏洞的原理。
XSS原理 XSS攻击主要是依靠一切可能的手段,将浏览器中可以执行的脚本(javascript)植入到页面代码中,从而对用户客户端实施攻击;从本质上讲,就是想尽一切手段在别人的代码环境中执行自己的代码。那么这里就有两个关键的条件:如何把代码植入到对方的系统中去?也就是说用户要能在页面控制输入;植入进去的代码能不能被对方的系统执行?也就是说原本要执行的代码拼接了用户输入的数据。
XSS危害 什么是恶意脚本 实际上,能在受害者的浏览器中运行的JavaScript并不是都是有害的,因为JavaScript是在一个严格受限的环境中运行的(对用户文件和操作系统有严格的访问限制),然而当我们考虑如下几个方面时,我们就会对恶意脚本有一个清晰的认识。JavaScript可以访问一些用户的敏感信息,比如cookies。JavaScript可以通过XMLHttpRequest和其他的一些机制向任意终端发送包含任意内容的HTTP请求。JavaScript可以通过DOM操作方法任意修改当前页面的HTML内容。如果把上面这几点集合起来,那可以造成很严重的安全攻击了。 XSS危害 那么如果攻击者拥有了可以执行任意JavaScript脚本的能力后,究竟会有哪些危害呢?盗取Cookie:攻击者可以通过document.cookie获取与网站相关的Cookie信息。并且可以把Cookie信息发回攻击者自己的服务器,然后分析出敏感信息,比如session id。记录按键信息:攻击者可以通过addEventListener注册键盘侦听事件,然后把用户所有的按键信息发回他自己的服务器。这就有可能会记录下密码、信用卡号等敏感信息。钓鱼:攻击者可以通过DOM操作在页面中插入一个伪造的登陆表单,并把form元素的action属性指向他自己的服务器,诱使用户提交敏感信息。篡改页面:攻击者可以通过DOM操作方法直接篡改页面内容控制数据:包括读取、篡改、添加、删除企业敏感数据的能力将XSS配合SQL、CSRF等漏洞,控制受害者机器向其它网站发起攻击
总的来说,就是攻击者利用XSS攻击成功后,攻击者可能得到(包括但不限于)更高的权限,那么攻击者就可以使用这些权限做任何他想做的事。
|