分享笔记1 之《白帽子讲web安全》

目录

第一篇 世界观安全
  第1章 我的安全世界观 2
  1.1 web安全简史 2
  1.1.1 中国黑客简史 2
  1.1.2 黑客技术的发展历程 3
  1.1.3 web安全的兴起 5
  1.2 黑帽子,白帽子 6
  1.3 返璞归真,揭秘安全的本质 7
  1.4 破除迷信,没有银弹 9
  1.5 安全三要素 10
  1.6 如何实施安全评估 11
  1.6.1 资产等级划分 12
  1.6.2 威胁分析 13
  1.6.3 风险分析 14
  1.6.4 设计安全方案 15
  1.7 白帽子兵法 16
  1.7.1 secure by default原则 16
  1.7.2 纵深防御原则 18
  1.7.3 数据与代码分离原则 19
  .1.7.4 不可预测性原则 21
  1.8 小结 22
  (附)谁来为漏洞买单? 23
第二篇 客户端脚本安全
  第2章 浏览器安全 26
  2.1 同源策略 26
  2.2 浏览器沙箱 30
  2.3 恶意网址拦截 33
  2.4 高速发展的浏览器安全 36
  2.5 小结 39
  第3章 跨站脚本攻击(xss) 40
  3.1 xss简介 40
  3.2 xss攻击进阶 43
  3.2.1 初探xss payload 43
  3.2.2 强大的xss payload 46
  3.2.3 xss 攻击平台 62
  3.2.4 终极武器:xss worm 64
  3.2.5 调试javascript 73
  3.2.6 xss构造技巧 76
  3.2.7 变废为宝:mission impossible 82
  3.2.8 容易被忽视的角落:flash xss 85
  3.2.9 真的高枕无忧吗:javascript开发框架 87
  3.3 xss的防御 89
  3.3.1 四两拨千斤:httponly 89
  3.3.2 输入检查 93
  3.3.3 输出检查 95
  3.3.4 正确地防御xss 99
  3.3.5 处理富文本 102
  3.3.6 防御dom based xss 103
  3.3.7 换个角度看xss的风险 107
  3.4 小结 107
  第4章 跨站点请求伪造(csrf) 109
  4.1 csrf简介 109
  4.2 csrf进阶 111
  4.2.1 浏览器的cookie策略 111
  4.2.2 p3p头的副作用 113
  4.2.3 get? post? 116
  4.2.4 flash csrf 118
  4.2.5 csrf worm 119
  4.3 csrf的防御 120
  4.3.1 验证码 120
  4.3.2 referer check 120
  4.3.3 anti csrf token 121
  4.4 小结 124
  第5章 点击劫持(clickjacking) 125
  5.1 什么是点击劫持 125
  5.2 flash点击劫持 127
  5.3 图片覆盖攻击 129
  5.4 拖拽劫持与数据窃取 131
  5.5 clickjacking 3.0:触屏劫持 134
  5.6 防御clickjacking 136
  5.6.1 frame busting 136
  5.6.2 x-frame-options 137
  5.7 小结 138
  第6章 html 5 安全 139
  6.1 html 5新标签 139
  6.1.1 新标签的xss 139
  6.1.2 iframe的sandbox 140
  6.1.3 link types: noreferrer 141
  6.1.4 canvas的妙用 141
  6.2 其他安全问题 144
  6.2.1 cross-origin resource sharing 144
  6.2.2 postmessage——跨窗口传递消息 146
  6.2.3 web storage 147
  6.3 小结 150
