数据库黑客大曝光:数据库服务器防护术

数据库黑客大曝光:数据库服务器防护术
作 者: 里奇费尔德 闫雷鸣 邢苏霄
出版社: 清华大学出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 网络安全
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍David Litchfield专门研究数据库系统及Web应用程序所面临的新威胁,保持着发现主要安全缺陷的非官方世界纪录。曾就数据库安全问题到英国和美国政府安全机构演讲,是Blackhat Security Briefings的正式发言人。他是The Shellcoder’s Handbook、SQL Server Security和Special Ops的合著者。业余时间在Next Generation Security Software Ltd.公司任管理董事。.Chris Anley是最畅销的有关安全漏洞研究的书The Shellcoder’s Handbook的合著者。发表了针对大量数据库系统,包括SQL Se...

内容简介

用主动防护对抗入侵.数据库是经济的控制中心。您的各种个人信息都存储在数据库中——病历档案、银行账户、工作经历、养老金、汽车登记,甚至子女的上学信息和您购买的食品。数据库攻击是残酷无情的。本书是继The Shellcoder's Handbook之后的又一本精品图书,4名世界顶级安全专家将手把手教您如何入侵和防御7种当今最流行的数据库服务器。本书详细介绍了如何识别漏洞、攻击是如何发生的,以及如何停止对数据库的残酷攻击。“坏人”是知道所有这一切的,您也应该知道。本书主要内容..·标识和向Oracle及Microsoft SQL Server中插入新的漏洞。·学习对IBM的DB2、PostgreSQL、Sybase ASE及MySQL服务器的最佳防护。·揭露黑客如何利用这几种方式来访问数据库:缓冲区溢出、通过SQL的特权提升、存储过程或触发器滥用,以及SQL注入等。·识别每种数据库特有的漏洞。·查明攻击者已经知道了哪些内容。...

图书目录

第I部分 引 言

第1章 关注数据库安全的原因 3

1.1 最安全的数据库 3

1.2 数据库安全研究现状 4

1.3 讨论数据库安全研究现状

的意义 10

1.4 寻找数据库服务器的漏洞 10

1.4.1 不要相信文献 11

1.4.2 实现自己的客户程序 11

1.4.3 调试系统,理解它是

如何运行的 11

1.4.4 标识通信协议 11

1.4.5 理解任意代码执行bug 12

1.4.6 写下自己的“fuzzer” 12

1.5 小结 12

第Ⅱ部分 Oracle

第2章 Oracle体系结构 15

2.1 分析Oracle体系结构 15

2.2 Oracle RDBMS 21

2.3 Oracle Intelligent Agent 22

2.4 Oracle的身份验证和授权 27

2.5 数据库身份验证 28

2.5.1 授权 30

2.5.2 关键系统特权 30

2.5.3 Oracle审计 31

第3章 攻击Oracle 33

3.1 扫描Oracle服务器 33

3.1.1 常用端口 33

3.1.2 TNS Listener 34

3.2 Oracle中的PL/SQL 42

3.3 PL/SQL Injection 46

3.4 注入DELETE、INSERT

及UPDATE语句 52

3.4.1 注入INSETRT语句 52

3.4.2 实际示例 53

3.5 注入匿名的PL/SQL代码块 54

3.6 用DBMS_SQL执行用户

自定义查询 56

3.7 实际示例 59

3.8 PL/SQL和Oracle Application

Server(Oracle应用程序

服务器) 62

3.9 小结 65

第4章 Oracle:深入网络 67

4.1 运行操作系统命令 67

4.1.1 通过PL/SQL运行

OS命令 67

4.1.2 通过DBMS_SCHEDULER

运行OS命令 69

4.1.3 通过Java运行OS命令 70

4.2 访问文件系统 70

4.3 访问网络 72

4.4 PL/SQL和网络 73

4.4.1 UTL_TCP 73

4.4.2 UTL_HTTP 75

4.4.3 UTL_SMTP 75

4.5 小结 76

第5章 保护Oracle 77

5.1 Oracle安全建议 77

5.2 Oracle数据库服务器 79

5.2.1 账户 79

5.2.2 角色 80

5.2.3 DBA角色 81

第Ⅲ部分 DB2

第6章 IBM DB2通用数据库 87

6.1 引言 87

6.2 DB2部署场景 87

6.3 DB2进程 93

6.4 DB2物理数据库布局 95

6.4.1 Windows上的DB2 95

6.4.2 Linux上的DB2 95

6.5 DB2逻辑数据库布局 95

6.6 DB2身份验证和授权 96

6.7 授权 105

6.7.1 DBAUTH视图 105

6.7.2 TABAUTH视图 106

6.7.3 ROUTINEAUTH视图 107

6.8 小结 108

第7章 DB2:发现、攻击和防御 109

第8章 攻击DB2 119

8.1 DB2过程和函数的

缓冲区溢出 119

8.2 DB2远程命令服务器 122

