关闭

360护心镜:XSS攻击与前端主动防御解决方案

359人阅读 评论(0) 收藏 举报
分类:
帅气如你,一定会戳上面蓝字关注我们的!

福利在最下方

360护心镜是一款XSS前端主动防御的工具。
通过监控页面中的js行为、DOM元素的创建来动态识别、阻断XSS行为,同时可进行预警,方便安全人员实施应急响应。

0x01 XSS是什么?

XSS是黑客通过前端网页向受害者浏览的网页中注入js脚本,从而实现攻击目的。与其它web漏洞不同,XSS并非直接攻击服务器,而是攻击的受害者的浏览器。其在网络中存在的数量,远远大于SQL注入等传统高危漏洞。

XSS在执行方式上可分为反射形XSS和存储形XSS,反射形XSS是指把要执行的js-payload放在URL的参数中,需要攻击者把超链接发送给受害者,诱骗受害者点击才能达到目的,而且现在大部分浏览器内置安全机制(XSS-Filter)都可以有效防御反射形XSS,由此可见反射形XSS利用难度较大,不但需要用户的交互,还要设法绕过浏览器的防御机制。

而存储型XSS就不同了,存储型XSS是指攻击者在某个漏洞页面提交XSS代码,提交的代码一般会存储在服务器中,在另外一个页面进行输出。例如网站中的留言功能,论坛中的评论-审核功能,都是出现存储型XSS的高危地带。这种XSS,很少需要用户刻意交互,往往不知不觉中就会执行,而且会无视浏览器的安全防御机制,直接达到攻击目的。


0x02 XSS的利用和危害

早年间要想成功利用XSS还是有一定门槛的,至少要求攻击者熟练使用js和html构造攻击代码。但是前几年流行的XSS平台大大降低了这种门槛,就好像当年阿D、明小子降低了SQL注入的门槛一样,让任何一个初学的script-kid都可以拿着现成的代码到处攻击。

这是一个XSS平台,里面包含了大部分XSS的攻击方式。一般说,最常见的是偷取cookie,这也是主流的XSS攻击方式。其次还有伪造登陆页面进行钓鱼,诱骗用户输入账户和密码从而获得密码明文的攻击方式。此外,还可偷取用户当前页面的源代码或者后台网页的内容(例如可遍历邮件的内容),还可以结合后台的CSRF漏洞对后台内容进行篡改,例如自动审核某个文章、提升某个普通用户为管理员组的权限,修改网站配置信息等等,甚至可以结合后台的上传漏洞、备份漏洞等直接对服务器进行攻击,获得webshell权限。这类XSS攻击大部分都是攻击网站管理员的,只为获得后台权限甚至是服务器权限。

国内外诸多开源CMS都曾经爆出过威胁管理员后台的存储型XSS漏洞。例如worldpress、Drupal、Discuz!、DeDe、PHPCMS,每一次漏洞的爆出都是一场XSS的狂欢,每次狂欢过后都伴随着大量管理员后台权限的沦陷。以为使用非开源的cms就安全了吗,XSS盲打就是针对未知CMS的一种XSS攻击方式,即在任何可以提交表单的地方提交XSS代码,来攻击任何一个可能出现XSS问题的地方,这种方式成本低廉,即便是没有成功也不会增加攻击者的成本,而一旦成功,往往是渗透过程中的一个里程碑式事件。

其实上述危害都还好,危害最严重的,波及范围最广,而且最难清除的莫过于XSS蠕虫。当然XSS蠕虫属于“富贵病”,并不是每一个网站都具备XSS蠕虫生存的土壤,小网站想得也得不上这种病。一般来说,web2.0网站中,用户间交互越多的,越容易成为XSS滋生的土壤,例如微博,SNS社交网站等等。XSS蠕虫以普通用户为攻击目标,当一个用户被XSS袭击后,通过CSRF可能会修改自身的备注信息、个人资料,或者发帖发私信,里面夹杂着XSS代码,当其他用户浏览到该用户的发表的带有XSS代码的内容时,也会受到相同的XSS的袭击,这样感染用户的数量呈指数增长,当厂商发现的时候,很可能已经大面积爆发了,历史上,人人网、新浪微博、百度贴吧等社交平台都受过XSS蠕虫的袭击。09年校内网蠕虫感染用户达到500万,11年新浪微博蠕虫1个小时内感染用户就达到了3万,可见危害之大范围之广。


