收藏 分享(赏)

读书分享会 - 白帽子讲Web安全.ppt

上传人:精品资料 文档编号:10516986 上传时间:2019-11-24 格式:PPT 页数:85 大小:4.50MB
下载 相关 举报
读书分享会 - 白帽子讲Web安全.ppt_第1页
第1页 / 共85页
读书分享会 - 白帽子讲Web安全.ppt_第2页
第2页 / 共85页
读书分享会 - 白帽子讲Web安全.ppt_第3页
第3页 / 共85页
读书分享会 - 白帽子讲Web安全.ppt_第4页
第4页 / 共85页
读书分享会 - 白帽子讲Web安全.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

1、读书分享会,白帽子讲web安全,白帽子讲web安全,全书布局,Web客户端脚本安全 服务器端应用安全,客户端脚本安全,客户端脚本安全,浏览器安全,跨站脚本攻击( XSS ),点击劫持,跨站点请求伪造 (CSRF),客户端脚本安全,浏览器安全,跨站脚本攻击( XSS ),点击劫持,跨站点请求伪造 (CSRF),假设要删除 id=156714243 的博客文章,攻击者先在他的域中构造一个页面 http:/ 因为删除这篇博客的请求是攻击者伪造的,因此叫做“跨站点请求伪造”。,跨站点请求伪造( CSRF )示例,实质: 攻击者盗用了你的身份,以你的名义发送恶意请求 防御: 1. 验证码 2. 检查 H

2、TTP Referer 字段 3. 使用 Anti CSRF Token,跨站点请求伪造( CSRF ),客户端脚本安全,浏览器安全,跨站脚本攻击( XSS ),点击劫持,跨站点请求伪造 (CSRF),透明iframe,非透明iframe,服务器端应用安全,注入攻击,文件上传漏洞,认证,加密算法,应用层DDOS,访问控制,= M mod n,分组加密、流加密、非对称加密,Secure By Default原则 纵深防御原则 数据与代码分离原则 不可预测性原则,10.安全开发,10.1 白帽子兵法,10.阅读本书后的启发,10.2 安全开发流程(SDL),10.阅读本书后的启发,10.3 企业研

3、发安全流程,10.阅读本书后的启发,10.3 企业研发安全流程,谢谢,附录,1.1 同源策略,同源策略:是浏览器最核心也是最基本的安全功能。其限制来自不同源的“document”或脚本,对当前“document”读取或者设置某些属性。 判定是否同源:host、子域名、端口、协议 同源的例外:、等标签可以跨域请求资源,不受同源策略的限制。,1.浏览器安全,1.2 浏览器沙箱,沙箱(SandBox):让不可信的代码运行在一定的环境中,限制其访问隔离区之外的资源。 浏览器多进程架构:渲染引擎由SandBox隔离,1.浏览器安全,1.3 恶意网址拦截,恶意网址黑名单 分为两类: (1)挂马网站,包含恶

4、意脚本,通过浏览器漏洞执行shellcode植入木马; (2)钓鱼类网站,欺骗用户。,1.浏览器安全,1.3 恶意网址拦截,1.浏览器安全,2.1 XSS简介,跨站脚本攻击(Cross Site Script),指黑客通过“HTML注入”篡改页面,插入恶意脚本,当用户浏览网页时,恶意脚本被执行,从而达到攻击目的。,2. 跨站脚本攻击( XSS ),2.2 XSS分类, 反射型XSS:简单把用户输入的数据“反射”给浏览器。需要用户点击一个恶意链接才能攻击成功。浏览器 - 后端 - 浏览器,2. 跨站脚本攻击( XSS ),2.2 XSS分类,2. 跨站脚本攻击( XSS ),反射型XSS示例:假

