白帽子讲Web安全-客户端脚本安全

1.安全世界观

1.1安全三要素

机密性Confidentiality:要求保护数据内容不能泄露,加密是实现机密性要求烦人常见手段;

完整性Integrity:要求保护数据内容是完整,没有被篡改的;

可用性Availability:要求保护资源是“随需而得”。

1.2实施安全评估

资产等级划分:对数据做等级划分,后划分信任域和信任边界;

威胁分析:可能造成危害的来源称为威胁,威胁分析是要把所有的威胁都找出来,一般采用头脑风暴法或者建模法;

风险分析:可能会出现的损失称为风险,可通过DREAD模型科学衡量风险;

安全解决方案:方案应能够有效解决问题,用户体验好,高性能,低耦合,易于扩展与升级。

1.3白帽子兵法

1.3.1 Secure By Default原则:

>白名单黑名单

    若更多地使用白名单,则系统就会变得更安全。

按照白名单的思想,应根据业务需求,列出一个允许使用的软件以及软件版本的清单,在此清单外的软件则禁止使用,注意避免出现类似通配符的问题。

>最小权限原则

    要求系统只授予主体必要的权限,而不要过度授权,需要认真梳理业务所需要的权限。

1.3.2 Defense in Depth纵深防御原则:

首先,要在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;

其次,要在正确的地方做正确的事情,在解决根本问题的地方实施针对性的安全方案。

1.3.3 数据与代码分离原则

程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,导致缓冲区溢出等安全问题,使用过滤,编码等手段,把可能造成代码混淆的用户数据清理掉。在Web安全中,由“注入”引起的问题很多,如XSS,X-Path等。

1.3.4 不可预测性原则

不可预测性能有效地对抗基于篡改,伪造的攻击,可以巧妙用于一些敏感数据上,实现往往需要用到加密算法,随机数算法,哈希算法。

 

2.客户端脚本安全

浏览器安全:浏览器本身就是一个客户端,若具备安全功能,则能想安全软件一样对用户上网起到很好的保护作用,另外浏览器安全也是浏览器厂商之间竞争的底牌。

2.1同源策略

同源策略(Same Origin Policy)是浏览器最核心最基本的功能。限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性。

影响源的因素有:host(域名或IP地址),子域名,端口,协议。

对于当前页面来说,页面内存放JavaScript文件的域并不重要,重要的是加载JavaScript页面所在的域是什么。在浏览器中,<script>, <img>, <iframe>, <link>等标签是可以跨域加载资源,而不受同源策略的限制。

XMLHttpRequest受到同源策略的约束,不能跨域访问资源,若能跨域访问资源,则可能会导致一些敏感数泄露。

2.2浏览器沙箱

挂马:在网页中插入一段恶意代码,利用浏览器楼栋执行任意代码的攻击方式。

多进程架构:将浏览器的各个功能模块分开,各个浏览器实例分开,当一个进程崩溃时,也不会影响到其他的进程。

Sandbox:沙箱,泛指资源隔离类模块。设计一般是为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。O__O “…

2.3恶意网址拦截

浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,若用户上网时访问的网址存在于此黑名单中,浏览器就会弹出一个警告页面。

恶意网站分两类:一类是挂马网站,这类网站通常包含恶意的脚本,如JavaScript或Flash,通过利用浏览器的漏洞执行shellcode,在用户电脑中植入木马;另一类是钓鱼网站,通过模仿知名网站的相似网页来欺骗用户。

目前浏览器厂商只是以推送恶意网址黑名单为主,浏览器收到黑名单后,对用户访问的黑名单进行拦截。PhishTank是互联网上免费提供恶意网址黑名单的组织之一。除了恶意网址黑名单拦截功能外,主流浏览器都开始支持EV SSL证书,以增强对安全网站的识别。

2.4浏览器安全

微软在IE8中退出了XSS Filter功能,以对抗反射型XSS。当用户访问的URL中包含了XSS攻击的脚本时,IE就会修改其中的关键字符使得攻击无法完成,并对用户弹出提示框。

Firefox 4推出Content Security Policy(CSP),由服务器端返回一个HTTP头,并在其中描述页面应该遵守的安全策略。

2.5.跨站脚本攻击(XSS)

2.5.1XSS简介

跨站脚本攻击Cross Site Script本来缩写是CSS,为了与层叠样式表(Cascading Style Sheet,CSS)区别,所以在安全领域叫做XSS。

XSS攻击是指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而正在用户浏览网页时,控制用户浏览器的一种攻击。

XSS根据效果分类:

1)反射型XSS

    反射型XSS只是简单地把用户输入的数据“反射”给浏览器。黑客需要诱使用户点击一个恶意链接,才能攻击成功,又叫做”非持久型XSS“。

2)存储型XSS

    存储型XSS会把用户输入的数据存储在服务器端,这种XSS具有很强的稳定性,又叫”持久型XSS“。

3)DOM Based XSS

    DOM Based XSS通过修改页面的DOM节点形成的XSS。

2.5.2XSS攻击进阶

XSS攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,控制用户的浏览器,这些用以完成各种具体功能的恶意脚本即”XSS Payload“。

强大的XSS Payload:

1)构造GET和POST请求

2)XSS钓鱼

    对于验证码,XSS Payload可通过读取页面内容,将验证码的图片URL发送到远程服务器上来实施,攻击者可以在远程XSS后台接收当前验证码,并将验证码的值返回给当前的XSS Payload,从而绕过验证码。

    对于修改密码,利用JavaScript在当前页面上伪造一个登录框,当用户在登录框中输入用户名和密码后,其密码将被发送至黑客的服务器上。

3)识别用户浏览器

    若知道用户使用的浏览器,操作系统,就可能实施一次精准的浏览器内存攻击,最终给用户植入一个木马。

    通过JavaScript脚本识别浏览器版本,最直接的是通过XSS读取浏览器的UserAgent对象,但UserAgent是可以伪造的。

    由于浏览器之间的实现存在差异,不同的浏览器会各自实现一些独特的功能,而同一个浏览器的不同版本之间也可能会有细微差别,通过分辨这些差异,就能准确地判断出浏览器版本。

4)识别用户安装的软件    

    黑客通过判断用户安装的软件,选择对应的浏览器漏洞,最终达到植入木马的目的。

    通过收集常见软件的classid,就可以扫描出用户电脑中安装的软件列表,甚至包括软件的版本。

    在XSS Payload中使用时,可以在Flash的ActionScript中读取system.capabolities对象后,将结果通过ExternalInterface传给页面的JavaScript。

5)CSS History Hack

    通过CSS,获取用户曾经访问过的网站。利用style的visited属性—若用户曾经访问过某个链接,则这个链接的颜色会变得与众不同。

6)获取用户的真实IP地址

    XSS攻击需要借助第三方软件来完成。比如,客户端安装了Java环境(JRE),则XSS可以钓鱼Java Applet的接口获取客户端的本地IP地址。

2.5.3XSS攻击平台:

Attack API:总结了很多能够直接使用XSS Payload,归纳为API的方式。

BeEF:XSS演示平台,演示一个完整的XSS攻击过程,他有一个控制后台,攻击者可以在后台控制前端的一切。

XSS-Proxy:轻量级的XSS攻击平台,通过嵌套iframe的方式可以实时地远程控制被XSS攻击的浏览器。

终极武器:XSS Worm

Samy Worm:首先,MySpace过滤了很多危险的HTML标签,只保留了<a>, <img>,

来源:素黑明

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年6月13日
下一篇 2019年6月13日

相关推荐