当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

清华大学出版社:安全技术经典译丛(美)Justin Clarke《SQL注入攻击与防御》PDF电子书(SQL Injection Attacks and Defense)

资源类别:文库,文档格式:PDF,文档页数:364,文件大小:38.58MB,团购合买
全书共10章,分别介绍了SQL注入的基本概念,如何发现、确认并利用SQL注入和SQL盲注,利用操作系统防御SQL注入,SQL注入的一些高级话题,代码层和平台层防御等知识,书中主要针对的是Microsoft SQL Server、MySQL和Oracle这三大主流数据库。本书注重于实践,涉及的内容也比较前沿,另外,还包含了大量翔实的案例,它们都具有很好的现实指导作用,读者可从中学到最新的攻击和防御技术。 第1章什么是SQL注入 第2章SQL注入测试 第3章复查代码中的SQL注入 第4章利用SQL注入 第5章SQL盲注利用 第6章利用操作系统 第7章高级话题 第8章代码层防御 第9章平台层防御 第10章参考资料
点击下载完整版文档(PDF)

安全技术经典译从 SQL Injection Attacks and Defense SQL注入I攻击与防御 (美)Justin Clarke等著 唯一一本关于SOL注入攻击与防御的专业书籍. 黄晓磊李化译 理解、发现、利用和防御SOL注入的最佳指导 见解精辟,丰富、精彩的SOL注入示例及防御策路 作者多年长期实践经验的总结 ELSEVI 清华大学出版社

目 录 第1章什么是SQL注入 第3章复查代码中的SQL注入……71 1.1概述…… 3.1概述 ……72 1.2理解Web应用的工作原理……2 3.2复查源代码中的SQL注入……72 1.2.1一种简单的应用架构……3 3.2.1危险的编码行为……74 1.2.2一种较复杂的架构-……4 3.2.2危险的函数……79 1.3理解SQL注入……5 3.2.3跟踪数据……82 1.4理解SQL注入的产生过程……10 3.2.4复查PL/SQL和T-SQL代码…88 1.4.1构造动态字符串……10 3.3自动复查源代码……94 1.4.2不安全的数据库配置……16 3.3.1 YASCA……96 1.5本章小结……18 3.3.2 Pixy 96 1.6快速解决方案……18 3.3.3 AppCodeSca.........................7 1.7常见问题解答……19 3.3.4 LAPSE-….97 第2章SQL注入测试……21 3.3.5 SWAAT-…97 2.1概述 3.3.6 Microsoft SQL注入 ……22 2.2寻找SQL注入……22 源代码分析器……98 2.2.1借助推理进行测试……22 3.3.7 CAT.NET…98 2.2.2数据库错误……29 3.3.8 商业源代码复查工具……98 2.2.3应用响应……38 3.3.9 Ounce……99 2.2.4SQL盲注……-42 3.3.10 Fortify源代码分析器……100 2.3确认SQL注入……45 3.3.11 CodeSecure……100 3.4本章小结……100 2.3.1区分数字和字符串……46 3.5 2.3.2内联SQL注入……46 快速解决方案……101 2.3.3终止式SQL注入……51 3.6常见问题解答……102 2.3.4时间延迟……59 第4章利用SQL注入……105 2.4自动寻找SQL注入……60 4.1概述 ……106 2.5本章小结……68 4.2理解常见的利用技术……107 2.6快速解决方案……68 4.3识别数据库……108 2.7常见问题解答……69 4.3.1非盲跟踪……109