5、设某个网站的后端代码为,在正常情况下,用户向param提交的数据会展示到页面中,比如提交:,2.2 XSS分类,2. 跨站脚本攻击( XSS ),会得到如下结果:,此时查看页面源代码,可以看到:,2.2 XSS分类,2. 跨站脚本攻击( XSS ),但是如果提交一段HTML代码:,则返回的网页源码是:,2.2 XSS分类,2. 跨站脚本攻击( XSS ),脚本被执行,弹出一个窗口:,2.2 XSS分类, 存储型XSS:把用户输入的数据“存储”在服务器端,只需要用户访问包含恶意脚本的页面。浏览器 - 后端 - 数据库 - 后端 - 浏览器 DOM Based XSS:通过修改页面的DOM节点形成

6、的XSS,从效果上来说是反射型XSS。,2. 跨站脚本攻击( XSS ),2.3 XSS Payload,XSS攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,控制用户的浏览器。这些用以完成各种具体功能的恶意脚本,被称为“XSS Payload”。一般是JS脚本。 例如 :Cookie劫持,2. 跨站脚本攻击( XSS ),2.4 强大的XSS Payload,构造GET和POST请求 XSS钓鱼:在当前页面伪造一个登录框,骗取用户账号密码,2. 跨站脚本攻击( XSS ),2.4 强大的XSS Payload, 识别用户浏览器版本、系统,然后可能给电脑植入木马 识别用户

7、安装的软件 CSS history hack:某些浏览器上,被访问过的链接,颜色会不同,恶意脚本据此搜集用户的访问记录 获取用户的真实IP地址,2. 跨站脚本攻击( XSS ),2.5 终极武器 XSS Worm,里程碑:Samy Worm在2005年,年仅19岁的Samy Kamkar发起了对MyS的XSS Worm攻击。Samy Kamkar的蠕虫在短短几小时内就感染了100万用户它在每个用户的自我简介后边加了一句话:“but most of all, Samy is my hero.”2007年百度空间蠕虫,2. 跨站脚本攻击( XSS ),2.6 XSS的防御, 四两拨千斤的HttpO

8、nly:设置之后JS脚本就无法读取到cookie的值,从而有效防御XSS cookie劫持。 输入检查:过滤或编码一些特殊字符,比如、等,使其无法构成脚本。缺点是可能会改变用户的语义,比如1+13,无论是被过滤还是替换。 输出检查:将一些字符转义或编码,或者将变量输出限制在引号内。,2. 跨站脚本攻击( XSS ),3.1 一个简单的CSRF示例,假设要删除 id=156714243 的博客文章,攻击者先在他的域中构造一个页面http:/ 因为删除这篇博客的请求是攻击者伪造的,因此叫做“跨站点请求伪造”。,3. 跨站点请求伪造( CSRF ),刚才提到的攻击之所以能够成功,是因为GET请求的时

9、候带上了cookie,通过了博客网站的认证。 Cookie分为“会话cookie”和“本地cookie”两种。 攻击者想攻击成功,要么诱导用户在访问他的页面前先登录目标站点,使会话cookie有效;要么利用部分浏览器的漏洞,允许发送本地cookie。 大部分浏览器默认禁止、 、 发送本地cookie,但如果网站返回的HTTP头中包含P3P头的话,将不再拦截本地cookie的发送。,3. 跨站点请求伪造( CSRF ),示例分析,限制表单形式提交请求? 限制 POST 方法提交请求?,3. 跨站点请求伪造( CSRF ),3.2 GET?POST?,3. 跨站点请求伪造( CSRF ),3.3

10、CSRF Worm,08年百度用户中心,短消息发送漏洞:,查询出某个用户的所有好友的漏洞:,CSRF Worm:让一个百度用户查看恶意页面后,将给他的所有好友发送一条短消息,然后这条短消息中又包含一张图片,其地址再次指向CSRF页面,使得这些好友再次将消息发给他们的好友,这个Worm因此得以传播。,1. 验证码:简单有效,但过多则影响用户体验 2. Referer Check:检查请求是否来自合法的“源”。但不全面,有些情况下浏览器不会发送referal 3. 使用 Anti CSRF Token:CSRF之所以能够攻击成功,是因为重要操作的所有参数都能够被攻击者猜测到。因此可以在URL中加入

