版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL注入攻击与防御技术白皮书关键词:SQL注入,SQL语句,特征识别摘 要:SQL注入攻击是一种比较常见的针对数据库的漏洞攻击方式。本文对该攻击的原理和方式,结合示例进行了说明,并介绍了H3C安全产品对于此类漏洞的防御措施及策略。缩略语:缩略语英文全名中文解释SQLStructured Query Language结构化查询语言IPSIntrusion Prevention System入侵防护系统URLUniform Resource Locator统一资源定位符目 录 HYPERLINK l _bookmark0 SQL注入攻击简介 HYPERLINK l _bookmark0 3 HY
2、PERLINK l _bookmark0 概述 HYPERLINK l _bookmark0 3 HYPERLINK l _bookmark0 技术原理 HYPERLINK l _bookmark0 3 HYPERLINK l _bookmark1 简单的示例 HYPERLINK l _bookmark1 4 HYPERLINK l _bookmark4 SQL注入攻击的危害 HYPERLINK l _bookmark4 7 HYPERLINK l _bookmark4 IPS设备对于SQL注入攻击的防御 HYPERLINK l _bookmark4 7 HYPERLINK l _bookma
3、rk4 IPS设备SQL注入防御框架 HYPERLINK l _bookmark4 7 HYPERLINK l _bookmark6 IPS设备SQL注入防御框架的优点 HYPERLINK l _bookmark6 9 HYPERLINK l _bookmark7 典型组网应用 HYPERLINK l _bookmark7 10SQL注入攻击简介概述结构化查询语言SQL是用来和关系数据库进行交互的文本语言。它允许用户对数据进行有效的管理,包含了对数据的查询、操作、定义和控制等几个方面,例如向数据库写入、插入数据,从数据库读取数据等。关系数据库广泛应用于网站中,用户一般通过动态网页和数据库间接进
4、行交互。常见的动态网页一般都通过形如“ HYPERLINK http:/domain-name/page.asp?arg=value http:/domain-name/page.asp?arg=value”等带有参数的URL来访问。动态网页可以是asp、php、jsp或perl等类型。一个动态网页中可以有一个或多个参数,参数类型也可能是整型或字符串型等。安全性考虑不周的网站应用程序(动态网页)使得攻击者能够构造并提交恶意URL,将特殊构造的SQL语句插入到提交的参数中,在和关系数据库进行交互时获得私密信息,或者直接篡改Web数据,这就是所谓的SQL注入攻击。技术原理SQL注入攻击的主要方式是
5、构造巧妙的SQL语句,和网页提交的内容结合起来进行注入攻击。比较常用的技巧有使用注释符号、恒等式(如11)、使用union语句进行联合查询、使用insert或update语句插入或修改数据等。此外还可以利用一些内置函数辅助攻击,如使用phpinfo函数显示基本信息,char函数规避单引号等。下面结合具体例子介绍几种简单的构造方法。在关系数据库中,数据通常是以表的方式存储。假设存在一个名为user的表格,包含有id、username、pwd和level四个列,分别表示了用户ID、用户名、密码和权限等级。 HYPERLINK l _bookmark0 表1 中列举了几种简单的构造方法, 其中出现的
6、“ $username ”和“$password”等字符串为变量名称。表1 构造方法举例语句说明正常语句: SELECT * FROM user WHERE username = $username AND pwd = $password注入语句: SELECT * FROM user WHERE username = tom/* AND pwd = 这条语句后面的内容“AND pwd = ” 因为前面出现的“/*”而被数据库当作是注释的内容直接忽略掉(MySQL中采用/*作为注释),这样攻击者就可以不提交密码的内容而直接登录语句说明正常语句: SELECT * FROM user WHERE
7、 username = $username AND pwd = $password注入语句: SELECT * FROM user WHERE username = tom AND pwd = or 1=1这条语句利用了11这个恒等式作为逻辑判断,使得即使后面的pwd判断为假,该语句依然能够得到正确的执行, 攻击者不使用密码而成功登录正常语句:UPDATE user SET pwd = $password WHERE username = $username注 入 语 句 : UPDATE user SET pwd = abcd,level=3 WHERE username = tom这条语句
8、利用pwd后面的单引号以及后续的WHERE语句,不仅修改了密码, 还通过修改level为3成为高权限用户正常语句: SELECT * FROM user WHERE username = $username注入语句: SELECT * FROM user WHERE username = tom AND LEFT(pwd,1)=l这条语句利用内置函数来判断字符串中某个位置的字符,如果成功则显示出用户ID。这样反复的尝试下去,便会得到真正的密码正常语句: SELECT * FROM user WHERE username = $username AND pwd = $password注入语句:
9、SELECT * FROM user WHERE username = tom into outfile d:/http root/file001.txt/* AND pwd = 这条语句到相关路径下去寻找文件,其中的内容就是tom这个用户的相关信息正常语句: INSERT INTO user VALUES($id, $username, $password, 1)注入语句: INSERT INTO user VALUES(10,tom, password,3)/*, 1)这条语句新插入了一个ID为10 的用户tom,并将其权限直接设定为最高的3, 这种攻击方式可以用来通过漏洞注册高权限用户简
10、单的示例以上给出的攻击方式是构造SQL语句技巧中较为简单和常见的方式,这里给出一个实际网络中的例子,形象的说明SQL注入攻击的发生及其危害。 HYPERLINK l _bookmark2 图1所示的是某开源校友录网站的界面。正常情况下,如果在下拉框中选择某个年份,页面会显示出该年份毕业生的相关信息,此时Web页面的地址栏中的URL为: HYPERLINK http:/domain-name/Analysis/Project/index.php?act=view&year=2005 http:/domain-name/Analysis/Project/index.php?act=view&yea
11、r=2005图1 开源校友录网站存在漏洞的网页实际上,在对年份进行处理的代码没有对用户提交的数据进行有效过滤,导致存在一个SQL注入攻击漏洞。攻击者通过构造特殊的SQL语句提交给Web,会使得Web 页面显示来自于内部数据库中的相关内容。这里模拟攻击者的做法,在Web的地址栏中提交一个混合了SQL语句的URL。代码在执行该语句时对提交的变量内容未作合适的判断,导致SQL注入攻击得以成功。假设提交的语句如下: HYPERLINK http:/domain-/ http:/domain- name/Analysis/Project/index.php?act=view&year=2005%20un
12、ion%20select%201,1,1,alumniUserName,1,alumniPassword,1,1,1,1,1,1,1,1,1,1,1,1,1%20from%20alum ni_users%20where%20ID=1 HYPERLINK l _bookmark3 表2对该URL做了详细的解释。表2 URL内容说明内容说明 HYPERLINK /Analysis/Project/index.php /Analysis/Project/index.php?act=view&year=2005正常情况下的URL其中的“ year=2005” 的部分在代码中是作为SQL语句查询条件而执
13、行的。形如“ select * from table where year=2005”union攻击者添加的内容使得添加的整个部分都正常执行, 而不会在server数据库中产生错误select%201,1,1,alumniUserName,1,alumn iPassword,1,1,1,1,1,1,1,1,1,1,1,1,1%20from%20alumni_users%20where%20ID=1攻击者添加的内容在alumni_users表中提取出密码信息并显示%20空格正常情况下返回的页面会显示毕业生的用户名以及相关信息,而这里将密码作为select语句的选择列,会在返回页面中显示出用户的密
14、码。 HYPERLINK l _bookmark3 提交攻击语句后,页面返回的内容如图2所示。图2 攻击成功后显示的网页可以看到,页面除了返回用户的用户名及电子邮箱地址,还返回了经过加密的密码信息。实际上,通过将注入攻击中的“1”修改为表中相应的列名称,Web页面还会返回表中其他列的内容,这会使得更多的私人信息得以外泄。SQL注入攻击的危害从前述的简介可以看出,只要是带有参数的动态网页,且此网页访问了数据库,就有可能存在SQL注入攻击,因此SQL注入攻击潜在的发生概率相对于其他Web攻击要高很多,危害面也更广。其主要危害包括:获取系统控制权、未经授权状况下操作数据库的数据、恶意篡改网页内容、私
15、自添加系统帐号或数据库使用者帐号等。目前基于数据库的网络应用越来越多。与此同时,用于搜索SQL注入点的软件在网络上随处可见,攻击者只需要具备少量的专业知识就可以利用这些软件寻找目标进行攻击。攻击目标和攻击者的增加使得SQL注入攻击在近几年出现扩大的趋势。IPS设备对于SQL注入攻击的防御IPS设备SQL注入防御框架H3C通过对SQL注入攻击分析,发现这类攻击主要采用如下几种方式:通过一些常用的 SQL 注入语句,对网站进行 SQL 注入攻击。根据 Web 后台数据库本身的特点,对网站进行 SQL 注入攻击。使用 SQL 注入扫描工具,对网站进行 SQL 注入攻击。根据上述特点,H3C开发出了一
16、套完整的SQL注入攻击防御框架,能够及时发现各种已经暴露的和潜在的SQL注入攻击。H3C IPS设备对于SQL注入攻击的总体防御框架如 HYPERLINK l _bookmark5 图3所示。图3 SQL注入攻击防御框架H3C IPS设备采用基于特征识别的方式识别并阻断各种攻击。设备有一个完整的特征库,并可定期对特征库进行升级。当网络流量进入设备后,设备会检测流量与当前特征库的攻击特征是否匹配。如果匹配,则阻断网络流量并上报日志;否则,网络流量可以顺利通过。根据SQL注入攻击的特点,H3C IPS特征库可以从如下几个方面对SQL注入攻击特征进行识别:根据通用SQL语句特点,对其中的异常字段进行
17、识别攻击者在进行SQL注入攻击时,都会在URL 中携带一些异常字段,如“ and 1=1”。通过识别这些异常字段,检验网站是否存在SQL注入漏洞、获取数据库信息等。根据网站后台数据库的特性,对其中的异常字段进行识别目前,网站中主要使用的数据库有:MS-SQL、Access、MySQL、Oracle。每个数据库都有一些系统表,记录整个数据库信息。此外,一些数据库还有一些额外的功能可以导致SQL注入攻击。如:MS-SQL数据库可以执行系统命令;MySQL数据库可以将整个数据库信息导出到一个文件中;Oracle数据库可以将数据库信息反射到任意监听端口。通过对上述数据库的深入分析,根据各个数据库自身的
18、特点,提取了URL中出现的异常字段,确保攻击者无法通过数据库自身携带的特性进行SQL注入攻击。分析SQL注入扫描工具,阻断SQL注入扫描工具攻击探测在实际的攻击中,攻击者通常使用SQL注入扫描工具对网站进行自动化扫描,探测网站是否存在可以利用的SQL注入漏洞。H3C通过对知名的SQL注入扫描工具进行分析,研究出了这些工具的行为和方法,阻断其对网站的扫描探测。分析实际环境中的SQL注入漏洞由于网站的开发人员对一些输入参数没有进行严格检测,在实际环境中,存在的漏洞也非常多。一些大的知名漏洞发布网站发布了大量的SQL注入漏洞。通过分析、总结这些漏洞,确保攻击者无法通过已经公布的SQL注入漏洞进行攻击
19、。IPS设备SQL注入防御框架的优点H3C IPS设备的SQL注入攻击防御框架有如下几个优点:构造了完整的SQL注入检测模型,准确识别各种SQL注入攻击H3C针对SQL语言自身的特点,考虑到已知各种攻击的基本原理和形态,结合不同数据库的类型及SQL注入扫描工具,在各个不同漏洞模型之上开发出了通用的、层次化的SQL注入攻击检测模型,并融合到特征库中。这些模型抽象出SQL注入攻击的一般形态,对主流的攻击能够准确识别,构成了一个完整的SQL注入检测模型, 使得模型通用化。H3C通过模拟真实的网络环境,进行了大量的攻防测试,并整理、验证了近几年公布的SQL注入漏洞攻击,使用H3C IPS设备可以识别并且阻断所有这些已公布的攻击。检测方式灵活,可以准确识别变形的SQL注入攻击在实际攻击中,攻击者为了逃避防攻击设备的检测,经常对SQL注入攻击进行变形,如采用URL编码技术、修改参数等。H3C根据SQL注入漏洞发生的原理、攻击方式和攻击目标,对SQL注入攻击特征进行了扩展。即使攻击者修改注入参数、格式、语句等内容,相同漏洞原理下各种变形的攻击同样能够被有效阻断。这使得设备的防御范围扩大,防御的灵活性也显著增强,极大的减少了漏报情况的出现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025全新高处作业证理论考试题库高空证考试试题(附答案)
- 2026年南京紫金投资集团有限责任公司人员招聘考试参考试题及详细答案解析
- 2025上中学综合素质模拟题一 答案
- 小学二年级美术《多彩的挂饰》教学设计
- 2025心肺复苏操作标准考试题及答案
- 高中信息技术必修1《走近数据分析》项目式教学设计
- 2025孕产期保健及高危孕产妇管理培训班考核试题有答案
- 2025员额法官遴选面试题及答案(必刷)
- 2026爱国主义教育知识考试题库及参考答案
- 2026【安全员C3证】考试题库(含答案)
- 2026标准短视频拍摄合同律师审核修订版条款严谨权利义务对等公平合理可签
- 中国临床肿瘤学会(CSCO)胃癌诊疗指南(2026版)
- T SCSIA 0015-2023《四川省信息化项目费用测算标准》
- 小学主题班会课件:语言表达
- 设备检维修作业风险识别培训课件
- 《决策树与智能推理》教学课件-2025-2026学年人教版初中信息技术(人工智能专册)
- 2026年春季开学“两案九制”完整文件,工作方案应急预案晨午检复课证明传染病防控健康教育消毒隔离制度等
- 市政污水管网工程量计算表
- 2026年超声乳化术配合培训视频资料
- 国际贸易参展计划书模板
- 2025至2030中国饲料酸化剂行业深度研究及发展前景投资评估分析
评论
0/150
提交评论