Web十大安全隐患之XSS跨站脚本

上次提到的是sql注入,算是较大的安全隐患,今天我们来介绍另外一种较为严重的安全隐患--XSS跨站脚本攻击。

  首先咱们来说什么是跨站脚本攻击。它的英文叫“CrossSite Scripting”,通俗点说就是攻击者向web页面里跨站的插入恶意html代码,那么当用户浏览该页的时候,嵌入到web中的html代码就会被执行。我们经常看到的重定向啊,以及一些钓鱼网站,大多数利用的就是这种技术。比如有个广告,里边网址是item.taobao.com/.xxxx的,是某个人在某论坛发的广告链接,你觉得东西很便宜啊,又是淘宝的,有保障,就点击进去了。其实呢,它会redirect到另一个攻击者自己的网站,你在上面通过他的接口付款时候,就会不小心被他洗劫一空。

  介绍过了,其实老实讲,我自己对怎么攻击和攻击的原理也不是特别特别了解(大多数时候我们只要知道怎么测试出来有这个隐患和怎么防止就ok了)。不过大致原理咱们还是要了解的,后面是我节选自百度空间一篇文章,具体作者和链接我都忘记了。。是很久之前存下的,在这先感谢下。大家可以简单了解下其原理。

  传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。这种方式太过于落后,对于弊端大家可能都知道,因为即便你收集到了cookie你也未必能进一步渗透进去,多数的cookie里面的密码都是经过加密的,如果想要cookie欺骗的话,同样也要受到其它的条件的限约。而另一种思路,则从一定程度上解决上述的问题。比较成熟的方法是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。下面将详细的介绍这种技术。

  寻找跨站漏洞

  如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”<”,”>”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试QQ群跨站漏洞的时候,你在标题处输入<script>alert(‘test’)</script>,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,如少了一个</script>,这个时候,你只要闭合一个</script>,代码就会执行,如:你在标题处输入</script><script>alert(‘test’)</script>,这样就可以弹出一个test的框。

  如何利用

  跨站脚本(Cross-site scripting,XSS)漏洞是Web应用程序中最常见的漏洞之一。如果您的站点没有预防XSS漏洞的固定方法,那么就存在XSS漏洞。这个利用XSS漏洞的病毒之所以具有重要意义是因为,通常难以看到XSS漏洞的威胁,而该病毒则将其发挥得淋漓尽致。

  这个利用XSS漏洞的蠕虫病毒的特别之处在于它能够自我传播。myspace.com上的一个用户希望自己能够在网站的友人列表上更“受欢迎”。但是该用户不是通过普通的方法来结交新朋友,而是在自己的个人信息中添加了一些代码,导致其他人在访问他的页面时,会不知不觉地利用XSS漏洞将他加为好友。更恶劣的是,它会修改这些人的个人信息,使其他人在访问这些被感染的个人信息时,也会被感染。由于这种呈指数传播的方式,这种病毒才很快就被发现。

  很难预防站点中的XSS。因此一定要认真检查您的应用程序是否存在XSS漏洞。此外,WebLogic Server的encodeXSS()也可以有所帮助。可以试着针对所有牵涉到使用encodeXSS()或其他某个筛选方法的输出找出一种编码模式——找出对一种编码模式来说不正确的应用程序往往要比找出XSS漏洞要容易的多。更重要的是,不要认为,就因为XSS漏洞是一个常见问题,所以它危害不大。

  之所以出现XSS漏洞有两个原因。首先,HTML没有明确区分代码和数据。无法确定指出“这个字符串表示的是数据”。您可以将其放入引号中,但是数据是否包含引号呢?……其次,程序在将用户数据发送回浏览器时没有进行有效的转义。这导致包含有(例如说)引号的数据被放入页面中,从而引发了问题。而AJAX要提供的好处是,它包含一个专用渠道XML链接,其中全是数据而没有代码。这样,就有可能让客户端AJAX引擎负责对字符串进行转义、检测不正确的值,等等。说是这么说,直到AJAX更为成熟(可能也更为标准化)之前,它只会导致错误的编程和安全漏洞。

  XSS漏洞可能造成的后果包括窃取用户会话,窃取敏感信息,重写Web页面,重定向用户到钓鱼网站等,尤为严重的是,XSS漏洞可能使得攻击者能够安装XSS代理,从而攻击者能够观察到该网站上所有用户的行为,并能操控用户访问其他的恶意网站。

  对于XSS漏洞,我们有两种常见的措施,第一种就是消除漏洞,简而言之就是在输出页面上不提供任何用户的输入信息;另外一种就是想办法来抵御这种漏洞,可以采用对所有用户的输入编码后再输出(可以用OWASP的ESAPI),也可以对所有用户输入进行“白名单”验证,另外,OWASP还提供了AntiSamy对HTML页面做优化以消除这个漏洞。

  上面这段既包含了原理,也说了防止手段。算是我看过文章里比较全面的。那后边我们进入最重点部分,那就是怎么去测试XSS跨站脚本攻击。

  大致上可以把XSS攻击分成三类,Stored XSS、Reflected XSS、Dom-Base XSS。我们逐一介绍下。

  首先是Stored XSS,就是存储式跨站攻击。这是最为厉害的一种攻击方式,也是测试起来相对容易的。存储式跨站攻击简单来说就是攻击者提交给网站的数据呢会提交并永久保存到服务器的数据库或者是文件系统等其他地方,之后不做任何编码操作就会显示在web页面上。貌似说的不是很清楚,我们可以举个例子来说:

  比如说一个社交网站或其他可以给在网站中留言的地方,事实上呢,我们在可以留言的地方写入一段代码:

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

  这样这个信息就被存储到了服务器上,当有其他用户访问这个网页时候,其浏览器就会执行这个脚本,从而弹出一个关于cookie的alert。

  我们就完成一次最简单的存储式跨站攻击。到目前为止最典型的存储式跨站攻击的例子就是05年myspace发现的漏洞,具体情况大家自行google~~~

  其次Reflected XSS,反射跨站脚本攻击。这个是最著名最常见的攻击手段。所谓反射,就是等着服务器所给的返回。我们在进行测试行依据的就是在自己页面上的简单注入。在web客户端提交了数据后,服务端马上给这个请求生成返回结果页,如果结果中包含了未验证的客户端输入数据,那就表示会允许客户端脚本直接注入到页面里,也就出现了这样一个漏洞。简单举个例子,在搜索引擎里边,我们如果搜索了一个包含html代码的字符串,如果返回的字符串仍然没被编码,那就是存在XSS漏洞了。呃,我自己说的也比较晕,不知道大家能理解没有。

  这个漏洞乍听上去比较不严重,反正觉得只能在自己页面上注入代码嘛,但是其实只要有一些工程学方法,攻击者就可以诱使其他用户访问一个在结果中注入了代码的url,使攻击者拥有整个页面的权限。(具体的工程学方法。。我也不会,要是我会估计我就不在这里敲字了哈)

  刚才说了三类,最后一类就是基于DOM的XSS攻击。由于我是做web测试的,这类相对见的比较少,该漏洞多见于客户端脚本,意思就是如果一个js访问需要参数的url,并且需要把信息用于自己页面,信息又未被编码,就会出现该漏洞。是不是太抽象了?好吧,我简化一下,我们是不是经常看到一个网站(比如我们论坛)在网址后边带个参数(?XXX的),当看到这种情况时候,我们可以在参数后边加点料,加个<script></script>的,如果加了这个参数之后的结果不被编码就输出,那就证明它具有这么一个漏洞。

  举个例子吧,比如某某网站,我们输入一个这样的url去请求:

  http://server.com/XXX.php?<SCRIPT>alert(“Cookie”+document.cookie)</SCRIPT>

  如果这个脚本被执行了,那么我们就说他有这样一个漏洞

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-12-09 10:04:54