11、一个随机的Token,3. 跨站点请求伪造( CSRF ),3.4 CSRF的防御,点击劫持:是一种视觉上的欺骗手段。 两种方式: 攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,让用户将在不知情的情况下点击透明的iframe页面; 攻击者使用一张非透明的图片覆盖在网页,遮挡网页原有位置的含义。,4.点击劫持(Click Jacking),4.1 点击劫持的定义,4.点击劫持(Click Jacking),示例:透明的iframe覆盖,4.点击劫持(Click Jacking),示例:iframe覆盖,a. Frame Busting:禁用iframe。缺点

12、:因为是js写的,控制能力不是特别强,容易被绕过。 b. X-Frame-Options:专为解决clickjacking而生。能够通过选项确定是否加载frame页面、只加载同源frame、只加载允许的地址。,4.点击劫持(Click Jacking),4.2 点击劫持的防御,服务器端应用安全,5. 注入攻击 6. 文件上传漏洞 7. 认证与会话管理 8. 加密算法与随机数 9. 应用层拒绝服务攻击,注入攻击的本质:把用户输入的数据当做代码执行。 两个关键条件: 用户能够控制输入; 原本程序要执行的代码拼接了用户输入的数据。,5.注入攻击,5.1 注入攻击的定义,5.注入攻击,5.2 SQL注

13、入:示例,假设服务器代码如下:,当用户输入“Beijing”,则SQL语句会执行:,5.注入攻击,5.2 SQL注入:示例,但是,当用户输入:,SQL语句就变为:,原本正常执行的查询语句,现在变成了查询完后,再执行一个drop表的操作,而这个操作,是用户构造了恶意数据的结果。,5.注入攻击,5.2 SQL注入:判断是否存在SQL注入的漏洞,方法1. 盲注,执行的SQL语句为:,比如, 一个应用的URL如下:,5.注入攻击,5.2 SQL注入:判断是否存在SQL注入的漏洞,实际执行的SQL语句就会变成:,如果攻击者构造如下的条件语句:,因为“and 1=2”永远是一个假命题,所以这条SQL语句的

14、“and”条件永远无法成立。对于Web应用来说,也不会将结果返回给用户,攻击者看到的页面结果将为空或者是一个出错页面。,5.注入攻击,5.2 SQL注入:判断是否存在SQL注入的漏洞,为了进一步确认注入是否存在,攻击者继续构造如下请求进行验证:,当攻击者构造条件“and 1=1”时,如果页面正常返回了,则说明SQL语句的“and”成功执行,那么就可以断定“id”参数存在SQL注入漏洞了。,当简单的盲注不起作用的时候,比如简单的“and 1=2”看不出异常的时候,使用Timing Attack. 比如调用数据库函数BENCHMARK()函数,让一个函数执行若干次,通过返回结果的时间长短的变化,可

15、以判断注入语句是否执行成功。,5.注入攻击,5.2 SQL注入:判断是否存在SQL注入的漏洞,方法2. Timing Attack,1. 按照字符的范围,猜解username和password下面这段Payload,则是利用union select来分别确认表名admin是否存在,列名passwd是否存在:,5.注入攻击,5.3 数据库攻击技巧,进一步,想要猜解出username和password具体的值,可以通过判断字符的范围,一步步读出来:,5.注入攻击,5.3 数据库攻击技巧,2. 命令执行:利用“用户自定义函数”来执行命令 3. 攻击存储过程:某些内置的存储过程功能强大,给攻击者带来便

16、利:可以启动xp_cmdshell,可以操作注册表;另有存储过程自身的注入,5.注入攻击,5.3 数据库攻击技巧,4. 编码问题 注入攻击中常常会用到单引号 、双引号 ”等特殊字符。所以在应用中,开发者为了安全,经常会使用转义字符“”来转义这些特殊字符。但当数据库使用了“宽字符集”时,可能会产生一些意想不到的漏洞。 而在进入数据库之前,在Web语言中则没有考虑到双字节字符的问题,双字节字符会被认为是两个字节。会在特殊字符前增加一个转义字符“”。,5.注入攻击,5.3 数据库攻击技巧,假如攻击者输入:0xbf27 or 1=1 ,即:,5.注入攻击,1. 简单的转义并不能解决问题,多增加黑名单条