0x03 传统XSS防御手段

如何根治XSS呢,这里可以负责任的告诉你,没有一种防御方法是通用万能的。XSS攻击方式根据漏洞出现位置、浏览器环境、业务环境、攻击目的、WebServer类型的不同而变化(所以XSSer们往往称自己为猥琐流)。它不像其他web漏洞:上传、SQL注入、文件包涵,仅仅需要在服务器上做下过滤(甚至是安装一个统一过滤脚本或者WAF)就可以成功防御的,所以根据实际情况,针对XSS防御措施也是不同的,大体来说,有以下几点:

1.服务器端过滤

服务器端转义输入的左右尖括号,对HTML标签进行编码,这是主流的防御XSS的方法,可有效防御一般的XSS攻击。

缺点:无法防御部分DomXSS攻击,以及Flash XSS攻击。

2.前端过滤

对innerHTML的内容进行检查,对eval中用户输入的参数进行检查,对于使用的js库(例如jquery)以及Flash进行检查,以免使用了存在XSS漏洞的js库和swf文件。

缺点:只是针对DomXSS有效

3.HttpOnly

在服务器端做配置,在响应头里对cookie中的session进行httponly标记,被标记的session无法被js读出,因此可以有效防御针对偷取cookie的XSS攻击。

缺点:只能防御针对cookie的XSS攻击。

4.Content Security Policy (CSP)

CSP策略规范了网页中某个标签所能加载的第三方域,从协议层把一些存在安全隐患的用法默认给干掉,把同源同域更发挥到了极致,结合禁止内联脚本的机制,可以有效防御大部分XSS攻击。

缺点:需要在服务器端进行配置,而且一旦配置不当,正常业务也会受到影响。配置不严格又会导致绕过。对于大型的、复杂的网站业务,维护成本较高。

5.XSS防火墙技术

这种技术目前正处于概念阶段,并没有大范围投入使用,其思路是用js代码来对当前网页进行防护,防止发生XSS行为。而且设计理念也是各有不同。

像百度FEX设计的这款,模拟了CSP策略实现了对XSS的防御。

http://fex.baidu.com/blog/2014/06/xss-frontend-firewall-4/


0x04 前端的主动防御

对于大部分的互联网厂商而言,目前都还停留在扫描一起发现一起,发现一起修复一起的后知后觉中,那么如何能针对前端攻击做主动防御,实现快速响应呢?360WEB攻防团队0kee Team设计的“护心镜“,通过Hook XSS的常用函数,并监控DOM元素的创建,从而对整个页面的js行为进行监控。当发现页面中存在XSS攻击行为时,可根据预置的选项,进行放行,提醒用户选择,阻拦三种处理方式,同时预警中心会收到一次事件的告警,安全人员可根据告警进行应急响应处理。

“护心镜”的配置也不复杂,只需要填写你的网站所正常引用的第三方资源的域名即可,这些资源类型包括:image、css、js、flash、vedio、iframe引用的资源等,“护心镜”会将这些域名添加到信任白名单中,如果没有引用则留空。为了方便广大站长收集自己网站上使用的第三方资源,0kee Team特意开发了一款Chrome扩展Res_Discover:https://chrome.google.com/webstore/detail/resdiscover/fobmnepngipfbmfmoocoikchdilekepc?utm_source=chrome-ntp-icon

然后选择使用的插件,每一种插件对应一种XSS攻击,例如盗取cookie、偷取表单、上传webshell、钓鱼等等。最后选择事件的处理方式:放行、提醒、阻断。

以QQ邮箱为例,模拟加载“护心镜”后,执行偷取cookie的XSS代码会是如下的效果:

护心镜拦截到攻击请求时会提示用户选择处理方式,内容包含黑客接收cookie所用的域名,同时可以在护心镜的告警中心找到这条告警。

其中“调用栈”是页面中发生过的事件列表,“告警源”是发生XSS的页面url地址。


护心镜官方地址:http://0kee.360.cn/hxj/,目前邀请试用中。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:915084次
    • 积分:9908
    • 等级:
    • 排名:第1818名
    • 原创:23篇
    • 转载:384篇
    • 译文:0篇
    • 评论:9条
    文章分类
    最新评论