XSS 探索 - big-brother

标签: xss big brother | 发表时间:2015-07-05 13:57 | 作者:big-brother
分享到:
出处:

1. 什么是XSS攻击?

正常的页面被渗出了攻击者的js脚本,这些脚本可以非法地获取用户信息,然后将信息发送到attacked的服务端。

XSS是需要充分利用输出环境来构造攻击脚本的

2. 危害

  • 非法获取用户cookie、ip等内容

  • 窃取用户输入的内容

  • 劫持浏览器,形成DDOS攻击

3. 类型

  • Reflected XSS:可以理解为参数型XSS攻击,攻击的切入点是url后面的参数
    // 合法页面
    url: http://aa.com?test=1234
    <input type="text" value={test} />

    // result is:
    <input type="text" value="1234" />

    // XSS攻击
    url: http://aa.com?test=" /><script>alert('xss')</script>
    <input type="text" value={test} />

    // result is:
    <input type="text" value="" /> <script> alert('xss')</script> />
  • stored XSS: 将攻击js脚本上传到服务器端,每次输出时,也随着内容将脚本输出,这样js恶意脚本就可以起到攻击作用。
    // input:
    <textarea>
    hello </div><script src="..."></script>
    </textarea>
    // 将hello及后面的内容一起提交到服务上

    //输出上述内容
    <div>
    hello</div><script src="..."></script>
    </div>
  • DOM based XSS:这种攻击方式也是通过URL的参数,但是需要了解正常js的DOM操作,将js脚本注入到页面中
    <div id="inner"></div>
    <script>
    var ele = document.querySelector('#inner');
    var search = window.location.search;
    var age = getAge(search) // 获取search中age的内容
    ele.innerHTML = age;

    // if url: aa.com?age=23
    <div id="inner">23</div>
    </script>

    // if url: aa.com?age=</div><script src="..."></script>
    <div id="inner"></div><script src="..."></script>
  • 突变型XSS:是当不可信数据在DOM的innerHTML属性的上下文被处理并通过浏览器发生突变,导致变成一种有效的XSS方向的一种XSS漏洞

4.解决方案

  • 对内容进行编码,包括server、client端均要进行编码。但是不同的内容,就需要采用不同的编码方式。

