第1章 Web应用攻击的基础知识 1
1.1 什么是Web应用攻击 1
1.1.1 GUIWeb攻击 1
1.1.2 URI攻击 3
1.1.3 请求方法、请求头和数据体 4
1.1.4 资源 5
1.1.5 认证,会话和授权 6
1.1.6 Web客户端和HTML 6
1.1.7 其他协议 7
1.2 为什么攻击Web应用 8
1.3 何人、何时、何地攻击Web应用 9
1.3.1 安全薄弱点 10
1.4 如何攻击Web应用程序 10
1.4.1 Web浏览器 11
1.4.2 浏览器扩展 12
1.4.3 HTTP代理 16
1.4.4 命令行工具 21
1.4.5 一些老工具 22
1.5 小结 22
1.6 参考和进一步阅读 22
第2章 剖析 25
2.1 架构剖析 25
2.1.1 踩点和扫描:定义范围 26
2.1.2 Banner抓取 26
2.1.3 高级HTTP指纹 27
2.1.4 中间件架构 31
2.2 应用剖析 37
2.2.1 手工检测 38
2.2.2 使用搜索工具进行剖析 56
2.2.3 自动Web爬行工具 60
2.2.4 常见Web应用剖析 65
2.3 常用对抗措施 69
2.3.1 一条警示 70
2.3.2 保护目录 70
2.3.3 保护包含文件 71
2.3.4 一些其他技巧 71
2.4 小结 71
2.5 参考和进一步阅读 72
第3章 攻击Web平台 74
3.1 使用Metasploit进行点击式的漏洞利用 75
3.2 手工漏洞利用 78
3.3 检测绕过技术 92
3.4 Web平台安全最佳实践 94
3.4.1 通用最佳实践 95
3.4.2 IIS加固 97
3.4.3 加固Apache 102
3.4.4 PHP最佳实践 107
3.5 小结 108
3.6 参考和进一步阅读 109
第4章 攻击Web认证 111
4.1 认证威胁 111
4.1.1 用户名/密码威胁 111
4.1.2 更强的Web认证 126
4.1.3 Web认证服务 129
4.2 绕过认证 134
4.2.1 令牌重放 134
4.2.2 身份管理 135
4.2.3 利用客户端 139
4.2.4 最后一些思考:身份窃取 139
4.3 小结 140
4.4 参考和进一步阅读 141
第5章 攻击Web授权 144
5.1 授权实现的指纹识别 145
5.1.1 爬行ACL 145
5.1.2 识别访问/会话令牌 147
5.1.3 分析会话令牌 148
5.1.4 差异分析 150
5.1.5 角色矩阵 151
5.2 攻击ACL 151
5.3 攻击令牌 153
5.3.1 手动预测 153
5.3.2 自动预测 160
5.3.3 捕获/重放 166
5.3.4 会话定置 167
5.4 授权攻击案例分析 168
5.4.1 水平权限提升 168
5.4.2 垂直权限提升 172
5.4.3 差异分析 175
5.4.4 使用Curl映射许可 177
5.5 授权最佳实践 180
5.5.1 WebACL最佳实践 181
5.5.2 Web授权/会话令牌安全 183
5.5.3 安全日志 185
5.6 小结 186
5.7 参考和进一步阅读 186
第6章 输入验证攻击 189
6.1 预料意外的情况 190
6.2 在哪里寻找攻击载体 191
6.3 绕过客户端验证 192
6.4 常见的输入验证攻击 192
6.4.1 缓冲区溢出 192
6.4.2 转义攻击 194
6.4.3 脚本攻击 199
6.4.4 边界检查 203
6.4.5 操纵应用程序行为 204
6.4.6 SQL注入和数据存储攻击 204
6.4.7 执行命令 205
6.4.8 编码滥用 207
6.4.9 PHP全局变量 207
6.4.10 常见的后果 208
6.5 小结 209
6.6 参考和进一步阅读 211
第7章 攻击Web数据存储 212
7.1 SQL入门 212
7.1.1 语法 213
7.1.2 SELECT,SERT和UPDATE 214
7.2 发现SQL注入 214
7.2.1 语法和错误 214
7.2.2 语义和行为 218
7.2.3 替换字符编码 221
7.3 利用SQL注入漏洞 222
7.3.1 改变流程 222
7.3.2 查询替换数据 223
7.3.3 平台 229
7.4 其他数据存储攻击 234
7.4.1 输入验证 234
7.4.2 把查询数据从查询逻辑分离出来 235
7.4.3 数据库加密 237
7.4.4 数据库配置 237
7.5 小结 238
第8章 攻击XMLWeb服务 239
8.1 什么是Web服务 239
8.1.1 传输:HTTP(S)上的SOAP 241
8.1.2 WSDL 243
8.1.3 目录服务:UDDI和DISCO 246
8.1.4 与Web应用程序安全的相似性 250
8.2 攻击Web服务 250
8.3 Web服务安全基础 258
8.3.1 Web服务安全措施 258
8.4 小结 261
8.5 参考和进一步阅读 261
第9章 攻击Web应用管理 263
9.1 远程服务器管理 263
9.1.1 Telnet 264
9.1.2 SSH 264
9.1.3 私有的管理端口 264
9.1.4 其他管理服务 265
9.2 Web内容管理 266
9.2.1 FTP 266
9.2.2 SSH/scp 266
9.2.3 FrontPage 267
9.2.4 WebDAV 270
9.3 管理员错误配置 276
9.3.1 不必要的Web服务器扩展 277
9.3.2 信息泄漏 280
9.4 开发者造成的错误 288
9.5 小结 293
9.6 参考和进一步阅读 294
第10章 攻击Web客户端 296
10.1 漏洞利用 297
10.2 欺骗 309
10.3 通用对抗措施 316
10.3.1 IE安全区域 317
10.3.2 Firefox安全设置 320
10.3.3 低权限浏览 321
10.3.4 服务端的对抗措施 322
10.4 小结 323
10.5 参考和进一步阅读 323
第11章 拒绝服务(DenialofService)攻击 327
11.1 常见的DoS攻击技术 327
11.1.1 传统的DoS攻击:利用漏洞 328
11.1.2 现代DoS攻击:能力损耗 329
11.1.3 应用层的DoS攻击 333
11.2 常见的DoS对抗措施 342
11.2.1 主动DoS防御 342
11.2.2 DoS测试(DoSTesting) 349
11.2.3 应对DoS攻击 352
11.3 总结 353
11.4 参考和进一步阅读 353
第12章 充分认知分析(Full-KnowledgeAnalysis) 355
12.1 威胁建模 355
12.1.1 理清安全对象 357
12.1.2 识别资产 357
12.1.3 架构概述 357
12.1.4 分解应用程序 359
12.1.5 识别威胁并用文档描述它们 360
12.1.6 对威胁排序 361
12.1.7 开发威胁减缓策略 362
12.2 代码评审 363
12.2.1 手动源代码评审 363
12.2.2 自动源代码评审 370
12.2.3 二进制分析 371
12.3 应用程序代码的安全测试 378
12.3.1 模糊测试 379
12.3.2 测试工具、程序和用具 381
12.4 在Web开发流程中的安全 382
12.4.1 人员 382
12.4.2 流程 383
12.4.3 技术 384
12.5 小结 386
12.6 参考和进一步阅读 386
第13章 Web应用安全扫描器 390
13.1 技术:Web应用安全扫描器 390
13.1.1 测试平台 391
13.1.2 测试 392
13.1.3 单个扫描器评审 397
13.1.4 整体测试结果 406
13.2 非技术问题 409
13.2.1 流程 409
13.2.2 人员 411
13.3 小结 413
13.4 参考和进一步阅读 413
附录A Web应用程序的安全检查列表 414
附录B Web攻击工具和攻击技术清单 418
附录C URLScan和ModSecurity 429
附录D 关于本书的配套网站 449
索引 450