Web十大安全隐患之XSS跨站脚本的相关文章

OWASP Top 10 2010 十大安全隐患

[51CTO.com 独家报道]OWASP大会 刚刚闭幕,相信很多东西还是值得大家回味的. 那么51CTO作为特邀媒体,参加了全程大会,有关OWASP会议详细情况请浏览51CTO OWASP 2010中国峰会专题报道.从会议上,我们了解到了OWASP Top 10 2010的相关概念,这里我们就来简单解析一下.顾名思义,OWASP(开放式web应用程序安全项目)关注web应用程序的安全.OWASP这个项目最有名的,也许就是它的"十大安全隐患列表".这个列表不但总结了web应用程序最可能

Web十大可疑顶级域名

本文讲的是 Web十大可疑顶级域名,就像所有城市一样,互联网也有一些频繁发生可疑活动的地区,比如垃圾邮件.网络诈骗.有潜在威胁的软件.恶意软件.僵尸网络.网络钓鱼等. 企业安全公司Blue Coat System定期分析来自1万5千家企业和7500万用户的Web请求,跟踪互联网上的可疑活动.该公司在上个月发布了与恶意网站有所联系的十大顶级域名. 主流的顶级域名以前有在过去的几年中数量激增,从.com..net和.org扩展出了更多种类.新兴的顶级域通常会吸引大量威胁源,因为使用它们进行注册的成本

Foxmail十大安全隐患解决方法

