您的当前位置:首页正文

基于DOM型XSS漏洞攻击与防范技术研究

2021-02-28 来源:尚佳旅游分享网
龙源期刊网 http://www.qikan.com.cn

基于DOM型XSS漏洞攻击与防范技术研究

作者:谢品章

来源:《电脑知识与技术》2017年第20期

摘要:DOM(文档对象模型)型XSS(跨站攻击)漏洞是XSS漏洞的其中一种类型。在Web应用程序中这种漏洞出现的场景、攻击方式和危害程度都可能不同,为有效防范WEB应用程序被基于DOM型XSS漏洞攻击,提高WEB应用程序的安全性,文章对利用该漏洞实施攻击的步骤,以及攻击的技巧进行了分析,并在此基础上提出检测DOM型XSS漏洞的方法和防范措施。

关键词:XSS漏洞;攻击方法;防范措施;漏洞利用;WEB安全

迄今为止,互联网的应用已经影响到人们生活的方方面面,其中基于WEB的应用是当今最为广泛的互联网应用之一,然而,WEB的安全问题一直威胁人们正常使用互联网。XSS漏洞是WEB应用程序中比较常见的漏洞之一,利用XSS漏洞对WEB应用程序实施攻击很容易,很广泛,也很难发现和预防,XSS漏洞已经被人们视为WEB应用程序面临的最主要的安全威胁之一。XSS有三种类型,文章主要是分析基于DOM型XSS漏洞攻击与防范技术。 1基于DoM型XSS漏洞攻击的步骤

利用基于DOM型XSS漏洞攻击就是攻击者事先构造含有恶意脚本代码的链接,设法让用户点击,用户一旦点击这些链接之后,恶意脚本就在用户的浏览器运行,如果用户的浏览器端没有设置任何的防范措施,那么攻击者就可以轻而易举地窃取用户的隐私信息,如COOKIE等。具体攻击实施步骤如下图1。

①被攻击用户在登陆WEB应用程序时,输入的用户名,密码等就被保存在cookie中。 ②攻击者将精心构造的含有恶意脚本的链接发给用户。

③被攻击者在没有任何防范措施的情况下点击了这些含有恶意脚本的链接。 ④服务器向点击链接的用户返回有DOM型XSS漏洞的页面,触发脚本运行。 ⑤恶意脚本在用户端运行的时候。将攻击代码复制到用户的页面中。

⑥被攻击的用户浏览器就会读取用户的隐私信息,并发送给攻击者指定的服务器中。

龙源期刊网 http://www.qikan.com.cn

⑦攻击者利用获取到的信息,伪装成合法的用户,就可以正常登陆WEB应用程序,进行其他合法操作。

2基于DOM型XSS漏洞攻击技巧分析

利用以下几种攻击技巧,攻击者可以很容易将攻击代码插入WEB应用程序中,而不被WEB服务器拦截。

当客户端从地址链接中获取参数值时,它们一般不会把查询字符串精确解释成“名=值”对。相反,它们往往会在地址链接中查找等号后面的参数名称,然后截取等号后面所有的URL。可以采用以下两种方式:

1)如果WEB服务器端不是应用整个URL进行确认的,而是根据每个参数的确认,那么攻击者就会将恶意代码插人在容易受攻击的参数中,例如:

http://localhost/testl.aspx?message=sorry%2c+an+error+OC-eurred&foo=

通过以上这种精心构造的URL不会被web服务器发现而处理掉,而是,被攻击的用户浏览器运行脚本,获取“message=”这个URL后面的全部内容,这样被攻击的用户浏览器就会处理的字符串中包含的恶意链接。

2)如果服务器对不仅仅是应用参数进行确认,而是应用整个URL进行确认的,攻击者可以利用下面的技巧将恶意代码插入到URL中“#”的右边,从而规避WEB服务器端的过滤。例如:

http://localhost/test2.aspx?message=sorry%2c+an+error+OC-curred#

以上的恶意链接中,“#”号后面的代码作为URL的一部分,从而使它能够被保留在DOM中,让被攻击的用户浏览器处理,但是,“#”号后面的代码不会提交给服务器出理,因此这些恶意的代码就不会被服务器过滤,被攻击的客户端脚本获取“mes-sage=”后面的全部内容之后攻击代码就会被完全复制到HTML页面中。

