出版社:机械工业出版社
年代:2007
定价:20.0
本书分为三个主要部分。第一部分讨论了一些现实情况,主要介绍漏洞是怎样藏到软件中来的、安全的软件开发生命周期、基于风险的安全测试和分析的滤光器:白盒、灰盒和黑盒测试;第二部分详细讨论了如何进行攻击。诸如常见的网络故障注入、应用程序攻击、代理服务器以及本地错误注入等;第三部分给出一种分析方法,并展示了如何判定漏洞的可利用性。
本书的“美誉”
译者序
序言
前言
致谢
关于作者
第一部分综述
第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脚本
和PHP32
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.1SQL注入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.11SSDL与系统开发生命周期的
关系56
3.12小结58
第4章基于风险的安全测试61
4.1信息搜集61
4.1.1与架构师会谈62
4.1.2运行时检查63
4.2Windows平台63
4.3UNIX痕迹检查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
第二部分攻击演练
第6章常见的网络故障注入90
6.1网络90
6.2端口发现91
6.2.1netstat和本地工具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.4Cookie搜集111
7.5判断SID的长度:阶段步进分析113
7.6跨站执行脚本115
7.7 结论118
7.8小结118
第8章Web应用程序的常见问题119
8.1绕过授权120
8.2SQL注入121
8.2.1SQL注入基础121
8.2.2数据库模式探索126
8.2.3在SQL服务器上执行命令130
8.3上传可执行内容133
8.4文件枚举135
8.5源代码泄露漏洞138
8.6HTTP中的隐藏字段140
8.7结论143
8.8 小结143
第9章使用WebScarab144
9.1WebScarab代理144
9.2结论156
9.3小结156
第10章实现定制的侦探工具158
10.1协议发现158
10.2SOAP和WSDL161
10.3SOAPpy库163
10.4结论170
10.5小结170
第11章本地故障注入171
11.1本地资源和进程间通信171
11.1.1Windows NT对象172
11.1.2UNIX上的setuserid进程
和进程间通信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.10Immunity公司的ShareFuzz187
11.11暴力的二进制测试程序188
11.12CLI Fuzz188
11.13共享内存192
11.14小结194
第三部分分析
ⅩⅩⅤ第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
本书深入讲解软件安全方面最新的实用技术,用于在破坏之前预防并识别软件的安全问题。
本书作者具有近十年应用和渗透测试方面的经验,从简单的“验证”性测试方法讲起,进而介绍先发制人的“攻击”性测试方法。作者首先系统地回顾了软件中出现的设计和编码方面的安全漏洞,并提供了避免出现这些安全漏洞的实用指导。然后,向读者展示了定制用户化软件调试工具的方法,用以对任何程序的各个方面独立地进行测试,之后对结果进行分析,从而识别可被利用的安全漏洞。
主要内容
●如何从软件攻击者的角度来思考从而增强防御策略。
●兼顾成本效益,将安全测试整合到软件开发的生命周期。
●基于最高风险领域,使用威胁模型来排定测试的优先顺序。
●构建用于进行白盒测试、灰盒测试和黑盒测试的软件测试实验。
●针对每个测试工程,选用恰当的工具。
●执行当前主要的软件攻击,从故障注入到缓冲区溢出。
●哪些缺陷在现实世界中最可能被攻击者利用。
本书是每一个负责软件安全的技术人员必备的读物:无论是测试人员、QA专家、安全从业者、开发人员,还是其他相关的人员。对于IT管理人员,本书提供了经实践检验的行动计划,用于实现有效安全测试或加强现有测试流程。
何泾沙, 编著
何泾沙, 钱进, 编著
赵国亮, 主编
赵国亮, 霍亚格, 陈敬恒, 编著
美国OWASP基金会, 著
(美) 维加等, 著
李震, 著
(英) 莫拉提迪斯 (Mouratidis,H.) , 编著
(美) 豪沃 (Howard,M.) , (美) 勒伯兰克 (LeBlanc,D.) , (美) 维加 (Viega,J.) , 著