第三篇 服务器端应用安全
  第7章 注入攻击 152
  7.1 sql注入 152
  7.1.1 盲注(blind injection) 153
  7.1.2 timing attack 155
  7.2 数据库攻击技巧 157
  7.2.1 常见的攻击技巧 157
  7.2.2 命令执行 158
  7.2.3 攻击存储过程 164
  7.2.4 编码问题 165
  7.2.5 sql column truncation 167
  7.3 正确地防御sql注入 170
  7.3.1 使用预编译语句 171
  7.3.2 使用存储过程 172
  7.3.3 检查数据类型 172
  7.3.4 使用安全函数 172
  7.4 其他注入攻击 173
  7.4.1 xml注入 173
  7.4.2 代码注入 174
  7.4.3 crlf注入 176
  7.5 小结 179
  第8章 文件上传漏洞 180
  8.1 文件上传漏洞概述 180
  8.1.1 从fckeditor文件上传漏洞谈起 181
  8.1.2 绕过文件上传检查功能 182
  8.2 功能还是漏洞 183
  8.2.1 apache文件解析问题 184
  8.2.2 iis文件解析问题 185
  8.2.3 php cgi路径解析问题 187
  8.2.4 利用上传文件钓鱼 189
  8.3 设计安全的文件上传功能 190
  8.4 小结 191
  第9章 认证与会话管理 192
  9.1 who am i? 192
  9.2 密码的那些事儿 193
  9.3 多因素认证 195
  9.4 session与认证 196
  9.5 session fixation攻击 198
  9.6 session保持攻击 199
  9.7 单点登录(sso) 201
  9.8 小结 203
  第10章 访问控制 205
  10.1 what can i do? 205
  10.2 垂直权限管理 208
  10.3 水平权限管理 211
  10.4 oauth简介 213
  10.5 小结 219
  第11章 加密算法与随机数 220
  11.1 概述 220
  11.2 stream cipher attack 222
  11.2.1 reused key attack 222
  11.2.2 bit-flipping attack 228
  11.2.3 弱随机iv问题 230
  11.3 wep破解 232
  11.4 ecb模式的缺陷 236
  11.5 padding oracle attack 239
  11.6 密钥管理 251
  11.7 伪随机数问题 253
  11.7.1 弱伪随机数的麻烦 253
  11.7.2 时间真的随机吗 256
  11.7.3 破解伪随机数算法的种子 257
  11.7.4 使用安全的随机数 265
  11.8 小结 265
  (附)understanding md5 length extension attack 267
  第12章 web框架安全 280
  12.1 mvc框架安全 280
  12.2 模板引擎与xss防御 282
  12.3 web框架与csrf防御 285
  12.4 http headers管理 287
  12.5 数据持久层与sql注入 288
  12.6 还能想到什么 289
  12.7 web框架自身安全 289
  12.7.1 struts 2命令执行漏洞 290
  12.7.2 struts 2的问题补丁 291
  12.7.3 spring mvc命令执行漏洞 292
  12.7.4 django命令执行漏洞 293
  12.8 小结 294
  第13章 应用层拒绝服务攻击 295
  13.1 ddos简介 295
  13.2 应用层ddos 297
  13.2.1 cc攻击 297
  13.2.2 限制请求频率 298
  13.2.3 道高一尺,魔高一丈 300
  13.3 验证码的那些事儿 301
  13.4 防御应用层ddos 304
  13.5 资源耗尽攻击 306
  13.5.1 slowloris攻击 306
  13.5.2 http post dos 309
  13.5.3 server limit dos 310
  13.6 一个正则引发的血案:redos 311
  13.7 小结 315
  第14章 php安全 317
  14.1 文件包含漏洞 317
  14.1.1 本地文件包含 319
  14.1.2 远程文件包含 323
  14.1.3 本地文件包含的利用技巧 323
  14.2 变量覆盖漏洞 331
  14.2.1 全局变量覆盖 331
  14.2.2 extract()变量覆盖 334
  14.2.3 遍历初始化变量 334
  14.2.4 import_request_variables变量覆盖 335
  14.2.5 parse_str()变量覆盖 335
  14.3 代码执行漏洞 336
  14.3.1 “危险函数”执行代码 336
  14.3.2 “文件写入”执行代码 343
  14.3.3 其他执行代码方式 344
  14.4 定制安全的php环境 348
  14.5 小结 352
  第15章 web server配置安全 353
  15.1 apache安全 353
  15.2 nginx安全 354
  15.3 jboss远程命令执行 356
  15.4 tomcat远程命令执行 360
  15.5 http parameter pollution 363
  15.6 小结 364