IV SQL注入攻击与防御 4.3.2育跟踪… …112 5.2.3拆分与平衡……173 4.4使用UINON语句提取数据……113 5.2.4常见的SQL盲注场景……175 4.4.1匹配列……114 5.2.5SQL盲注技术……176 4.4.2匹配数据类型……115 5.3使用基于时间的技术……183 4.5使用条件语句 ….…-119 5.3.1延迟数据库查询……183 4.5.1方法1:基于时间……120 5.3.2基于时间推断的考虑……188 4.5.2方法2:基于错误……122 5.4使用基于响应的技术……189 4.53方法3:基于内容…………123 5.4.1 MySQL响应技术……189 4.5.4处理字符串-……123 5.4.2 SQL Server响应技术…191 4.5.5扩展攻击……125 5.4.3 Oracle响应技术……192 4.5.6利用SQL注入错误……126 5.4.4返回多位信息……194 4.5.7 Oracle中的错误消息…128 5.5使用非主流通道……195 4.6枚举数据库模式……131 5.5.1数据库连接……195 4.6.1 SQL Server…131 5.5.2DNS渗漏-.…196 4.6.2 MySQL-136 5.5.3E-mail渗漏……200 4.6.3 Oracle……139 5.5.4HTTP渗漏……200 4.7提升权限……142 5.6自动SQL盲注利用…202 4.7.1 SQL Server…142 5.6.1 Absinth..............................203 4.7.2 Oracle…147 5.6.2 BSQL Hacker.......................204 4.8窃取哈希口令……148 5.6.3 SQLBrute............................206 4.8.1 SQL Server……149 5.6.4 Sqlninja…207 4.8.2 MySQL…150 5.6.5 Squeeza…208 4.8.3 Oracle…151 5.7本章小结……209 4.9带外通信……154 5.8快速解决方案……209 4.9.1E-mail……154 5.9常见问题解答……210 4.9.2 HTTP/DN..........................157 4.9.3文件系统……158 第6章利用操作系统……213 4.10自动利用SOL注入……161 6.1概述… ……214 4.10.1 Sqlmap161 6.2访问文件系统……215 4.10.2 Bobcat……164 6.2.1读文件……215 4.10.3BSQL-…164 6.2.2写文件……229 4.10.4其他工具……166 6.3执行操作系统命令………237 4.11本章小结……166 6.4巩固访问 ++ .………-243 4.12快速解决方案……167 6.5本章小结 ………245 4.13常见问题解答……168 6.6快速解决方案……245 6.7常见问题解答……246 第5章SQL盲注利用……171 6.8尾注……247 5.1概述 ……172 5.2寻找并确认SQL盲注……173 第7章高级话题……249 5.2.1强制产生通用错误……173 7.1概述…250 5.2.2注入带副作用的查询……173 7.2避开输入过滤器……250