17、目也不好 2. 最佳方法:预编译SQL语句,绑定变量。这样一来,即便输入Tom or 1=1也只会将其整个输入当做username来查询。 3. 使用存储过程,与预编译类似,不过要严防存储过程注入 4. 检查数据类型,只允许输入某种类型的数据,如integer, date之类。 5. 最小权限原则,避免应用web应用直接使用root等高权限账户直连数据库。,5.注入攻击,5.4 防御SQL注入,1. XML注入攻击,类似于HTML注入攻击 2. 代码注入,利用编程语言中不安全的函数 3. CRLF注入,通过注入rn改变语义,典型攻击如“注入HTTP头”,在两次rn后构造恶意HTML脚本,实现X

18、SS攻击,5.注入攻击,5.5 其他注入攻击,认证的目的是为了认出用户是谁。 分类: 单因素认证:一般就是单个密码; 双因素认证:密码+手机验证码/数字证书/U盾,6.认证与会话管理,6.1 认证,设置密码的注意点: OWASP建议,长度方面 6,重要的应用考虑双因素认证;多种字符组合,不连续,不出现个人信息等。 暴力破解:暴力枚举用户id,而非用户密码,6.认证与会话管理,6.2 密码的那些事儿,密码的保存:密码必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中。 反例:坑爹的CSDN,明文保存密码。,6.认证与会话管理,6.2 密码的那些事儿,业界普遍做法:在用户注册时就

19、将密码哈希(如MD5)后保存在数据库中,登陆验证时仅仅是将用户提交的密码哈希值与数据库中的对比。 MD5的破解:彩虹表 MD5防破解:增加一个Salt,变成 :MD5(username+password+Salt),6.认证与会话管理,6.2 密码的那些事儿,SessionID:仅登陆时使用密码认证,之后使用SessionID。 SessionID 一旦在生命周期内被窃取,就等同于账户失窃。 SessionID的保存:cookie 或 referer Session劫持与cookie劫持。 Session Fixation攻击和Session保持攻击,6.认证与会话管理,6.3 Session

20、与认证,7.访问控制,先完成后面的章节,有必要则增加这一节 文件设置ACL(访问控制列表),类似于Linux中的r/w/x,对文件拥有者、用户组、其他用户的权限各不同。这就是访问控制的一种。当访问控制出问题时,可能出问题,比如用户能够访问管理员才能访问的页面,顺便制造一些破坏之类。 10.2 垂直权限管理 实现定义出不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一个权限的集合。而系统的所有用户会被分配到不同的角色中。在系统验证权限时,只需要根据用户所属的角色,就可以根据该角色所拥有的权限进行授权了。 垂直权限管理存在的问题:用户越权访问,比较典型的是用户访问了不属于他的数据。P211

21、有优酷的例子。这个问题就叫做水平权限管理问题。很难解决。 OAuth简介:为了让互联网更开放 展示了三方之间的授权,比如在微博上想要分享保存在某网站相册里的照片,则微博账户首先要跳转到目标网站,登陆目标网站,目标网站授权微博,最后微博才能访问这个网站的照片。,8.加密算法与随机数,先完成后面的章节,有必要则增加这一节 加密算法比较复杂,不好讲。可以强调一下保护密钥的重要性。 真正的安全,是破解消息的成本比消息的价值大得多。 流密码加密算法的攻击方式: reused key attack: 不需要知道密钥就能破解加密的消息。 bit-flipping attack: 通过明文和密文,伪造密文获得

22、管理员权限。构造任意明文的密文(P239 padding oracle attack) wep破解,蹭WiFi; 分组加密算法的缺陷:。 密钥的安全性:也就是密钥管理,不要把密钥直接包含在代码中。因为可能被方向编译而泄露,也可能被软件开发团队成员在看代码时看到而泄密。一般将密钥独立保存比较好。 贝尔实验室的里德博士告诫人们记住伟大的诺伊曼的忠告:“任何人如果相信计算机能够产生出真正的随机的数序组都是疯子。” 随机数不是真随机。随机数的产生一般需要随机因子,但是随机因子是否足够随机呢?这很关键。比如有个例子,它的随机因子竟然是进程的pid,而pid最大也就32768,可以说是非常有限的,很容易被