第四篇 互联网公司安全运营
  第16章 互联网业务安全 366
  16.1 产品需要什么样的安全 366
  16.1.1 互联网产品对安全的需求 367
  16.1.2 什么是好的安全方案 368
  16.2 业务逻辑安全 370
  16.2.1 永远改不掉的密码 370
  16.2.2 谁是大赢家 371
  16.2.3 瞒天过海 372
  16.2.4 关于密码取回流程 373
  16.3 账户是如何被盗的 374
  16.3.1 账户被盗的途径 374
  16.3.2 分析账户被盗的原因 376
  16.4 互联网的垃圾 377
  16.4.1 垃圾的危害 377
  16.4.2 垃圾处理 379
  16.5 关于网络钓鱼 380
  16.5.1 钓鱼网站简介 381
  16.5.2 邮件钓鱼 383
  16.5.3 钓鱼网站的防控 385
  16.5.4 网购流程钓鱼 388
  16.6 用户隐私保护 393
  16.6.1 互联网的用户隐私挑战 393
  16.6.2 如何保护用户隐私 394
  16.6.3 do-not-track 396
  16.7 小结 397
  (附)麻烦的终结者 398
  第17章 安全开发流程(sdl) 402
  17.1 sdl简介 402
  17.2 敏捷sdl 406
  17.3 sdl实战经验 407
  17.4 需求分析与设计阶段 409
  17.5 开发阶段 415
  17.5.1 提供安全的函数 415
  17.5.2 代码安全审计工具 417
  17.6 测试阶段 418
  17.7 小结 420
  第18章 安全运营 422
  18.1 把安全运营起来 422
  18.2 漏洞修补流程 423
  18.3 安全监控 424
  18.4 入侵检测 425
  18.5 紧急响应流程 428
  18.6 小结 430
  (附)谈谈互联网企业安全的发展方向 431



作者简介

吴翰清,国内知名安全组织Ph4nt0m的创始人,精通各种攻击与防御技术。2005年加入阿里巴巴(中国)有限公司,现任阿里巴巴安全架构师,先后完成阿里巴巴、淘宝、支付宝的安全评估与安全体系建设工作。主导了阿里巴巴的安全开发流程建设工作,在应用安全领域内有丰富的经验。负责全集团WEB安全工作以及云计算安全。


第一章 世界观安全

1.1 Web安全简史

(1)在计算机安全领域,黑客是一群破坏规则,不喜欢被拘束的人,因此总想着能够找到系统的漏洞,以获得一些规则之外的权力;
(2)对于现代计算机系统来说, 在用户态的最高权限是root(administrator);
(3)exploit: 黑客们使用的漏洞利用代码;
(4)Script Kids:脚本小子;
(5)中国黑客的发展:启蒙时代、黄金时代、黑暗时代;
(6)webshall:可执行脚本。

1.2 黑帽子、白帽子

(1)白帽子:那些精通安全技术,但是工作在反黑客领域的专家们;
(2)黑帽子:利用黑客技术造成破坏,甚至进行网络犯罪的群体。

1.3 返璞归真、揭秘安全的本质

信任域:被划分出来的具有不同信任级别的区域;
信任边界:划分两个不同信任域之间的边界。

1.4 破除迷信,没有银弹

安全是一个持续的过程,在解决安全问题的过程中,不可能一劳永逸,也就是说“没有银弹”。

1.5 安全三要素

(1)安全三要素
机密性(Confidentiality):保护数据内容不能泄露。加密是常见手段;
完整性(Intergrity):保护数据内容是完整的、没有被篡改的;
可用性(Availability):保护资源是“随需而得”。拒绝服务攻击,简称Dos(Denial of Service ),破坏的就是可用性。举例来说,假如有100个车位,有一天一个坏人搬了100块大石头将车位全占了,那么停车场无法再提供正常服务。
(2)扩充要素
可审计性、不可抵赖性。

1.6 如何实施安全评估