总体来讲需要对HTML、Attribute、js context、URL、style context、JSON分别进行编码处理。

  • 对html内容进行过滤,例如 html purifierjs-xss

  • X-XSS-Protection

    IE8+以上的浏览器均支持该http header,目前 goole里面已经添加该属性:

    x-xss-protection:1; mode=block
  • 监控跨站资源:针对csp中存在的问题,进行监控。FEX团队写了几篇非常好的文章:

    【XSS】利用 onload 事件监控跨站资源

    XSS 前端防火墙 —— 内联事件拦截

    XSS 前端防火墙 —— 可疑模块拦截

    XSS 前端防火墙 —— 无懈可击的钩子

    XSS 前端防火墙 —— 天衣无缝的防护

    XSS 前端防火墙 —— 整装待发

  •  content security policy(CSP): W3C和各大浏览器厂商均推荐和实践防御XSS的标准,限制执行、请求具有风险的外链资源,攻击者无法将目标信息传出,并对relected XSS进行防御。

    在HTTP的response中部署CSP,指定资源白名单来限制浏览器访问未经允许的外部资源。

    目前Google、facebook、twitter均支持该标准,例如twitter的配置信息:

    content-security-policy:default-src https:;
    connect-src https:; font-src https: data:;
    frame-src https: twitter:; frame-ancestors 'self';
    img-src https: blob: data:; media-src https: blob:;
    object-src https:;
    script-src 'unsafe-inline' 'nonce-w6FV5VZOKta+7JaW7PpR3A==' 'unsafe-eval' https:;
    style-src 'unsafe-inline' https:;
    report-uri https://twitter.com/i/csp_report?a=NVQWGYLXFVZXO2LGOQ%3D%3D%3D%3D%3D%3D&ro=false;

    上述配置的详细参数请参考CSP的相关规范, csp1.0,目前 csp1.1草案已经出来。 然而,csp中不允许Eval、inline js、白名单获取远程脚本,这些阻碍着csp的推广。

  • Template Engine:对处理输出内容进行编码,放置恶意代码执行,对stored Xss进行防御。

    例如经常使用 handlebars就对输出的内容进行了编码:

    Handlebars HTML-escapes values returned by a {{expression}}.
    If you don't want Handlebars to escape a value,
    use the "triple-stash", {{{.

    <div class="entry">
    <h1>{{title}}</h1>
    <div class="body">
    {{{body}}}
    </div>
    </div>

    {
    title: "All about <p> Tags",
    body: "<p>This is a post about &lt;p&gt; tags</p>"
    }

    result is as below:

    <div class="entry">
    <h1>All About &lt;p&gt; Tags</h1>
    <div class="body">
    <p>This is a post about &lt;p&gt; tags</p>
    </div>
    </div>
  • Util Lib:提供安全的environment、Encode等工具,避免location、cookie封装对DOM based XSS工具。

    首先在服务端端,对输出的内容进行编码,对request中的内容进行检查编码。

    在客户端,对js获取的widow.location、document.cookie等信息也需要相应处理。

  • 仅可能采用POST而非GET请求方式
  • 严格检查refer

5.参考

https://developer.mozilla.org/zh-CN/docs/Web/Security/CSP

http://www.80sec.com/browser-hijacking.html

https://cure53.de/fp170.pdf

http://www.freebuf.com/articles/web/40520.html

http://www.freebuf.com/articles/web/42727.html

http://blog.knownsec.com/wp-content/uploads/2014/07/%E7%BB%99%E5%BC%80%E5%8F%91%E8%80%85%E7%9A%84%E7%BB%88%E6%9E%81XSS%E9%98%B2%E6%8A%A4%E5%A4%87%E5%BF%98%E5%BD%95.pdf

 


本文链接: XSS 探索,转载请注明。

相关 [xss big brother] 推荐:

XSS 探索 - big-brother

- - 博客园_首页
正常的页面被渗出了攻击者的js脚本,这些脚本可以非法地获取用户信息,然后将信息发送到attacked的服务端. XSS是需要充分利用输出环境来构造攻击脚本的. 非法获取用户cookie、ip等内容. 劫持浏览器,形成DDOS攻击. Reflected XSS:可以理解为参数型XSS攻击,攻击的切入点是url后面的参数.

angular问题总结与反思 - big-brother

- - 博客园_首页
      因为工作中实际开发需要,才开始接触angular框架. 从当初的比葫芦画瓢,被各种问题、概念折磨摧残,到现在有一定的了解认识,觉得有必要将自己的认识进行简单的总结.       目前业内盛行各种MV**框架,相关的框架不断涌现,而angular就是其中的一种(MVVM). MV**框架其实最核心的问题就是将view层和model分离开来,降低代码的耦合性,做到数据和表现的分离,MVC、MVP、MVVM均有相同的目标,而他们之间的不同就在于如何把model层和view关联起来.

大钱:Big Money

- Luosky - 爱…稀奇~{新鲜:科技:创意:有趣}
这是挪威工作室Skrekkøgle带来的一个玩意,大钱(Big Money),它真正的让所谓挣“大钱”变得轻而易举——为啥. 因为这些硬币真的很大,大到你真的可以钻进钱眼……. 好吧,除了自嘲一下你我的身不由己,这玩意最有趣的地方在于,它能让这个世界变得渺小——我猜的话,这意思有两个:(1)人类已经无法战胜金钱了;(2)这个世界其实虚假得可以,何必认真.

鼠标指针手写笔:Big Big Cursor

- weawea - 爱…稀奇~{新鲜:科技:创意:有趣}
虽然从苹果iPhone开始的全触摸式操作风行还没有几年,但是鼠标就已经显露出颓势了,以至于就连小弟这种非iPhone用户,面对笔记本的时候也忍不住会想用手指在屏幕上划拉……. ——看上去,我们似乎可以开始悼念鼠标了,比如说用这款鼠标指针手写笔(Big Big Cursor):. 针对iPhone、iPad、安卓等全触摸操作环境设计,采用了超级经典的鼠标指针图案——我们是不能指望在平板上出现这些手势了,但是手里拿着一个放大版的鼠标指针,然后放肆地在娇嫩的屏幕上戳啊戳的,那种视觉效果还挺震撼的,哈哈.

Big Data技术综述

- Ben - 《程序员》杂志官网
Big Data是近来的一个技术热点,但从名字就能判断它并不是什么新词. 历史上,数据库、数据仓库、数据集市等信息管理领域的技术,很大程度上也是为了解决大规模数据的问题. 被誉为数据仓库之父的Bill Inmon早在20世纪90年代就经常将Big Data挂在嘴边了. 然而,Big Data作为一个专有名词成为热点,主要应归功于近年来互联网、云计算、移动和物联网的迅猛发展.

深掘XSS漏洞场景之XSS Rootkit

- jyf1987 - 80sec
深掘XSS漏洞场景之XSS Rootkit[完整修订版]. 众所周知XSS漏洞的风险定义一直比较模糊,XSS漏洞属于高危漏洞还是低风险漏洞一直以来都有所争议. XSS漏洞类型主要分为持久型和非持久型两种:. 非持久型XSS漏洞一般存在于URL参数中,需要访问黑客构造好的特定URL才能触发漏洞. 持久型XSS漏洞一般存在于富文本等交互功能,如发帖留言等,黑客使用的XSS内容经正常功能进入数据库持久保存.

前端xss攻击

- - SegmentFault 最新的文章
实习的时候在项目中有接触过关于xss攻击的内容,并且使用了项目组中推荐的一些常用的防xss攻击的方法对项目进行了防攻击的完善. 但一直没有时间深入了解这东西,在此,做一个简单的梳理. xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊目的.

Big Data(大数据)技术简析

- - 服务器运维与网站架构|Linux运维|互联网研究
Big Data是近来的一个技术热点,但从名字就能判断它并不是什么新词. 历史上,数据库、数据仓库、数据集市等信息管理领域的技术,很大程度上也是为了解决大规模数据的问题. 被誉为数据仓库之父的Bill Inmon早在20世纪90年代就经常将Big Data挂在嘴边了. 然而,Big Data作为一个专有名词成为热点,主要应归功于近年来互联网、云计算、移动和物联网的迅猛发展.

百度知道XSS漏洞

- - 博客园_首页
事情的起因是我一同学在百度知道上看到一个很奇怪的,正文带有连接的提问( 这里),正常来说,这种情况是不可能出现的. 我条件反射的想到了:XSS漏洞. 通过查看源代码,我马上发现了问题的根源:未结束的<a>标签. <pre class="line q-content mt-10" accuse="qContent">帮我写一个能提取<a href="http://.

XSS攻击技术详解

- - BlogJava-qileilove
  XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆. web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. 比如这些代码包括HTML代码和客户端脚本. 攻击者利用XSS漏洞旁路掉访问控制--例如同源策略(same origin policy).