1、第四章第四章 跨站脚本的利用与防御跨站脚本的利用与防御21 1、简介、简介 vXSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。3 1.1 1.1 什么是什么是XSSXSS攻击攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制例如同源策略(same orig
2、in policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。在2007年OWASP所统计的所有安全威胁中,跨站脚本攻击占到了22%,高居所有Web威胁之首。XSS攻击的危害包括l1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号l2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力l3、盗窃企业重要的具有商业价值的资料l4、非法转账l5、强制发送电子邮件l6、网站挂马l7、控制受害者机器向其
3、它网站发起攻击2022-8-41.1.2 2 XSS XSS漏洞的分类漏洞的分类XSS漏洞按照攻击利用手法的不同,有以下三种类型:l类型A,本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。l类型B,反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。l类型C,存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员
4、。2 2 利用方式利用方式 (1 1)本地利用漏洞)本地利用漏洞(2 2)反射式漏洞)反射式漏洞(3 3)存储式漏洞)存储式漏洞2022-8-4(1 1)本地利用漏洞)本地利用漏洞 类型A,本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。其攻击过程如下所示:lAlice给Bob发送一个恶意构造了Web的URL。lBob点击并查看了这个URL。l恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。l具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。lAlice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。2022-8-
5、4(2 2)反射式)反射式漏洞漏洞u这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。过程如下:lAlice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。lCharly发现Bob的站点包含反射性的XSS漏洞。lCharly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。lAlice在登录到Bob的站点后,浏览Charly提供的URL。l嵌入到URL中的恶
6、意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。2022-8-4(3 3)存储式漏洞存储式漏洞u类型C,存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。其攻击过程如下:lBob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。lCharly注意到Bob的站点具有类型C的XSS漏洞。lCharly发布一
7、个热点信息,吸引其它用户纷纷阅读。lBob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。l类型A直接威胁用户个体,而类型B和类型C所威胁的对象都是企业级Web应用。2022-8-43 3 防御原理防御原理 (1 1)基于特征的防御)基于特征的防御l XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同。这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS攻击。l 传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方
8、法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。这种检测方法的缺陷显而易见:骇客可以通过插入字符或完全编码的方式躲避检测。2022-8-4躲避方法躲避方法1)1)在在javascriptjavascript中加入多个中加入多个tabtab键,得到键,得到;躲避方法躲避方法2)2)在在javascriptjavascript中加入中加入(空格空格)字符,得到字符,得到;躲避方法躲避方法3)3)在在javascriptjavascript中加入中加入(回车回车)字符,得到字符,得到 IMG SRC=javascrip;t
9、:alert(XSS);躲避方法躲避方法4)4)在在javascriptjavascript中的每个字符间加入回车换行符,得到中的每个字符间加入回车换行符,得到躲避方法躲避方法5)5)对对javascript:alert(XSS)javascript:alert(XSS)采用完全编码,得到采用完全编码,得到上述方法都可以很容易的躲避基于特征的检测。而除了会上述方法都可以很容易的躲避基于特征的检测。而除了会有大量的漏报外,基于特征的还存在大量的误报可能:有大量的漏报外,基于特征的还存在大量的误报可能:在上面的例子中,对上述某网站这样一个地址,由于在上面的例子中,对上述某网站这样一个地址,由于包含
10、了关键字包含了关键字“javascript”“javascript”,也将会触发报警。,也将会触发报警。2022-8-4(2 2)基于代码修改的防御基于代码修改的防御l步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。l步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。l步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内
11、容的引用(尤其是样式表和javascript),使用HTTP only的cookie。l当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。2022-8-44 4、实例实例分析分析-案例案例1 1 在输入框中输入”JACK”后,单击”Submit”按钮。验证该网站存在XSS漏洞。2022-8-4在输入框中输入:alert(document.cookie)单击”Submit”按钮。2022-8-4弹出包含该网站的Cookie值的窗口,通过抓包软件可以利用这个Cookie值登陆网站。2022-8-44 4、实例实例分析分析-案例案例2 2 在输入框中输入:alert(“XSS”)2022-8-4弹出”XSS”窗口,可以断定此处存在XSS漏洞2022-8-4弹出”XSS”窗口,可以断定此处存在XSS漏洞2022-8-4刷新这个页面将会弹出用户的Cookie值。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。