(1)4个阶段:资产等级划分、威胁分析、风险分析、确认解决方案;
(2)互联网安全的核心问题:数据安全的问题;
(3)威胁:在安全领域里,可能造成危害的来源;
威胁分析:把所有的威胁都找出来,一般采用头脑风暴 法或者威胁建模(STRIDE模型)

(4)风险:在安全领域里,可能会出现的损失;
(5)漏洞:系统中可能被威胁利用以造成危害的地方
(6)风险分析:Risk=Probability*Damage Potential

在DREAD模型里,每一个因素都可以分为高、中、低三个等级。在上表中,高、中、低三个等级分别以3、2、1的分数代表其权重值。

1.7 白帽子兵法

(1)Secure By Default原则
白名单,黑名单:实际上,Secure By Default原则,也可以归纳为白名单,黑名单的思想。如果更多地使用白名单,那么系统就会变得更安全。

在Flash跨域访问请求里,是通过检查目标资源服务器端的crossdomain.xml文件来验证是否允许客户端的Flash跨域发起请求的,它使用的是白名单的思想。比如下面这个策略文件:

<cross-domain-policy>
<allow-access-from domain="*.taobao.com"/>
<allow-access-from domain="*.taobao.net"/>
<allow-access-from domain="*.taobaocdn.com"/>
<allow-access-from domain="*.tbcdn.cn"/>
</cross-domain-policy>

指定了只允许特定域的Flash对本域发起请求。可是如果这个信任列表中的域名变得不可信了,那么问题就随之而来。比如:

<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

通配符“”,代表来自任意域的Flash都能访问本域的数据,因此就造成了安全隐患。所以在选择使用白名单时,需要注意避免出现类似通配符“”的问题。

(2)最小权限原则:要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统,网络,应用,数据库出错的机会。

(3)纵深防御原则:包含两层含义:1.要在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;2.要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。

(4)数据与代码分离原则:适用于各种由于“注入”而引发安全问题的场景。
实际上,缓冲区溢出,也可以认为是程序违背了这一原则的后果——程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生。

(5)不可预测性原则:从克服攻击方法的角度看问题。微软使用的ASLR技术,在较新版本的Linux内核中也支持。在ASLR的控制下,一个程序每次启动时,其进程的栈基址都不相同,具有一定的随机性,对于攻击者来说,这就是“不可预测性”。能有效地对抗基于篡改,伪造的攻击。不可预测性的实现往往需要用到加密算法,随机数算法,哈希算法,好好利用这条规则,在设计安全方案时往往会事半功倍。

1.8 小结

安全是一门朴素的学问,也是一种平衡的艺术。

总结

几种常见的web漏洞:

1.XSS跨站脚本攻击
XSS跨站脚本攻击,通常指黑客通过”HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。XSS根据效果的不同还分为:反射型XSS、存储型XSS、DOM Based XSS

2.CSRF跨站伪造请求攻击
CSRF的全名是Cross Site Request Forgery,翻译成中文就是跨站点请求伪造。也就是利用用户已登录的身份,以用户的名义发送恶意请求,完成非法操作。

3.点击劫持
点击劫持(Click Jacking)是一种视觉欺骗手段,攻击者使用一个透明不可见的iframe,覆盖到网站上,诱使用户进行操作,点击攻击者想要用户点击的位置。

4.SQL注入
SQL注入(SQL Injection),是最常见影响非常广泛的漏洞。攻击者把SQL命令插入到web表单的输入域或者页面请求的查询字符串,执行恶意的SQL命令,从而入侵数据库来执行未授意的任意查询。

5.文件上传攻击
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最直接有效的。

6.Session Fixation攻击
举个例子,如果A将汽车买给了B,但是A并没有把所有的车钥匙都交给B,自己私藏了一把。这时候如果B没有给车换锁的话,A仍然可能用私藏的钥匙使用汽车。这个没有换“锁”而导致的安全问题,就是Session Fixation问题。