作为最有名的国产电子邮件客户端软件,Foxmail因其设计优秀.体贴用户.使用方便,提供全面而强大的邮件处理功能,以及很高的运行效率等特点,赢得了广大用户的青睐,使用Foxmail的用户非常多.与微软的Outlook Express一样,Foxmail也存在着许多安全隐患! 一.Foxmial帐号转换漏洞解决办法 在Foxmail中可以为不同的使用者建立不同的账户,每个帐户可以拥有自己的口令,来保护自己的信箱.但是,这个口令保护并不安全,用下面的方法可以可以轻松绕过口令保护,进入别人的信箱. 首

游戏安全资讯精选 2017年第十五期:网络安全人才短缺是安全事件的根源,游戏行业为典型;点评最新十大Web安全隐患;MongoDB最新漏洞缓解建议

[最新活动]棋牌游戏用户五大DDoS优惠防护.点击查看原文 点评:游戏行业内,2016年,全球有记录的DDoS峰值已近600G,300G以上的DDoS攻击,在游戏行业内已经毫不稀奇. 为什么游戏会是DDoS攻击的重灾区呢?这里说几点主要的原因. 首先是因为游戏行业的攻击成本低廉,是防护成本的1/N,攻防两端极度不平衡.随着攻击方的打法越来越复杂.攻击点越来越多,基本的静态防护策略无法达到较好的效果,也就加剧了这种不平衡. 其次,游戏行业生命周期短.一款游戏从出生,到消亡,很多都是半年的时间,如果

黑客Web攻击的十大原因

  随着各种基于Internet的安全攻击频发,Web安全已经成为业界的热门话题.本文谈下黑客使用Web进行攻击的十大原因以及抵御Web威胁的十大方法. 黑客使用Web进行攻击的十大原因 1.桌面漏洞 Internet Explorer.Firefox和Windows操作系统中包含很多可以被黑客利用的漏洞,特别是在用户经常不及时安装补丁的情况下.黑客会利用这些漏洞在不经用户同意的情况下自动下载恶意软件代码--也称作隐藏式下载. 2.服务器漏洞 由于存在漏洞和服务器管理配置错误,Internet

Web应用的十大主动安全措施的内容

 在web中的应用有着十大主动的安全措施,不知道网友们知不知道呢?这些可是保障着系统和浏览器安全的好的方法呢?我们一起去看看吧!   1:Content-Security-Policy     Content Security Policy是Mozilla为了提高浏览器安全性开发的一套新的安全机制,该机制让网站可以定义内容安全政策,明确告知浏览器哪些内容是合法的,让浏览器得以避开恶意内容.CSP主要锁定解决XSS及跨站冒名请求(Cross Site Request Forgery)等网络应用程序

Web服务互操作开发的十大要点

web|web服务|web服务   Web服务互操作开发的十大要点 在过去一段时间里,很多供应商纷纷以惊人的速度发布其Web服务的实现.这包括产品的主要版本.辅助版本和许多开发服务包.随着新版本越来越符合标准,不同供应商之间的互操作性越来越高. 尽管如此,仍然需要在共同使用这些Web服务时的建议和策略.有些实践允许您确保以互操作的方式既使用又公开Web服务.基于已有的经验,我整理了关于Web服务互操作性的"十大"要点列表.有些要点基于在Microsoft上运行的测试结果的发现,另外一些

经验:给WEB创业者的十大建议

给WEB创业者的十大建议 1.收缩:专注于一个尽可能小的可能存在的难题,而你又能够解决这个难题.不要想着什么都做,贪多嚼不烂,搞不好就成了模仿者.小可以变大,船小好调头,小可以带给你很多优势,缝隙市场可以变成一个大市场.不要试图把1亿上网用户都当成你的用户,没用,能真正解决一部分用户的一部分需求,就足够你玩儿的.   2.差异:要记住很多人都在做着跟你一样的事情,而其中一个是Google.在这个市场上,专才比通才有用.不一定要做多么领先的事情,寻常的事情你同样可以做得跟别人不一样,比如Googl

十大Web网站漏洞扫描程序工具

网络发展至今,他的高端我们都见识过,但是网络安全也是一直以来不变的话题,怎样能使网络更加安全呢?如何构建一个安全的Web环境,是应该考虑的事情.该选择哪些安全工具呢?我们可以再危险发生之前,先测试一下自己系统中的漏洞.为大家推荐10大Web漏洞扫描程序. 1. Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目进行全面的测试.其扫描项目和插件经常更新并且可以自动更新.Nikto可以在尽可能短的周期内测试你的Web服务器,这在其日志文件中相当明显.不过,如果你想试验一下