3)假如客户端和服务端都设置了特别严格的过滤规则,那么以上两种方法可能都无法实现攻击,URL中的恶意代码可能都被过滤掉,但是可以对以上的两个攻击代码做如下修改: http://loealhost/testl.aspx?foomessage=&message=sorry%2e+an+error+occurred http://localhost/test2.aspx?#message=

通过修改后的两种攻击URL里面“message=”后面连接攻击字符串,没有任何阻止脚本执行的分隔符,恶意代码就能够被插人到HTML的源代码中。

龙源期刊网 http://www.qikan.com.cn

3基于DOM型xSS漏洞的检测方法

1)检测DOM型XSS漏洞的基本方法是:在客户端用浏览器进行检测,通过更改URL中的参数,在每一个URL中插入测试字符串,例如:

通过输入以上的代码,观察浏览器返回的每一个页面,如果返回的页面中出现含有COOKIE的对话框,那么就可以断定这个页面有XSS漏洞。

2)检测DOM型XSS漏洞的另一种更加有效的方法是检查所有客户端JavaScripk看其中是否出现以下的API,它们可以用于访问专门设计过的URL控制的DOM数据: ①document.10cahion ②document.URL

③document.URLUnencoded ④document.referrer ⑤window.10cation

以上的这些API的位置应该重点检查,分析应用程序是怎么样处理用户的输入数据的,以及检测这些API是否可以用来执行任意的JavaScript脚本,特别注意检查并测试控制的数据被传送以下任何一个API的情况: ①document.writen ②document.writelnn ③document.body.innerHtml ④evalfl

⑤window.execScript() ⑥window.setInterval() ⑦window.SetTimeout()

任何一种检测方法都很难完全检测出所有的XSS的漏洞,结合一些专业工具比如DOMTracer,AWVS等,可以大大的提高检测的效果。 4基于DOM型XSS漏洞防范措施

龙源期刊网 http://www.qikan.com.cn

迄今为止,对XSS的攻击防范措施有很多种,但是因为不同类型的XSS攻击的差异性很大,很多的预防机制并不能完全防止DOM型XSS漏洞,造成这种漏洞的原因是因为并不需要将用户的数据复制到WEB服务器响应中,所以应用程序应尽量避免使用客户脚本处理DOM数据并把它插入到页面中。

要是在一些特殊的WEB应用中必须要以这种方式使用客户脚本,我们可以通过以下两种方法防范DOM型XSS漏洞,这两种措施就是输入控制和输出控制。 4.1输入控制

输入控制可以在客户端实施,也可以在服务端实施,但在客户端实施的输入控制更加简单,也更加有效。在客户端可以对插入到文档的字符进行过滤,把非法的特殊字符过滤掉,只允许字母,数字,与空白符,这样就可以防范攻击的发生。例如可以通过以下控制: 在服务端实施的输入控制就是对客户端提交的URL进行严格控制。对客户端提交的查询字符串进行检测,具体检测的内容包括如下: ①查询字符串中只有一个参数; ②参数名为message(区分大小写); ③参数值仅包含字母数字内容。

除了通过这些服务端输入控制之外,在客户端也需要解析出message参数的值,过滤掉包含在URL中的任何非法字符。 4.2输出控制

输出控制就是在将用户可输出的DOM数据插入到文档之前,应用程序对它们进行HTML编码。这样就可以将各种危险的字符与表达式以安全的方式显示在页面中。例如,使用下面的函数即可在客户端JavaScript中执行HTML编码: 5结束语

文章归纳和总结了利用DOM型XSS漏洞攻击的实施过程,通过分析造成基于DOM型XSS漏洞的原因,然后指出目前常用避开服务器过滤URL的攻击技巧,接着在此基础上提出了DOM型XSS漏洞的检测方法,最后提出了防范这些漏洞的措施。通过以上的分析和研究,为下一步完善DOM型XSS漏洞的检测方法,改正防范措施打下基础,指明方向。

龙源期刊网 http://www.qikan.com.cn

因篇幅问题不能全部显示,请点此查看更多更全内容