《软件安全测试艺术》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(美)CHRISWYSOPALLUCASNELSONDINODAIZOVIELFRIEDEDUSTIN著;程永敬等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2007
  • ISBN:7111219732
  • 页数:213 页
图书介绍:本书分为三个主要部分。第一部分讨论了一些现实情况,主要介绍漏洞是怎样藏到软件中来的、安全的软件开发生命周期、基于风险的安全测试和分析的滤光器:白盒、灰盒和黑盒测试;第二部分详细讨论了如何进行攻击。诸如常见的网络故障注入、应用程序攻击、代理服务器以及本地错误注入等;第三部分给出一种分析方法,并展示了如何判定漏洞的可利用性。

第一部分 综述 2

第1章 从传统软件测试转变 2

1.1 安全测试和传统软件测试的对比 4

1.2 安全测试转变的范式 6

1.3 高级安全测试策略 7

1.4 像攻击者一样思考 9

1.4.1 排定工作的优先级 10

1.4.2 在侦测工作中使用辅助工具 11

1.4.3 从漏洞知识中学习 12

1.5 小结 13

第2章 漏洞是怎样藏到软件中的 15

2.1 设计漏洞与实现漏洞 16

2.2 常见的安全设计问题 17

2.2.1 密码技术使用的败笔 17

2.2.2 对用户及其许可权限进行跟踪 19

2.2.3 有缺陷的输入验证 20

2.2.4 薄弱的结构性安全 21

2.2.5 其他设计缺陷 23

2.3 编程语言的实现问题 24

2.3.1 编译型语言:C/C++ 24

2.3.2 解释型语言:Shell脚本和PHP 32

2.3.3 虚拟机语言:Java和C# 35

2.4 平台的实现问题 36

2.4.1 问题:符号链接 37

2.4.2 问题:目录遍历 37

2.4.3 问题:字符转换 38

2.5 常见的应用程序安全实现问题 39

2.5.1 SQL注入 39

2.5.2 跨站点执行脚本 40

2.6 开发过程中的问题 41

2.6.1 安全需求和前提条件的文档记录贫乏 41

2.6.2 交流和文档的匮乏 42

2.6.3 在开发过程中缺少安全过程 42

2.7 部署上的薄弱性 43

2.8 漏洞根源分类法 44

2.9 小结 44

第3章 安全的软件开发生命周期 46

3.1 将安全测试融入到软件开发生命周期中 47

3.2 阶段1:安全原则、规则及规章 49

3.3 阶段2:安全需求:攻击用例 51

3.4 阶段3:架构和设计评审/威胁建模 53

3.5 阶段4:安全的编码原则 53

3.6 阶段5:白盒/黑盒/灰盒测试 54

3.7 阶段6:判定可利用性 54

3.8 安全地部署应用程序 55

3.9 补丁管理:对安全漏洞进行管理 55

3.10 角色和职责 56

3.11 SSDL与系统开发生命周期的关系 56

3.12 小结 58

第4章 基于风险的安全测试 61

4.1 信息搜集 61

4.1.1 与架构师会谈 62

4.1.2 运行时检查 63

4.2 Windows平台 63

4.3 UNIX痕迹检查 67

4.4 完成信息搜集工作 69

4.5 建模过程 69

4.5.1 识别威胁路径 70

4.5.2 识别威胁 73

4.5.3 识别漏洞 74

4.5.4 将与漏洞相关的风险进行分级 75

4.6 判定可利用性 76

第5章 白盒、黑盒和灰盒测试 77

5.1 白盒测试 77

5.2 黑盒测试 78

5.3 灰盒测试 78

5.4 建立用于测试的实验室 79

5.4.1 侦探程序 80

5.4.2 嗅探器 80

5.4.3 调试器 81

5.4.4 硬件 81

5.4.5 商业的测试设备 81

5.4.6 网络硬件 82

5.5 开展应用程序攻击 82

5.5.1 实验室环境 82

5.5.2 网络攻击 83

第二部分 攻击演练 90

第6章 常见的网络故障注入 90

6.1 网络 90

6.2 端口发现 91

6.2.1 netstat和本地工具 91

6.2.2 端口扫描 94

6.3 代理 95

6.3.1 最简单的代理:随机TCP/UDP故障注入程序 96

6.3.2 构建故障注入数据集 100

6.3.3 中间人代理 103

6.4 结论 104

6.5 小结 104

第7章 会话攻击 106

7.1 将要测试应用程序作为攻击目标 106

7.2 身份鉴别和授权 106

7.3 对会话和资源ID进行攻击 107

7.4 Cookie搜集 111

7.5 判断SID的长度:阶段步进分析 113

7.6 跨站执行脚本 115

7.7 结论 118

7.8 小结 118

第8章 Web应用程序的常见问题 119

8.1 绕过授权 120

8.2 SQL注入 121

8.2.1 SQL注入基础 121

8.2.2 数据库模式探索 126

8.2.3 在SQL服务器上执行命令 130

8.3 上传可执行内容 133

8.4 文件枚举 135

8.5 源代码泄露漏洞 138

8.6 HTTP中的隐藏字段 140

8.7 结论 143

8.8 小结 143

第9章 使用WebScarab 144

9.1 WebScarab代理 144

9.2 结论 156

9.3 小结 156

第10章 实现定制的侦探工具 158

10.1 协议发现 158

10.2 SOAP和WSDL 161

10.3 SOAPpy库 163

10.4 结论 170

10.5 小结 170

第11章 本地故障注入 171

11.1 本地资源和进程间通信 171

11.1.1 Windows NT对象 172

11.1.2 UNIX上的set-user-id进程和进程间通信 174

11.2 对本地应用程序进行威胁建模 175

11.2.1 列举Windows应用程序资源 176

11.2.2 列举UNIX应用程序资源 176

11.3 测试可执行脚本的ActiveX对象接口 178

11.4 识别可“安全”执行脚本对象 179

11.5 测试对象接口 181

11.5.1 手工的接口测试 181

11.5.2 自动的ActiveX接口测试 183

11.5.3 对崩溃进行评估 183

11.6 对文件格式进行侦探 184

11.7 文件破坏测试 185

11.8 文件破坏自动化 185

11.9 对命令行工具进行侦探 186

11.10 Immunity公司的ShareFuzz 187

11.11 暴力的二进制测试程序 188

11.12 CLI Fuzz 188

11.13 共享内存 192

11.14 小结 194

第三部分 分析 198

第12章 判定可利用性 198

12.1 漏洞分级 198

12.1.1 时间 198

12.1.2 可靠性/再现性 198

12.1.3 访问 199

12.1.4 定位 200

12.2 内存侵害和任意代码执行 201

12.3 计算机体系结构 202

12.3.1 栈 203

12.3.2 栈缓存区溢出 205

12.3.3 堆 205

12.4 判定可利用性 208

12.4.1 进程崩溃转储 208

12.4.2 被控制的内存和寄存器 208

12.4.3 缓解因素:栈和堆保护 212

12.5 更多资料 213