xss一二解
0x01
xss漏洞是存在比较广泛的一个web页面的漏洞,其原理是基于浏览器对于客户端的信任,将不安全的代码交给浏览器执行,进而执行不安全代码并将用户数据返回给攻击者
0x02
xss的分类有三种,分别是 反射型xss、存储型xss以及DOM型xss,反射型xss主要出现于url中,作用于那些网页页面直接返回用户输入的位置,如搜索框,并具有一次性,并不保存在服务器中。存储型xss主要发生于个人信息字段,如姓名、地址、电子邮件、电话等或者文档,上传文件及其他数据,以及提交的反馈,如留言板中,都等成为存储型xss漏洞发生的地方。攻击者通过在服务器上留下而已的JS代码,由于代码保存在服务器中,所以每一个访问的人都会接触到这一段代码并执行,相比前者更具有危害性。并且要注意的是,在一些处理http头部的应用程序中,referer头往往是xss漏洞的重灾区,也是许多开发者容易忽略的地方,许多应用程序会将上一个网站的url地址带入referer头中。在referer头中注入恶意代码显得更加隐蔽,不容易被发现。DOM型xss个人感觉也是一种基于反射型的xss或者说是反射型xss的一个变种,不再赘述。
0x03
xss最常见的应用便是在页面提交一段包含恶意代码的字符串,比如这样 http://www.hacker.com/<script>alert(1)</script>,如果该页面存在xss漏洞,页面将会执行后面的js代码并在页面中返回数字 1,这也是最常见的xss检测方法。但是在实际的生产环境中,xss的攻击并非如此简单,很多网站对用户输入的字符串有严格的限制,例如过滤了<,>,/,script等。对于这些限制,我们就需要不断的测试,对规则进行绕过,只要页面确实存在这个漏洞,就存在利用他的方法。方法总比困难多。
常见的检测方法有 ①对每一个输入点进行检测,先提交一个正常的字符,观察在网页中显示的位置,特别是对于有一些不直接显示在页面中但是存在于网页元素中的输入点,可以配合burpsuite进行检查
②确定回显位置的上下文,是在什么标签当中,是<script>标签中还是其他标签
③确定被过滤字符,尝试对规则进行绕过,漏洞的价值与花费的时间成正比,越有价值的漏洞往往需要的时间越多,面对过滤规则及其复杂的网页,需要静下心思考,推测过滤规则,人的思考总是存在漏洞的
0x04
同源策略:贴一段从知乎上看的解释,比较详细和好理解
链接:https://www.zhihu.com/question/25427931/answer/30848852
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1.什么是同源策略
同domain(或ip),同端口,同协议视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源。这种安全限制称为同源策略。
2.为什么说同源策略限制了人类文明的发展
安全性和方便性是成反比的,十位数的密码提高了安全性,但是不方便记忆。同样,同源策略提升了Web前端的安全性,但牺牲了Web拓展上的灵活性。设想若把html、js、css、flash,image等文件全部布置在一台服务器上,小网站这样凑活还行,大中网站如果这样做服务器根本受不了的,可用性都不能保证的话,安全性还算个吊?
所以,现代浏览器在安全性和可用性之间选择了一个平衡点。在遵循同源策略的基础上,选择性地为同源策略“开放了后门”。
例如img script style等标签,都允许垮域引用资源,严格说这都是不符合同源要求的。然而,你也只能是引用这些资源而已,并不能读取这些资源的内容,不信你可以试试:在你自己的域内读取百度logo图片的内容,以读取到二进制数据为准。
你很快发现这是不可能的,你顶多只能判断这张图片是否存在(使用的img标签的onerror属性 )。因此浏览器降低了那么一点点安全性,却大大提升网站布置的灵活性。
尽管浏览器开放了“后门”,然而现代文明却仍不满足。打破同源策略的方法有很多,抛开漏洞不谈,Server端的大数据整合和浏览器的插件往往就充当着这样一个角色。我有一个同事,由于在淘宝上买过一个自慰器,从此不管他打开哪个网站都会有自慰器的广告投递,弄得人家好尴尬。我手把手教他清除Cookie,发现者根本不奏效。(吐槽:我们使用的是一个公网IP,后来我吃惊的发现我的电脑中也出现了自慰器的广告).好吧,这样的例子还有很多。虽然,攻城狮们越来越肆无忌惮的浪,然而浏览器们依旧保持着他那份应有的节操(国产浏览器除外)。
3.如果没有同源策略,普通用户将无密可保。
尽管浏览器遵循同源策略,你仍可以发现你的访问过的网站、买过的东西、搜索过的字串、甚至你的兴趣爱好,都可以被远端分析出来。我们姑且认为这些大数据分析者是有节操的,不会随意泄露这些数据。如果浏览器不遵循同源策略,那么情况更糟:网站站长、广告联盟、流量统计商、xss黑客,随便哪个人都将无障碍的获取私密信息,例如各个网站的Cookie、email的邮件内容、OA页面的内容、QQ空间里设置为隐私的照片等,不止这些,听说过CSRF吗,这里不做科普,通过CSRF还可能用你的邮箱群发发邮件、在OA里面填上你旷工一天、在第三方支付平台里自由转账、用你的账号在知乎上胡乱发言降低你的big,等等。
感谢同源策略,我才有勇气使用互联网。
4.跨域漏洞
尽管各个浏览器都遵循都远策略,可是通过一些奇淫巧计会绕过同源的限制进行跨域。举个例子UC浏览器跨本地域XSS可盗取任意域Cookie ,一段js代码本来是普通http域的权限,可是用过下载页面的一个xss,从而具有了file域的权限,而file域对权限限制也不严格,允许从file域跨到任意一个http域权限去执行js代码,经过了两次跨域操作,最终实现了普通http域向任意一个域注射js的目的,同源策略被完全破坏。
4.最严重的跨域——跨特权域
所有跨域行为中最严重的莫过于跨特权域。在客户端中,有一些域的权限比较高,例如file://这个协议域,ie中允许调用ActiveX执行cmd,Webkit中可以读取磁盘上的文件。另外还有客户端自定义的特权域,例如Chrome的chrome://downloads/域,有着执行exe的权限。这事儿太严重了,这不仅意味着任意一个网站都可以浏览/修改你的浏览器配置,而且可以不经你同意上传文件,甚至会在你的电脑上安装木马。跨特权域最经典的例子莫过于黑哥去年讲的 《跨过的那些客户端》。
浙公网安备 33010602011771号