8.3 通过DB2运行命令 124

8.4 通过DB2访问文件系统 125

8.4.1 加载方式 125

8.4.2 XML函数 125

8.5 本地攻击DB2 126

8.6 小结 134

第9章 保护DB2 135

9.1 保护操作系统 135

9.2 保护DB2网络接口 135

9.3 保护DBMS 136

9.4 删除不必要组件 136

9.5 小结 136

第Ⅳ部分 Informix

第10章 Informix体系结构 139

10.1 分析Informix体系结构 139

10.1.1 网络上的Informix 139

10.1.2 连接远程Informix

服务器 139

10.2 Informix逻辑布局 140

第11章 Informix:发现、攻击

和防御 145

11.1 攻击和防御Informix 145

11.1.1 身份验证提交攻击 155

11.1.2 共享内存、用户名

和口令 157

11.2 用SPL攻击Informix 160

11.2.1 通过SPL运行任意命令 160

11.2.2 加载任意库 164

11.2.3 读、写服务器上的

任意文件 164

11.3 Informix内的SQL

缓冲区溢出 164

11.4 小结 167

第12章 保护Informix 169

12.1 为服务器持续打补丁 169

12.2 加密网络通信量 169

12.3 取消Public的Connect

特权 169

12.4 启用审计 169

12.5 取消Public对文件访问

例程的权限 169

12.6 取消Public对模块例程

的执行权限 170

12.7 阻止转储共享内存 170

12.8 阻止对基于Unix的

服务器的本地攻击 170

12.9 限制语言Usage权限 170

12.10 有用文档 170

第Ⅴ部分 Sybase ASE

第13章 Sybase体系结构 175

13.1 Sybase背景 175

13.2 历史 175

13.3 显著特性 176

13.3.1 Java-In-ASE 176

13.3.2 部署场景 178

13.3.3 防火墙对Sybase

的含意 180

13.3.4 与Sybase通信 181

13.3.5 特权模型 181

13.3.6 登录账户基础 181

13.3.7 口令和口令复杂性 182

13.3.8 服务交互 183

第14章 Sybase:发现、攻击

和防御 185

14.1 发现目标 185

14.1.1 扫描Sybase 185

14.1.2 Sybase版本号 185

14.1.3 窥探身份验证 186

14.2 攻击Sybase 186

14.2.1 Sybase中的SQL注入 187

14.2.2 SQL注入基础 187

14.3 Sybase内的MS SQL Server

注入技术 190

14.3.1 注释 190

14.3.2 Union Select 191

14.3.3 错误消息 191

14.3.4 @@version 191

14.3.5 Having/Group By 192

14.3.6 SQL批处理注入 192

14.3.7 xp_cmdshell 193

14.3.8 xp_regread 193

14.3.9 自定义的扩展存储过程 193

14.3.10 调用CHAR函数以

绕过引号筛选器 193

14.3.11 SHUTDOWN 194

14.3.12 通过sp_password

逃避审计 194

14.3.13 连接服务器 194

14.3.14 利用时间延迟作

通信通道 195

14.3.15 VARBINARY字面值

编码和Exec 197

14.4 外部文件系统访问 197

14.5 防御攻击 199

14.6 过去已知的一些Sybase

ASE安全bug 199

14.6.1 CAN-2003-0327——远

程口令数组溢出 199

14.6.2 DBCC CHECKVERIFY

缓冲区溢出 199

14.6.3 DROP DATABASE

缓冲区溢出漏洞 200

14.6.4 xp_freedll缓冲区溢出 200

14.7 Sybase版本工具 200

第15章 Sybase:深入网络 207

15.1 访问网络 207

15.2 用Sybase连接其他服务器 207

15.3 SQL中的Java 208

15.3.1 JSQL TDS客户端 210

15.3.2 JSQL TCP代理 212

15.4 特洛伊(Trojanning)Sybase 213

15.4.1 授予用户sa或sso_role

权限 213

15.4.2 允许直接更新系统表,

授权访问选择的系统表 214

第16章 保护Sybase 215

16.1 Sybase安全一览表 215

16.1.1 背景 215

16.1.2 操作系统 215

16.1.3 Sybase用户 215

16.1.4 Sybase配置 216

16.2 背景 216

16.3 操作系统 216

16.4 Sybase用户 217

16.5 Sybase配置 218

第Ⅵ部分 MySQL

第17章 MySQL体系结构 223

17.1 分析物理数据库结构 223

17.1.1 部署 224

17.1.2 WinMySQLAdmin

自动启动 225

17.1.3 默认用户名和口令 225

17.1.4 协议 226

17.1.5 身份验证协议中的bug 226

17.2 分析逻辑数据库结构 229

17.2.1 MySQL逻辑数据库

结构 229

17.2.2 存储引擎 230

17.2.3 文件系统布局 231

17.2.4 查询批处理 231

17.2.5 分析用户和组 231