23、遍历。再比如在C/C+中 rand() 和 srand(time()。时间也不一定真随机,因为时间是递增的,使用时间生成密码,很容易被人猜出。P257。 破解伪随机数的种子。种子一样,则随机数序列一样。比如使用时间做种子,srand()生成的时间有100万个,那也能很快破解。比如P260的程序,知道第一个随机数之后,就能去获取种子,然后把剩余的随机数计算出来。 P265 使用安全的随机数。,DDOS,全称Distributed Denial of Service,即分布式拒绝服务。 DDOS本质是利用合理的请求造成资源过载,导致服务不可用。,9.应用层拒绝服务攻击,9.1 网络层DDOS简介,

24、9.应用层拒绝服务攻击,9.1 网络层DDOS简介,SYN flood DDOS: 利用TCP三次握手的缺陷,9.应用层拒绝服务攻击,9.1 网络层DDOS简介,应用层DDOS:不同于网络层DDOS,由于发生在应用层,因此TCP三次握手已经完成,连接已经建立。,9.应用层拒绝服务攻击,9.2 应用层DDOS,CC攻击: Challenge Collapasar 原理:对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。(查询数据库、读/写硬盘文件等) 攻击方式举例:在黑客入侵了一个流量很大的网站后,通过篡改页面,将巨大的用户流量分流到目标网站。,9.应用层拒绝服务攻击,

25、9.3 应用层DDOS之CC攻击,限制每个“客户端”的请求频率 从另外几方面着手: 应用代码要做好性能优化 优化网络架构、负载均衡 验证码,9.应用层拒绝服务攻击,9.4 应用层DDOS的防御,分类: Slowloris攻击、 HTTP POST DOS 1. Slowloris攻击:原理是以极低的速度往服务器发送HTTP请求 攻击过程:构造畸形的HTTP请求。在正常的HTTP包头中,以两个CLRF表示HTTP Headers部分结束。由于Web Server只收到了一个rn,因此将认为HTTP Headers部分没有结束,并保持此连接不释放,继续等待完整的请求。此时客户端再发送任意HTTP头

26、,保持住连接即可。当构造多个连接后,服务器的连接数很快就会达到上限,完成DDOS。,9.应用层拒绝服务攻击,9.5 资源耗尽攻击,2. HTTP POST DOS攻击:类似于Slowloris,其原理是在发送HTTP POST包时,指定一个非常大的Content-Length值,然后以很低的速度发包,比如10100s发一个字节,保持住这个连接不断开。,9.应用层拒绝服务攻击,9.5 资源耗尽攻击,私钥密码(对称密码) AES 公钥密码(非对称密码) RSA 混合密码系统,13. 密码技术,13.1 密码技术分类,2. HTTP POST DOS攻击:类似于Slowloris,其原理是在发送HT

27、TP POST包时,指定一个非常大的Content-Length值,然后以很低的速度发包,比如10100s发一个字节,保持住这个连接不断开。,9.应用层拒绝服务攻击,9.5 资源耗尽攻击,2. HTTP POST DOS攻击:类似于Slowloris,其原理是在发送HTTP POST包时,指定一个非常大的Content-Length值,然后以很低的速度发包,比如10100s发一个字节,保持住这个连接不断开。,9.应用层拒绝服务攻击,9.5 资源耗尽攻击,2. HTTP POST DOS攻击:类似于Slowloris,其原理是在发送HTTP POST包时,指定一个非常大的Content-Length值,然后以很低的速度发包,比如10100s发一个字节,保持住这个连接不断开。,9.应用层拒绝服务攻击,9.5 资源耗尽攻击,Secure By Default原则 纵深防御原则 数据与代码分离原则 不可预测性原则,10.安全开发,10.1 白帽子兵法,10.阅读本书后的启发,10.2 安全开发流程(SDL),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报