第1章 绪论 1
1.1 弱点的定义 1
1.2 弱点分类 2
1.3 弱点挖掘分类 3
1.4 漏洞分析技术 4
1.4.1 人工分析 4
1.4.2 Fuzzing技术 4
1.4.3 补丁比对技术 8
1.4.4 静态分析技术 10
1.4.5 动态分析技术 11
1.5 弱点数据库 11
1.5.1 弱点库 11
1.5.2 弱点列表 13
1.5.3 弱点搜索引擎 13
习题1 14
第2章 程序弱点挖掘 15
2.1 缓冲区溢出 15
2.1.1 漏洞概述 15
2.1.2 基本概念 16
2.1.3 缓冲区溢出 16
2.1.4 漏洞详解 17
2.1.5 检测方法 18
2.1.6 补救措施 21
2.2 格式化字符串问题 21
2.3 异常信息处理机制 25
2.3.1 基本概述 25
2.3.2 C语言中的异常处理 26
2.3.3 C++语言中的异常处理 30
2.3.4 JAVA语言中的异常处理 40
2.4 竞争条件 41
2.4.1 基本概述 41
2.4.2 漏洞详细解释 41
2.4.3 检测方法 42
2.4.4 实例分析 43
2.4.5 补救措施 44
2.5 信息泄露 45
2.5.1 漏洞概述 45
2.5.2 漏洞详解 46
习题2 49
第3章 操作系统弱点挖掘 50
3.1 弱口令 50
3.1.1 弱口令简介 50
3.1.2 Windows 2000下实现简单弱口令扫描 52
3.1.3 SA弱口令带来的安全隐患 55
3.1.4 通过Mysql弱口令得到系统权限 58
3.2 存储访问控制 69
3.2.1 安全存储和数据保护 69
3.2.2 针对企业提出的存储安全策略 70
3.2.3 文件访问控制 73
3.2.4 Linux/Unix的文件访问控制列表 75
3.3 操作系统可用性 81
3.3.1 可用性测试 82
3.3.2 操作系统高可用性研究 83
3.3.3 企业级服务器可用性提升 86
3.4 命令注入 87
3.4.1 了解SQL注入 88
3.4.2 SQL注入成因 94
3.4.3 SQL注入的产生过程 98
习题3 107
第4章 数据库弱点挖掘 109
4.1 SQL注入 109
4.1.1 SQL注入漏洞简述 109
4.1.2 SQL注入攻击的概念 110
4.1.3 SQL注入攻击特点 110
4.1.4 SQL漏洞原理 111
4.1.5 SQL注入攻击的常用方法 112
4.1.6 SQL注入攻击实现过程 112
4.1.7 SQL注入漏洞实例分析 113
4.2 数据库缓冲区溢出 116
4.2.1 数据库缓冲区溢出漏洞概述 116
4.2.2 数据库缓冲区溢出攻击原理 118
4.2.3 缓冲区溢出攻击的一般类型 119
4.2.4 缓冲区溢出攻击的三个步骤 121
4.2.5 数据库缓冲区溢出攻击方法 122
4.2.6 数据库缓冲区溢出漏洞实例 123
4.3 数据库权限提升 128
4.3.1 数据库权限提升漏洞简述 128
4.3.2 Oracle数据库权限提升漏洞分析 128
4.3.3 数据库权限提升漏洞实例 132
4.4 数据库拒绝服务弱点 134
4.4.1 数据库拒绝服务漏洞简述 134
4.4.2 数据库拒绝服务攻击原理 135
4.4.3 拒绝服务攻击属性分类 137
4.4.4 拒绝服务攻击的交互属性 139
4.4.5 数据库拒绝服务攻击漏洞实例 140
习题4 143
第5章 网站弱点挖掘 144
5.1 跨站脚本 144
5.1.1 跨站脚本危害 145
5.1.2 防御跨站脚本攻击 147
5.2 嗅探攻击 151
5.2.1 嗅探程序介绍 152
5.2.2 日志清理攻击 153
5.2.3 内核rootkit 158
5.3 发送邮件攻击 161
5.3.1 电子邮件攻击方式 161
5.3.2 电子邮件攻击防范 163
5.3.3 电子邮件攻击实例分析 166
5.4 网络流量 171
5.4.1 网络流量安全管理的主要目标和策略 171
5.4.2 局域网流量控制与管理方法 172
5.4.3 网络流量监测的常用方法 173
5.5 隐藏表单字段 174
5.5.1 隐藏表单字段举例 175
5.5.2 隐藏表单字段漏洞示例 177
5.6 网络域名解析漏洞攻击 178
5.6.1 什么是域名解析 178
5.6.2 DNS欺骗原理与实践 181
5.6.3 保障企业域名安全 185
5.7 文件上传漏洞 186
5.7.1 什么是文件上传漏洞 186
5.7.2 防范文件上传漏洞 188
5.7.3 PHP文件上传漏洞 189
5.8 远程代码执行漏洞 191
5.8.1 远程代码命令执行漏洞的产生原因以及防范 191
5.8.2 远程命令执行漏洞实例分析 192
习题5 195
第6章 弱点数据库 196
6.1 主流安全漏洞库分析 196
6.1.1 CVE安全漏洞库字典 196
6.1.2 美国通用安全漏洞评级研究NVD漏洞数据库 198
6.1.3 丹麦知名安全公司Secunia漏洞库 199
6.1.4 美国安全组织Security Focus的漏洞数据库 200
6.1.5 X-Force漏洞库 201
6.1.6 美国安全组织创建的独立和开源漏洞数据库OSVDB 203
6.1.7 中国国家信息安全漏洞库CNNVD 204
6.1.8 Microsoft漏洞库 205
6.1.9 国家信息安全漏洞共享平台CNVD 206
6.2 主流漏洞库优缺点分析 207
6.3 主流漏洞库系统的不同点分析 207
6.3.1 漏洞数据格式不一致 207
6.3.2 危害分级不一致 207
6.3.3 编码格式不一致 208
6.4 漏洞库系统设计 210
习题6 211
第7章 网络协议弱点挖掘 212
7.1 路由协议漏洞 212
7.1.1 Routing Information Protocol 212
7.1.2 Border Gateway Protocol 215
7.1.3 Open Shortest Path First 217
7.2 TCP协议漏洞 221
7.2.1 TCP协议工作原理 221
7.2.2 TCP协议脆弱性分析 222
7.2.3 针对TCP协议脆弱性的攻击 222
习题7 248
第8章 被动分析 249
8.1 源代码分析 249
8.1.1 源代码分析技术的理论与实践发展 249
8.1.2 源代码分析的利与弊 256
8.2 二进制分析的作用 257
8.3 常用分析工具 261
8.3.1 Linux超文本交叉代码检索工具 261
8.3.2 Windows平台下的源代码阅读工具Source Insight 261
习题8 267
第9章 高级逆向工程 268
9.1 软件开发过程 268
9.2 探测工具 270
9.3 杂凑函数 277
9.3.1 消息认证码 278
9.3.2 杂凑函数的一般概念 279
9.3.3 对杂凑函数的基本攻击方法 281
习题9 282
第10章 漏洞检测 284
10.1 漏洞检测技术概要 284
10.2 漏洞检测的几种方式 284
10.2.1 安全扫描 284
10.2.2 源代码扫描 287
10.2.3 反汇编扫描 287
10.2.4 环境错误注入 288
10.3 入侵检测 288
10.3.1 常用的入侵检测技术 288
10.3.2 入侵检测技术的选用 289
10.4 漏洞检测 290
10.4.1 漏洞检测分类 290
10.4.2 特点 291
10.4.3 实现模型 291
习题10 292
附录 293
参考文献 299