编辑推荐
Bejtlich新版图书,
 ;
内容简介
SQL注入攻击是一种已经长期存在,但近年来日益增长的安全威胁,本书致力于深入探讨SQL注入问题。本书前一版荣获2009Bejtlich*图书奖,第2版对内容做了全面更新,融入了一些*的研究成果,包括如何在移动设备上利用SQL注入漏洞,以及客户端SQL注入等。本书由一批SQL注入专家编写,他们对Oracle、SQLServer、MySQL和PostgreSQL数据库平台的SQL注入问题具有独到的见解。
主要内容
● 发现、确认和自动发现SQL注入漏洞
● 通过SQL注入利用漏洞
● 在代码中发现SQL注入的方法和技巧
● 利用操作系统的漏洞
作者简介
Justin Clarke,Gotham Digital Science公司的共同创办人和总监,Gotham Digital Science是一家安全顾问公司,为客户提供识别、预防和管理安全风险的服务。在网络安全测试和软件领域,他有15年以上的工作经验。他还为美国、英国和新西兰等地的大型金融、零售和技术客户提供软件服务。
Justin是很多计算机安全书籍的特约撰稿人,也是很多安全会议的参与者和项目研究者,包括Black Hat、EuSecWest、OSCON、ISACA、RSA、SANS、OWASP和British Computer Society。他是开源的SQL盲注漏洞利用工具SQLBrute的作者,还是OWASP在伦敦地区的负责人。
Justin具有新西兰Canterbury大学计算机科学学士学位,还具有战略人力资源管理与会计(Strategic Human Resources Management and Accounting)专业的研究生文凭。
目录
目 ; ; ; ;录
第1章 ; ;什么是SQL注入 ; ;1
1.1 ; ;概述 ; ;1
1.2 ; ;理解Web应用的工作原理 ;2
1.2.1 ; ;一种简单的应用架构 ; ;3
1.2.2 ; ;一种较复杂的架构 ;4
1.3 ; ;理解SQL注入 ; ;5
1.4 ; ;理解SQL注入的产生过程 ;10
1.4.1 ; ;构造动态字符串 ; ;10
1.4.2 ; ;不安全的数据库配置 ; ;16
1.5 ; ;本章小结 ; ;18
1.6 ; 快速解决方案 18
1.7 常见问题解答 19
第2章 SQL注入测试 21
2.1 概述 21
2.2 寻找SQL注入 21
2.2.1 借助推理进行测试 22
2.2.2 数据库错误 28
2.2.3 应用程序的响应 39
2.2.4 SQL盲注 42
2.3 确认SQL注入 45
2.3.1 区分数字和字符串 46
2.3.2 内联SQL注入 46
2.3.3 终止式SQL注入 52
2.3.4 时间延迟 59
2.4 自动寻找SQL注入 60
2.5 本章小结 68
2.6 快速解决方案 68
2.7 常见问题解答 69
第3章 复查代码中的SQL注入 71
3.1 概述 71
3.2 复查源代码中的SQL注入 71
3.2.1 危险的编码行为 73
3.2.2 危险的函数 78
3.2.3 跟踪数据 81
3.2.4 复查Android应用程序代码 88
3.2.5 复查PL/SQL和T-SQL代码 93
3.3 自动复查源代码 99
3.3.1 Graudit 100
3.3.2 YASCA 101
3.3.3 Pixy 101
3.3.4 AppCodeScan 102
3.3.5 OWASP LAPSE 项目102
3.3.6 Microsoft SQL注入源代码分析器 103
3.3.7 CAT.NET 103
3.3.8 RIPS——PHP脚本漏洞的静态源代码分析器 103
3.3.9 CodePro AnalytiX104
3.3.10 Teachable Static Analysis Workbench 104
3.3.11 商业源代码复查工具 104
3.3.12 Fortify源代码分析器105
3.3.13 Rational AppScan Source Edition 106
3.3.14 CodeSecure 106
3.3.15 Klocwork Solo 106
3.4 本章小结 107
3.5 快速解决方案 107
3.6 常见问题解答 108
第4章 利用SQL注入 111
4.1 概述 111
4.2 理解常见的漏洞利用技术 112
4.2.1 使用堆叠查询 113
4.2.2 在Web应用程序中利用Oracle漏洞 114
4.3 识别数据库 114
4.3.1 非盲跟踪 115
4.3.2 盲跟踪 119
4.4 使用UINON语句提取数据 120
4.4.1 匹配列 121
4.4.2 匹配数据类型 122
4.5 使用条件语句 126
4.5.1 方法1:基于时间 126
4.5.2 方法2:基于错误 130
4.5.3 方法3:基于内容 131
4.5.4 处理字符串 131
4.5.5 扩展攻击 133
4.5.6 利用SQL注入错误 134
4.5.7 Oracle中的错误消息 135
4.6 枚举数据库模式 139
4.6.1 SQL Server 139
4.6.2 MySQL 143
4.6.3 PostgreSQL 146
4.6.4 Oracle 147
4.7 在INSERT查询中实施注入攻击 150
4.7.1 第一种情形:插入用户规定的数据 150
4.7.2 第二种情形:生成INSERT错误 153
4.7.3 其他情形 155
4.8 提升权限 155
4.8.1 SQL Server 155
4.8.2 在未打补丁的服务器上提升权限 160
4.8.3 SYS.DBMS_CDC_PUBLISH162
4.9 窃取哈希口令 164
4.9.1 SQL Server 164
4.9.2 MySQL 165
4.9.3 PostgreSQL 166
4.9.4 Oracle 166
4.10 带外通信 169
4.10.1 e-mail 169
4.10.2 HTTP/DNS 172
4.10.3 文件系统 173
4.11 自动利用SQL注入 179
4.11.1 Sqlmap 180
4.11.2 Bobcat 181
4.11.3 BSQL 181
4.11.4 其他工具 183
4.12 本章小结 183
4.13 快速解决方案 184
4.14 常见问题解答 185
第5章 SQL盲注利用 187
5.1 概述 187
5.2 寻找并确认SQL盲注 188
5.2.1 强制产生通用错误 188
5.2.2 注入带副作用的查询 188
5.2.3 拆分与平衡 189
5.2.4 常见的SQL盲注场景 191
5.2.5 SQL盲注技术 191
5.3 使用基于时间的技术 200
5.3.1 延迟数据库查询 200
5.3.2 基于时间的推断应考虑的问题 207
5.4 使用基于响应的技术 207
前沿
前 言
自从2009年本书第1版出版以来又过去了不少时间,大约经过了3年之后,本书的第2版也已经面世。当我们在第1版中讨论SQL注入的理念时,SQL注入已经出现了10多年,并且在本质上并没有新的改变。截至2008年(大约在发现SQL注入这一问题10年之后,当本书第1版刚开始成形时),对于什么是SQL注入、如何发现SQL注入漏洞,以及如何利用漏洞,人们依然没有综合性的理解,更不用说如何防御SQL注入漏洞,以及如何从一开始就避免SQL注入漏洞的出现。另外,普通的观点是SQL注入仅仅与Web应用程序有关,对于混合攻击或者作为一种渗透组织机构外部安全控制的方法而言,SQL注入并不是一种危险因素——事实充分证明这种观点是错误的,在本书第1版付梓前后发生的黑客安全事件就是最好的说明(比如Heartland PaymentSystems的安全事件)。
现在是2012年,笔者完成了本书的第2版,虽然在SQL注入的基础理论上只有很小的变化,但是SQL注入的技术已经不断进步,在将SQL注入应用于较新的领域方面已经有了新的发展,比如将SQL注入应用于移动应用程序,以及通过HTML5实现客户端SQL注入。另外,此书第2版还为我和本书的合著者提供了一次机会,对读者在第1版中提出的问题提供反馈。在第2版中,不但全面更新了本书的所有内容,还介绍了一些新的技术和方法。另外在第2版中还扩大了数据库的范围,包含对PostgreSQL数据库的介绍。在本书的各个章节中,都将Microsoft SQL Server、Oracle、MySQL和PostgreSQL数据库作为主要的数据库平台,并在相关内容中使用Java、.NET和PHP编写了代码示例。
本书总体上分为4个部分——理解SQL注入(第1章)、发现SQL注入(第2~3章)、利用SQL注入漏洞(第4~7章),以及防御SQL注入(第8章~10章)。每一部分都有意针对不同的读者,从所有读者(理解SQL注入)、安全专家和渗透测试人员(发现和利用SQL注入漏洞),到管理数据库的开发专家和IT专家(发现和防御SQL注入)。为了使本书的内容更丰富,包含了第11章以提供参考资料,该章还包含了本书并未详细介绍的其他数据库平台。如果偶然遇到这样的平台,读者可以参考本书前面章节中讨论的各种技术。
下面是每一章的内容提要:
第1章——介绍什么是SQL注入,以及SQL注入是如何发生的。
第2章——介绍如何从Web应用程序前端发现SQL注入,包括如何检测可能存在的SQL注入漏洞、如何确认SQL注入漏洞的存在,以及如何自动发现SQL注入漏洞。
第3章——如何通过审查代码来发现SQL注入漏洞,既可以手工方式审查代码,也可以通过自动方式审查代码。
第4章——如何利用SQL注入漏洞,包括几种常见技术,比如UNION语句和条件语句、枚举数据库模式、盗取密码哈希,以及以自动化利用SQL注入漏洞。
第5章——如何利用SQL盲注漏洞,包括使用基于时间、基于响应和非主流通道返回数据。
第6章——介绍如何通过SQL注入利用操作系统的漏洞,包括读取和写入文件,以及通过SQL注入漏洞执行操作系统命令。
第7章——介绍利用漏洞的高级主题,包括如何利用二阶SQL注入漏洞、如何利用客户端SQL注入漏洞,以及如何通过SQL注入执行混合攻击。
第8章——介绍针对SQL注入的代码层防御,包括基于设计的方法、使用参数化查询、编码技术以及验证有效SQL注入方法。
第9章——介绍针对SQL注入在应用程序平台层次上的防御措施,包括使用运行时保护、数据库加固,以及如何减小SQL注入影响的安全部署方面的考虑。
第10章——介绍如何确认SQL注入攻击并从攻击中恢复,包括如何确定捕获SQL注入失败、确定SQL注入是否已经成功,以及在受到SQL注入攻击时如何对数据库进行恢复。
第11章——介绍SQL基础知识,为Microsoft SQLServer、Oracle、MySQL和PostgreSQL数据库平台的SQL注入提供快速参考,还包括在其他平台上执行SQL注入的细节,比如DB2、Sybase、Access和其他数据库。
SQL注入攻击与防御(第2版)(安全技术经典译丛) pdf下载声明
本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版