17.3 利用体系结构设计缺陷 237

17.3.1 用户定义函数 237

17.3.2 访问控制系统缺陷 239

17.3.3 缺少安全影响特性 240

17.3.4 缺少提高安全的特性 241

第18章 MySQL:发现、攻击

和防御 243

18.1 发现目标 243

18.1.1 扫描MySQL 243

18.1.2 MySQL版本号 243

18.1.3 窥探身份验证 244

18.2 黑掉MySQL 245

18.2.1 MySQL中的SQL注入 245

18.2.2 已知的一些

MySQL bug 251

18.2.3 特洛伊(Trojanning)

MySQL 258

18.3 本地攻击MySQL 263

18.3.1 竞争条件 264

18.3.2 溢出 264

18.4 再论MySQL文件结构 264

第19章 MySQL:深入网络 265

19.1 MySQL客户机散列

身份验证补丁 265

19.2 运行外部程序:用户

定义函数 266

19.3 Windows中的用户

定义函数 268

19.4 小结 272

第20章 保护MySQL 273

20.1 MySQL安全一览表 273

20.1.1 背景 273

20.1.2 操作系统 273

20.1.3 MySQL用户 274

20.1.4 MySQL配置 274

20.1.5 例行审计 274

20.2 背景 275

20.3 操作系统 275

20.4 MySQL用户 276

20.5 MySQL配置 278

20.6 例行审计 279

第Ⅶ部分 SQL Server

第21章 Microsoft SQL Sever

体系结构 283

21.1 SQL Server背景 283

21.2 物理体系结构 284

21.2.1 表格数据流(TDS)协议 284

21.2.2 网络库 285

21.2.3 SQL Server进程和端口 285

21.2.4 身份验证和授权 287

21.3 逻辑体系结构 290

21.3.1 存储过程 291

21.3.2 触发器 295

21.4 用户和组 296

21.4.1 账户信息 296

21.4.2 口令加密 298

第22章 SQL Server:漏洞、

攻击和防御 303

22.1 漏洞 303

22.2 利用设计错误 303

22.2.1 SQL Slammer 溢出 303

22.2.2 \x08前导字节溢出 304

22.2.3 \x0A前导字节网络DoS 304

22.2.4 客户机溢出 305

22.3 SQL 注入 305

22.3.1 系统级别的攻击 309

22.3.2 其他攻击向量 309

22.3.3 时间延迟 310

22.3.4 存储过程 311

22.3.5 端口扫描 313

22.3.6 批处理查询 313

22.3.7 SQL注入的防御 313

22.4 掩盖入侵痕迹 315

22.4.1 三字节补丁 315

22.4.2 XSTATUS后门 317

第23章 保护SQL Server 319

23.1 安装 319

23.1.1 步骤1:身份验证 319

23.1.2 步骤2:口令强度 321

23.1.3 步骤3:操作系统锁定 321

23.1.4 步骤4:安装后的锁定 322

23.2 配置 323

23.2.1 步骤5:配置网络库 323

23.2.2 步骤6:配置审计

和警报 323

23.2.3 步骤7:锁定特权 323

23.2.4 步骤8:删除不需要

的功能和服务 324

23.2.5 步骤9:删除存储过程 325

23.2.6 步骤10:安装安全补丁 326

第Ⅷ部分 PostgreSQL

第24章 PostgreSQL体系结构 329

24.1 分析物理数据库体系结构 329

24.1.1 安全部署 329

24.1.2 通用部署场景 330

24.1.3 术语 330

24.2 PostgreSQL文件结构 331

24.2.1 协议 332

24.2.2 身份验证 333

24.2.3 系统目录 335

24.2.4 分析用户和组 338

24.2.5 存储过程 339

第25章 PostgreSQL:发现与攻击 341

25.1 寻找目标 341

25.2 PostgreSQL协议 342

25.3 针对PostgreSQL的网络

攻击 343

25.3.1 网络嗅探 343

25.3.2 ARP欺骗和TCP劫持 343

25.3.3 ident欺骗 344

25.4 来自攻陷资源的信息泄露 345

25.5 已知的各种PostgreSQL

bug 346

25.5.1 配置漏洞 347

25.5.2 代码执行漏洞 347

25.5.3 PostgreSQL组件中

的漏洞 351

25.6 PostgreSQL中的SQL注入 353

25.6.1 有用的内置函数 356

25.6.2 使用PostgreSQL 8.0中

的时间延迟 357

25.6.3 存储过程中的

SQL注入 357

25.6.4 其他应用程序中的SQL

注入漏洞 358

25.7 与文件系统进行交互 359

25.7.1 大对象支持 361

25.7.2 通过共享对象

使用扩展 361

25.7.3 LOAD命令 363

25.8 小结 365

第26章 保护PostgreSQL 367

附录A 时间延迟SQL注入

Harness的C代码示例 369

附录B 危险的扩展存储过程 373

附录C Oracle默认用户名和口令 377