前言 1
第1章 脆弱的Web应用程序 1
1.1 所谓的“安全” 1
1.2 定义Web程序安全漏洞 3
1.2.1 漏洞的概念 3
1.2.2 漏洞的特性 3
1.2.3 系统的信任等级 4
1.2.4 漏洞与系统攻击之间的关系 5
1.2.5 Web应用程序安全漏洞的引入 6
1.3 Web程序漏洞的分类 6
1.4 引发漏洞的始因 7
1.5 Web漏洞攻击的趋势 8
1.5.1 蠕虫化 8
1.5.2 病毒化 9
1.5.3 恶意化 9
1.5.4 Oday化 9
第2章 基础知识 11
2.1 Web―世界的奇迹 11
2.1.1 什么是Web 11
2.1.2 Web运行原理 12
2.1.3 Web技术 12
2.1.4 Web2.0带来的变革 13
2.2 Web程序的开发 13
2.2.1 服务端开发语言 14
2.2.2 客户端开发语言 15
2.3 Web程序运行环境 23
2.3.1 常见的WebServer 23
2.3.2 WebServer与服务器系统 25
2.3.3 状态码 26
2.4 Web程序的数据通信 28
2.4.1 HTTP/HTTPS协议 28
2.4.2 Cookies的作用 29
2.4.3 GET与POST数据提交 31
2.5 Web应用程序数据加密方式 33
2.5.1 MD5加密 33
2.5.2 URL Encode 35
2.5.3 Base64加密 36
第3章 搭建攻击平台 39
3.1 发掘工具的准备 39
3.1.1 浏览器 39
3.1.2 编码工具 42
3.1.3 监视工具 44
3.1.4 调试工具 46
3.2 虚拟机 47
3.2.1 虚拟机的概念 47
3.2.2 VMware的安装使用 48
3.3 安装Web程序运行环境 54
3.3.1 IIS环境的搭建 54
3.3.2 XAMPP的使用 54
3.3.3 Tomcat的安装 55
第4章 最广泛的漏洞―XSS 57
4.1 初次接触xSS漏洞 57
4.1.1 艺术化的XSS漏洞 57
4.1.2 StoredXSS漏洞 58
4.1.3 DOM-BasedXSS漏洞 59
4.2 手工发掘XSS漏洞的方法 60
4.2.1 寻找关键变量 60
4.2.2 页面表单测试 66
4.2.3 反馈信息观察 68
4.3 传统的xSS漏洞利用 69
4.3.1 Cookies欺骗 69
4.3.2 隐蔽网页木马 72
4.3.3 电子邮件中的xSS攻击 74
4.4 无可匹敌的xSS木马 76
4.5 可怕的xSS蠕虫 80
4.6 飞天论坛xSS漏洞发掘实例 82
4.7 防范xSS漏洞 86
4.7.1 过滤与加密变型 86
4.7.2 客户端的防范 87
第5章 针对数据库的攻击―SQL注入漏洞 89
5.1 常见的网站数据库 89
5.2 SQL简介 91
5.3 注入思想的诞生 94
5.4 IIS的“友好”帮助 96
5.5 发掘代码中的注入漏洞 98
5.5.1 异同比较测试 98
5.5.2 ASP环境 99
5.5.3 PHP环境 99
5.5.4 JSP环境 101
5.5.5 断点调试技巧 101
5.5.6 LifeType 1.06注入漏洞发掘实例 102
5.6 高级SQL注入技术 104
5.6.1 可怕的UNION查询 104
5.6.2 神奇的“盲注” 106
5.6.3 利用SQL Server执行系统命令 108
5.6.4 数据备份引发的攻击 108
5.6.5 危险的跨库查询 111
5.6.6 Oracle数据库的注入攻击 114
5.7 MySQL特定环境下SQL注入攻击 116
5.8 出色的SQL注入利器―NBSI 119
5.9 批量式注入攻击 120
5.10 对SQL注入漏洞说NO! 123
第6章 通过WEB控制操作系统 125
6.1 最轻便的木马程序―WebShell 127
6.1.1 为什么会产生WebShell. 127
6.1.2 WebShell的分类 128
6.1.3 B/S型WebShell 137
6.1.4 剖析“海阳顶端” 140
6.1.5 独树一帜的XML木马 141
6.1.6 WebShell提权 143
6.2 命令执行漏洞 144
6.2.1 查找致命函数 144
6.2.2 动网论坛8.0命令执行式漏洞解析 146
6.2.3 防范命令执行式漏洞 148
第7章 引用文件带来的危害 150
7.1 不当的include函数使用 150
7.2 跨取目录的方法 154
7.3 远程利用文件包含式漏洞 155
7.4 突破本地型文件包含式漏洞 156
7.5 DedeCMS本地包含式漏洞发掘实例 158
7.6 防范包含式漏洞 159
第8章 堪称经典的上传漏洞 161
8.1 2004年的一份安全报告 164
8.2 重用代码的弊端 166
8.3 伪造数据包探测技术 167
8.4 脚本代码分析技术 172
8.4.1 逻辑型上传漏洞 172
8.4.2 过滤不严型上传漏洞 174
8.4.3 绕过外部数据限制 175
8.5 Windows Server2003+I1S6下的特殊利用 177
8.6 切断上传“后门” 178
第9章 对Web应用程序做嗅探 180
9.1 闭源程序的“敲门砖” 181
9.2 尴尬的错误提示 181
9.2.1 数据库出错 182
9.2.2 Web应用程序运行错误 183
9.2.3 暴库漏洞的出现 184
9.2.4 禁止错误提示 185
9.3 Web应用程序版本判断 188
9.4 搜索引擎的贡献 191
第10章 混乱的Web程序员 194
10.1 全局变量带来的灾难 194
10.2 貌似严密的双条件认证 195
10.3 大小写的敏感 198
10.4 代码前后不一致 199
10.5 不严谨的数据信任 201
第11章 渗透编译型Web程序 203
11.1 何谓编译型Web程序 203
11.2 缓冲区溢出 204
11.2.1 ShellCode的概念 204
11.2.2 栈溢出 208
11.2.3 堆溢出 209
11.2.4 检测缓冲区溢出漏洞 210
11.3 整数型溢出 213
11.4 格式化串漏洞 214
11.5 无法“停止”的错误 218
11.6 超越下界的漏洞 219
第12章 自动化漏洞发掘技术 221
12.1 黑盒测试与白盒测试 221
12.1.1 等价类划分法 222
12.1.2 边界值分析法 223
12.1.3 错误推测法 224
12.1.4 因果图法 224
12.1.5 判定表驱动法 225
12.1.6 正交实验设计法 225
12.1.7 黑盒测试的利弊 225
12.1.8 白盒测试与灰盒测试 226
12.2 Fuzzing的魅力 226
12.3 多功能的WebFuzz 230
12.4 另竖旗帜的Web Vulnerability Scanner 235
12.5 漏洞攻击回放 240
12.6 Fuzzing测试的缺陷 241
12.7 未来的发展趋势 242
12.7.1 智能化 242
12.7.2 高效化 242
12.7.3 准确化 243
12.7.4 框架化 243
12.8 程序化代码审计 243
12.8.1 代码审计技术 243
12.8.2 实践PSA4自动化审计工具 245
第13章 穿透安全防范机制 249
13.1 绕过常见xSS过滤方法 249
13.2 失效的防注入系统 252
13.2.1 防注入系统的实现原理 252
13.2.2 绕过防注入系统的方法 254
13.3 万能的PHP双编码漏洞 256
13.4 “#”字符号的变形 259
13.5 简陋的客户端限制 261
13.6 图像识别与验证码 263
第14章 新起的Web程序攻击 273
14.1 数据库插马 273
14.2 DOS数据库 275
14.3 XPath注入攻击 278
14.4 JSON劫持 280
14.5 Session Attack 281
14.6 SQL注入型XSS攻击 284
14.7 旁敲侧击的新注入攻击 284
参考文献及参考资料 289