分享笔记1 之《白帽子讲web安全》相关推荐

  1. 《白帽子讲Web安全》学习笔记

    一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...

  2. 白帽子讲web安全 ——读书笔记:术语和理论

    最近心血来潮,对安全这些略感兴趣,就买了本 白帽子讲web安全 看看 ,这里做个读书笔记吧!方便啥时候忘了再看一下. exploit--漏洞利用代码 Script kids --脚本小子,利用expl ...

  3. 白帽子讲WEB安全读书笔记(慢慢更新)

    道哥写的白帽子讲WEB安全的读书笔记 文章目录 2020.3.23 ◆ 前言 ◆ 第一篇 世界观安全 1.1 Web安全简史 >> 1.1.1 中国黑客简史 >> 1.1.2 ...

  4. 《白帽子讲Web安全》读后感 —— 对道哥的致敬

    <白帽子讲Web安全>读后感 --Deep Blue (一个安全小兵的感受) 这是一篇作业:这是一篇读后感:这是一篇记录安全的感悟:这是一篇对道哥的敬仰:这是我安全启蒙的钥匙...... ...

  5. 白帽子讲Web安全(纪念版)

    作者:吴翰清 出版社: 电子工业出版社 品牌:博文视点 出版时间:2021-05-01 白帽子讲Web安全(纪念版)

  6. 白帽子讲web安全——认证与会话管理

    在看白帽子讲web安全,刚好看到认证与会话管理:也就是我们在平常渗透测试中遇到最多的登录页面,也即是用户名和密码认证方式,这是最常见的认证方式. 了解两个概念:认证和授权 1):认证的目的是为了认出用 ...

  7. 读《白帽子讲Web安全》之客户端脚本安全(一)

    2019独角兽企业重金招聘Python工程师标准>>> [第2章  浏览器安全] 1.同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能. ...

  8. 读白帽子讲WEB安全,摘要

    读<白帽子讲WEB安全>摘要 文章目录 我的安全世界观 安全三要素-CIA 如何实施安全评估 白帽子兵法 客户端安全 浏览器安全 同源策略 浏览器沙箱 恶意网址拦截 高速发展的浏览器安全 ...

  9. 白帽子讲web安全之 浏览器安全

    白帽子讲web安全之 浏览器安全 (一些内容属于个人理解,如有错误请不吝指正) 同源策略 概念 所谓同源,一般是指域名.协议.端口相同.一般来说,只有同源的页面可以互相读取彼此的数据,或者改变彼此在浏 ...

最新文章

  1. ueditor上传组件显示乱码_最全面的移动端 UI组件设计详解:中篇
  2. 通过loganalyzer展示数据库中的日志
  3. 网络丢包现象分析处理指导书5
  4. 《深入理解Java虚拟机》笔记01 -- 运行时数据区
  5. 实现Singleton 模式——七种实现方式
  6. Cisco PT模拟实验(12) 路由器静态路由的配置
  7. java向指定文件写入内容
  8. 运动并不是最好的减肥办法,控制饮食也不是
  9. java 多态判断非空_Java 多态
  10. pcb文件转成原理图_初学PCB设计,到底该学习哪款软件?
  11. A - 1 CodeForces - 500A
  12. 提示缺少msvcpNNN.dll怎么办
  13. 身份证号码校验(前端,java)
  14. android 渐变动画,Android-实现背景渐变动画
  15. 图形 1.3 纹理的秘密
  16. Photoshop二次开发接口介绍
  17. Aras Innovator: AML包
  18. idea关闭html校验,怎么样关闭IntelliJ IDEA的javascript提示
  19. Oracle数据库实例之进程架构(二)
  20. Ubuntu 18.04缺少libstdc++.so.6共享库解决方案

热门文章

  1. Element UI table超出文本部分显示省略号,鼠标悬浮显示全部内容
  2. 将docker镜像上传到dockerhub
  3. Dialog 使用(详细版)
  4. mui.previewimage的图片预览
  5. 大数据系列教程(4)Flink 使用 DataStream API 进行欺诈检测
  6. 微信小程序wx.showToast修改icon图标
  7. plt.figure、plt.subplot介绍以及绘制图中图(含代码)
  8. 逻辑斯蒂回归分类算法
  9. Win10任务栏卡死怎么办?这3个方法快收藏!
  10. 数据分析真的能驱动用户快速增长么?