目录V 7.2.1使用大小写变种……250 8.6.5创建数据库Honeypot……292 7.2.2使用SQL注释……250 8.6.6附加的安全开发资源……293 7.2.3使用URL编码……251 8.7本章小结 ....…293 7.2.4使用动态的查询执行……253 8.8 快速解决方案…294 7.2.5使用空字节…254 8.9 常见问题解答……295 7.2.6嵌套剥离后的表达式……255 7.2.7利用截断……255 第9章平台层防御…… …297 7.2.8避开自定义过滤器……257 9.1概述 …298 7.2.9使用非标准入口点……257 9.2使用运行时保护……298 7.3利用二阶SQL注入……259 9.2.1Web应用防火墙……-299 7.4使用混合攻击 ........263 9.2.2截断过滤器……304 7.4.1修改捕获的数据……263 9.2.3不可编辑的输入保护与 7.4.2创建跨站脚本……263 可编辑的输入保护……308 7,4.3在Oracle上运行操作 9.2.4URL策略/页面层策略……308 系统命令………264 9.2.5面向方面编程……309 7.4.4利用验证过的漏洞……………265 9.2.6应用入侵检测系统……310 7.5本章小结……265 9.2.7数据库防火墙……310 7.6快速解决方案……266 9.3确保数据库安全……310 7.7常见问题解答……267 9.3.1锁定应用数据……311 第8章代码层防御……269 9.3.2锁定数据库服务器……314 8.1概述 ……-270 9.4额外的部署考虑……316 8.2使用参数化语句 …………270 9.4.1最小化不必要信息的泄露……317 8.2.1Java中的参数化语句……271 9.4.2提高Web服务器日志 8.2.2NET(C#)中的参数化语句……272 的元余 …320 8.2.3PHP中的参数化语句……274 9.4.3在独立主机上部署Web 8.2.4PL/SQL中的参数化语句……275 服务器和数据库服务器……320 8.3输入验证……275 9.4.4配置网络访问控制……321 8.3.1白名单……276 9.5本章小结 …-321 8.3.2黑名单……277 9.6快速解决方案……321 8.3.3Java中的输入验证……278 9.7常见问题解答……322 8.3.4NET中的输入验证…………279 第10章参考资料……325 8.3.5PHP中的输入验证……280 10.1概述……326 8.4编码输出 ……280 10.2 SQL入门……326 8.5 规范化 …286 10.3SQL注入快速参考……331 8.6通过设计来避免SQL 10.3.1识别数据库平台……331 注入的危险……289 10.3.2 Microsoft SQL Server 8.6.1使用存储过程……289 备忘单……333 8.6.2使用抽象层……290 10.3.3 MySQL备忘单……338 8.6.3处理敏感数据……290 8.6.4避免明显的对象名……291 10.3.4 Oracle备忘单……341

VI SQL注入攻击与防御 10.4避开输入验证过滤器……346 10.6.4 Ingres备忘单……356 10.4.1引号过滤器……346 10.6.5 Microsoft Access-357 10.4.2HTTP编码……347 10.7资源-…357 10.5排查SQL注入攻击……348 10.7.1SQL注入白皮书……357 10.6其他平台上的SQL注入…351 10.7.2SQL注入备忘单……357 10.6.1 PostgreSQL备忘单……351 10.7.3SQL注入利用工具……357 10.6.2DB2备忘单……353 10.7.4口令破解工具……358 10.6.3 Informix备忘单……354 10.8快速解决方案……358

第1章 什么是SQL注入 本章目标 ·理解Web应用的工作原理 ·理解SQL注入 ●理解SQL注入的产生过程

2SQL注入攻击与防御 1.1 概述 很多人声称自己了解$QL注入,但他们听说或经历的情况都是比较常见的。SQL注入是 影响企业运营且最具破坏性的漏洞之一,它会泄露保存在应用程序数据库中的敏感信息,包括 用户名、口令、姓名、地址、电话号码以及信用卡明细等易被利用的信息。 那么,应该怎样来准确定义SQL注入呢?SQL注入(SOL Injection)是这样一种漏洞:应用 程序在向后台数据库传递SQL(Structured Query Language,结构化查询语言)查询时,如果为攻 击者提供了影响该查询的能力,则会引发SQL注入。攻击者通过影响传递给数据库的内容来 修改SQL自身的语法和功能,并且会影响SQL所支持数据库和操作系统的功能和灵活性。SQL 注入不只是一种会影响Wb应用的漏洞:对于任何从不可信源获取输入的代码来说,如果使 用了该输入来构造动态SQL语句,那么就很可能也会受到攻击(例如,客户端/服务器架构中的 “胖客户端”程序。 自SQL数据库开始连接至Web应用起,SQL注入就可能已经存在。Rain Forest Puppy因 首次发现它(或至少将其引入了公众的视野)而备受赞誉。1998年圣诞节,Rain Forest Puppy为 Phrack(www.phrack.com/issues.html?issue=54&id-8#article)(一本由黑客创办且面向黑客的电子 杂志)撰写了一篇名为“NT Web Technology Vulnerabilities(NT Web技术漏洞)”的文章。20oo 年早期,Rain Forest Puppy还发布了一篇关于SQL注入的报告(“How I hacked PacketStorm”, 位于www.wiretrip.net/rfp/txt/rfp2k0l.txt),其中详述了如何使用SQL注入来破坏一个当时很流 行的Wb站点。自此,许多研究人员开始研究并细化利用SQL注入进行攻击的技术。但时至 今日,仍有许多开发人员和安全专家对$QL注入不甚了解。 本章将介绍SQL注入的成因。首先概述wb应用通用的构建方式,为理解SQL注入的产 生过程提供一些背景知识。接下来从Wb应用的代码层介绍引发SQL注入的因素以及哪些开 发实践和行为会引发SQL注入。 1.2 理解Web应用的工作原理 大多数人在日常生活中都会用到Wb应用。有时是作为假期生活的一部分,有时是为了 访问E-mail、预定假期、从在线商店购买商品或是查看感兴趣的新闻消息等。Web应用的形式 有很多种。 不管是用何种语言编写的Wb应用,有一点是相同的:它们都具有交互性并且多半是数 据库驱动的。在互联网中,数据库驱动的Wb应用非常普遍。它们通常都包含一个后台数据 库和很多Wb页面,这些页面中包含了使用某种编程语言编写的服务器端脚本,而这些脚本则 能够根据Wb页面与用户的交互从数据库中提取特定的信总。电子商务是数据库驱动的Wb应 用的最常见形式之一。电子商务应用的很多信息,如产品信息、库存水平、价格、邮资、包装 成本等均保存在数据库中。如果读者曾经从电子零售商那里在线购买过商品和产品,那么应该 不会对这种类型的应用感到陌生。数据库驱动的Web应用通常包含三层:表示层(Wb浏览器 或呈现引擎)、逻辑层(如C#、ASP、NET、PHP、JSP等编程语言)和存储层(如Microsoft SQL Server、MySQL、Oracle等数据库)。Web测览器(表示层,如Internet Explorer、.Safari、Firefox 等)向中间层(逻辑层)发送请求,中间层通过查询、更新数据库(存储层)来响应该请求

第1章什么是SQL注入3 下面看一个在线零售商店的例子。该在线商店提供了一个搜索表单,顾客可以按特定的兴 趣对商品进行过滤、分类。另外,它还提供了对所显示商品作进一步筛选的选项,以满足顾客 在经济上的预算需求。可以使用下列URL查看商店中所有价格低于$100的商品: http://www.victim.com/products.php?val=100 下列PHP脚本说明了如何将用户输入(v)传递给动态创建的SQL语句。当请求上述URL 时,将会执行下列PHP代码段: /connect to the database $conn mysql_connect ("localhost","username","password"); /dynamically build the sql statement with the input Squery "SELECT FROM Products WHERE Price 'GET["val"]'". "ORDER BY ProductDescription"; /execute the query against the database Sresult mysql_query(Squery); /iterate through the record set while(Srow=mysql fetch array(Sresult,MYSOL ASSOC)) /display the results to the browser echo "Description (Srow['ProductDescription'])". "Product ID (Srow ['ProductID'])" "Price (Ssow['Price'])"; 接下来的代码示例更清晰地说明了PHP脚本构造并执行的SQL语句。该语句返回数据库 中所有价格低于$100的商品,之后在Wb浏览器上显示并呈现这些商品以方使顾客在预算范 围内继续购物。 SELECT FROM Products WHERE Price '100.00' ORDER BY ProductDescription; 一般来说,所有可交互的数据库驱动的Wb应用均以相同的(至少是类似的)方式运行。 1.2.1一种简单的应用架构 前面讲过,数据库驱动的Wb应用通常包含三层:表示层、逻辑层和存储层。为更好地 帮助读者理解Wb应用技术是如何进行交互的,从而为用户带来功能丰富的Web体验,我们 借助图1-1来说明前面描述的那个简单的三层架构示例。 表示层是应用的最高层,它显示与商品浏览、购买、购物车内容等服务相关的信息,并通 过将结果输出到浏览器/客户端层和网络上的所有其他层来与应用架构的其他层进行通信。逻 辑层是从表示层剥离出来的,作为单独的一层,它通过执行细节处理来控制应用的功能。数据 层包括数据库服务器,用于对信息进行存储和检索。数据层保证数据独立于应用服务器或业务 逻辑。将数据作为单独的一层还可以提高程序的可扩展性和性能。在图1-1中,Wb浏览器(表

4SQL注入攻击与防御 示层)向中间层(逻辑层)发送请求,中间层通过查询、更新数据库(存储层)响应该请求。三层架 构中一条最基本的规则是:表示层不应直接与数据层通信。在三层架构中,所有通信都必须经 过中间件层。从概念上看,三层架构是一种线性关系。 表示层 逻辑层 存储层 访问http:/www.victim.com 加载、编译并执行index..asp 执行SOL 脚本引紫 RDBMS 返回数据 呈现HTML 发送HTML web浏览器/星现引 编程语言:C#、ASP、,NET、PHP、JSP等 数据库:MSSQL、MySQL,Oracle等 图1-1简单的三层架构 在图l-l中,用户激活Web浏览器并连接到http:/www.victim.com。位于逻辑层的Web服 务器从文件系统中加载脚本并将其传递给脚本引擎,脚本引整负责解析并执行脚本。脚本使用 数据库连接器打开存储层连接并对数据库执行SQL语句。数据库将数据返回给数据库连接器, 后者将其传递给逻辑层的脚本引擎。逻辑层在将Wb页面以HTML格式返回给表示层的用户 的Web浏览器之前,先执行相关的应用或业务逻辑规则。用户的Wb浏览器呈现HTML并借 助代码的图形化表示展现给用户。所有操作都将在数秒内完成,并且对用户是透明的。 1.2.2一种较复杂的架构 三层解决方案不具有扩展性,所以最近几年研究人员不断地对三层架构进行改进,并在可 扩展性和可维护性基础之上创建了一种新概念:层应用开发范式。其中包括一种四层解决方 案,该方案在Wb服务器和数据库之间使用了一层中间件(通常称为应用服务器)。n层架构中的 应用服务器负责将AP(应用编程接口)提供给业务逻辑和业务流程以供程序使用。可以根据需要 引入其他的Wb服务器。此外,应用服务器可以与多个数据源通信,包括数据库、大型机以及其 他旧式系统。 图1-2描绘了一种简单的四层架构。 在图1-2中,Wb浏览器(表示层)向中间层(逻辑层)发送请求,后者依次调用由位于应用层 的应用服务器所提供的API,应用层通过查询、更新数据库(存储层)来响应该请求。 在图1-2中,用户激活Web浏览器并连接到htp:/www.victim.com。位于逻辑层的Wb服 务器从文件系统中加载脚本并将其传递给脚本引整,脚本引擎负责解析并执行脚本。脚本调用 由位于应用层的应用服务器所提供的API。应用服务器使用数据库连接器打开存储层连接并对 数据库执行SQL语句。数据库将数据返回给数据库连接器,应用服务器在将数据返回给Wb 服务器之前先执行相关的应用或业务逻辑规则。Wb服务器在将数据以HTML格式返回给表 示层的用户的Wb浏览器之前先执行最后的有关逻辑。用户的Web浏览器呈现HTML并借助 代码的图形化表示展现给用户。所有操作都将在数秒内完成,并且对用户是透明的

第1章什么是S0L注入5 表示层■ 逻辑层。 应用层 存储层 访间 加载、编译并执行 与数据存储交互,利用 执行SQL index.asp http://www.yictim.com 应用程序和业务逻辑 脚本引擊 RDBMS 星现HTML 发送HTML 为Web服务器提供数期 返回数据 Web浏览器/星现引翠 编程语言:C#、ASP、 CFC、EJB、SOAP、RMI 数据库:MSSQL、 ,NET、PHP、JSP等 Web服务等 MySQL、Oracle等 图1-2四层架构 层式架构的基本思想是将应用分解成多个逻辑块(或层),其中每一层都分配有通用或特定 的角色。各个层部署在不同的机器上,或者虽然位于同一台机器上,但实际上或概念上是彼此 分离的。使用的层越多,每一层的角色就越具体。将应用的职责分成多个层能使应用更易于扩 展,可以更好地为开发人员分配开发任务,提高应用的可读性和组件的可复用性。该方法还可 以通过消除单点失败来提高应用的健壮性。例如,决定更换数据库提供商时,只需修改应用层 的相关部分即可,表示层和逻辑层可保持不变。在互联网上,三层架构和四层架构是最常见的 部署架构。正如前面所介绍的,·层架构非常灵活,在概念上它支持多层之间的逻辑分离,并 且支持以多种方式进行部署。 1.3 理解SQL注入 Web应用越来越成熟,技术也越来越复杂。它们涵盖了从动态Internet和内部网入口(如电 子商务网站和合作企业外部网)到以HTTP方式传递数据的企业应用(如文档管理系统和ERP应 用)。这些系统的有效性及其存储、处理数据的敏感性对于主要业务而言都极其关键(而不仅仅 是在线电子商务商店)。Wb应用及其支持的基础结构和环境使用了多种技术,这些技术可能 包含很多在他人代码基础上修改得到的代码。正是这种功能丰富的特性以及便于通过Internet 或内部网对信息进行比较、处理、散播的能力,使它们成为流行的攻击目标。此外,随着网络 安全技术的不断成熟,通过基于网络的漏洞来攻破信息系统的机会正不断减少,黑客开始将重 心转向尝试危害应用上。 SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些 参数传递给后台的SQL服务器加以解析并执行。凡是构造SQL语句的步骤均存在被潜在攻击 的风险,因为SQL的多样性和构造时使用的方法均提供了丰富的编码手段。SQL注入的主要 方式是直接将代码插入到参数中,这些参数会被置入SQL命令中加以执行。不太直接的攻击 方式是将恶意代码插入到字符串中,之后再将这些字符串保存到数据库的数据表中或将其当作 元数据。当将存储的字符串置入动态SQL命令中时,恶意代码就将被执行。如果Wb应用未 对动态构造的SQL语句所使用的参数进行正确性审查(即便使用了参数化技术),那么攻击者就 很可能会修改后台SQL语句的构造。如果攻击者能够修改$QL语句,那么该语句将与应用的 用户拥有相同的运行权限。当使用SQL服务器执行与操行系统交互的命令时,该进程将与执

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共364页,可试读40页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有