教你数据库漏洞防御技术

 数据库漏洞的存在有多种方式,因为每个现实的场景由多维组合而成,所以数据库漏洞对应也能够从不一样角度归类划分。这种分类将更有利于咱们掌握对每种漏洞的防御技术。html

  数据库安全实验室主要从如下九个角度对数据库漏洞进行分类介绍:‍‍‍‍linux

  ‍‍1.从漏洞做用范围划分web

  ‍‍‍‍远程漏洞:攻击者能够利用并直接经过网络发起对数据库攻击的漏洞。这类漏洞危害极大,攻击者能为所欲为的经过此漏洞危害网络上可辨识的数据库。此类漏洞为黑客利用漏洞的主力。sql

  ‍‍‍‍‍‍本地攻击:攻击者必须在本机拥有访问权限的前提下才能发起攻击的漏洞。比较典型有本地权限提高漏洞,这类漏洞在数据库中普遍存在,能让普通用户得到最高管理员权限。‍‍shell

  ‍‍‍‍2. 从漏洞危害等级划分数据库

  ‍‍‍‍漏洞危害等级主要按照CVE的评分来划分,分为三个档次:0-3(LOW);4-6(MEDIUM)、7-10(HIGH)。 洞的危害等级划分是根据一个漏洞对数据库形成什么影响来划分的。对数据库的响的机密性、安全性、可用性影响越大威胁等级越高,反之危险等级越低。举例说明:windows

  CVE-2006-1705危险等级是低。它对数据库系统文件无任何影响,可能会致使数据库某些配置文件被修改,对数据库运行无任何影响。安全

  CVE-2006-1871危险等级是中。它只是极可能形成某些信息泄露,有可能致使数据库某些配置文件被修改,可能致使数据库性能降低或小概率出现断连接。服务器

  CVE-2006-3702危险等级是高。它能够致使全部数据库系统文件泄露,数据库彻底被破坏,可能致使数据库完全宕机。网络

  ‍‍3. 从受影响系统划分

  ‍‍‍‍现有的操做系统多种多样,而且每种系统对应多个版本。操做系统主要分为如下五类:dos 系统、windows 系统、unix 系统、linux 系统和其余操做系统。因为漏洞注入点地址和操做系统具体版本有着直接的关系,因此须要按照操做系统的具体版原本划分。以oracle为例,因为不一样的操做系统对缓冲区溢出的防守机制不一样,致使这类漏洞基本不存在跨平台的可能。‍‍

  ‍‍4.从漏洞的危害范围划分

  ‍‍‍‍‍‍漏洞危害是指漏洞被利用后形成的各类危害。本文的危害是指对数据库的直接危害或利用数据库对其余系统形成的危害。这些危害能够分为三类:

  ‍‍‍‍‍‍危害数据库自身,这类漏洞主要是对数据库自身进行攻击。这类漏洞在下文中的“5. 从黑客入侵数据库的技术划分”一节中有详细讲解。

  ‍‍‍‍危害数据库所在服务器,这类漏洞经过数据库对服务器进行攻击。其中手段可分为:经过pl/SQL运行OS命令、经过JAVA运行OS命令、直接经过任务调度程序运行OS命令、使用ALTER SYSTEM运行OS命令,在oracle的某些版本中能够利用oracle编译本地pl/SQL应用程序的方式来运行OS命令。

  ‍‍危害数据库所在系统的文件系统,这类漏洞经过数据库对服务器上的文件系统作攻击。其中手段可分为:使用 UTL_FILE包访问文件系统、用JAVA访问文件系统、利用操做系统环境变量访问文件系统。

  危害数据库所在网络上的其余平台,这类漏洞经过数据库对网络上的其余数据库和服务进行入侵。

  ‍‍5. 从黑客入侵数据库技术划分

  ‍‍‍‍‍‍5.1 SQL注入

  ‍‍‍‍‍‍SQL本文说所的SQLSQL注入不是web端的,而是针对数据库自身的SQLSQL注入漏洞。二者差别很大。 pl/SQL注入的思想很是简单,

  ‍‍‍‍在正常的sql语句中经过嵌入、注释、转义符等手段加入针对数据库漏洞或数据库设置缺陷的畸形字符串或其余畸形输入。经过单次或屡次这种畸形输入逐步获取数据库中更高权限,最终获取数据库中敏感信息或直接夺取数据库DBA权限。进而可能对数据库所在的网络环境和本地服务器形成危害。

  ‍‍手段具体分为:

  代码注入。代码注入攻击多在支持多条SQL语句执行的数据中存在。它是经过黑客在正常语句中加入恶意EXECUTE命令完成攻击的。

  函数调用注入。函数调用注入是代码注入的变体,但确是整个SQL注入的核心。它利用数据库存在漏洞将恶意语句注入其中。具体手法分为:

  注入select /delete/insert/update语句

  注入函数

  注入匿名pl/SQL块

  游标注入

  利用触发器

  lateral提权技术

  ‍‍‍‍‍‍‍‍其中每种技术中还有细分,例如lateral提权技术中最著名的是CREATE ANT TRIGGER 权限提DBA、CREATE ANT VIEW 权限提DBA、EXECUTE ANY PROCEDURE权限提DBA、CREATE PROCEDUER 权限提DBA。

  ‍‍‍‍‍‍‍‍‍‍缓冲区溢出注入。‍‍‍‍这个缓冲区溢出和下文的缓冲区溢出不是一种。这种缓冲区溢出是数据库系统函数中某些参数被传入了超过参数长度限制的值,而引起的缓冲区溢出。

  ‍‍针对SQL操做的注入。‍‍最多见的是利用where子句修改SQL语句返回不一样的结果集,来达到获取数据库敏感信息的目的。

  ‍‍‍‍5.2 缓冲区溢出

  ‍‍‍‍‍‍缓冲区溢出:这里所说的缓冲区溢出是指源缓冲区的数据向小于自身位数的缓冲区复制数据时,超越目标缓冲区的位数边界,而且数据库未对存入数据进行边界判断,最终致使目标缓冲区爆满。目标缓冲区内存改变程序控制流、夺取操做系统、禁止访问等多种结果。缓冲区溢出主要能够分红四种:静态数据溢出、栈溢出、堆溢出和格式化串。

  ‍‍‍‍‍‍‍‍手段具体分为:

  ‍‍‍‍‍‍ 栈溢出 。‍‍‍‍缓冲区溢出的一种主要是经过利用截取函数返回值来进行栈溢出。方式主要分为两种,一种是经过缓冲区溢出改变函数逻辑流程;另外一种方式是经过缓冲区溢出改变函数返回地址。其中比较常见的为第二种。

  ‍‍‍‍ 堆溢出 。‍‍‍‍缓冲区溢出的一种,利用原理相似栈溢出,但因为堆中地址是动态分配的,没法准肯定位,因此黑客要利用堆溢出须要经过DWORD SHOOT技术来对堆进行扫描,获取堆溢出中可利用的地址。

  ‍‍‍‍静态数据区溢出。‍‍‍‍静态数据区域存放连续的全局变量和未初始化的静态变量,缓冲区在这发生溢出称为静态数据区溢出。

  ‍‍‍‍ 格式化串 。‍‍‍‍格式化串漏洞最显著的例子,就是在*printf()系列函数中按照必定的格式对数据进行输出。黑客主要是利用printf()系列函数有三条特殊的性质,首先,第一个能够被利用的性质是:*printf()系列函数的参数的个数是不固定的。其次,利用*printf()的一个特殊的格式符%n,黑客就向内存中写入exploit。再次,利用附加格式符控制跳转地址的值。

  ‍‍‍‍5.3 其余

  ‍‍‍‍ 弱口令 。一般指容易被别人猜想到或被破解工具破解的口令均为弱口令,其中很大一部分是数据库默认口令,其中有一部分是由于缺省密码产生的。

  ‍‍‍‍撞库。经过已收集到的在其余服务中注册的用户名和密码,对目标数据库进行访问尝试。因为不少人习惯用相同密码和帐号,所以成功登录到目标数据库的可能性大大提升,达成盗取大量敏感信息的目的。‍‍‍‍

  暴力破解。经过数据字典(密码库)对数据库的用户名进行碰撞,最终碰出能够用于访问数据库的用户和密码组合。‍‍‍‍

  6. 从数据库漏洞成因划分

  ‍‍‍‍输入验证错误。‍‍‍‍‍‍‍‍‍‍‍‍这种错误主要来源于字符串、包等输入值缺少正确合理的验证,从而致使畸形的输入值进入数据库系统函数中,对数据库形成不可预计的后果。

  ‍‍‍‍‍‍‍‍‍‍‍‍ 边界条件错误 。‍‍‍‍因为数据库属于大型复杂的软件,软件内部函数调用过于复杂,有时会出现对某个传入值的边界,不一样地方限制不一样,可能对数据库形成不良影响。

  ‍‍‍‍ 缓冲区溢出错误 。‍‍‍‍因为数据库中某些函数中的参数值缺少边界限制和检查,从而暴露出的数据库漏洞。

  ‍‍‍‍ 访问验证错误 。‍‍‍‍访问验证错误主要在数据库的网络监听上,黑客经过发送欺诈数据包,来骗取数据库重要信息。

  ‍‍‍‍ 意外条件错误 。‍‍‍‍因为数据库中逻辑比较复杂,某些不多被触发的逻辑分支因为软件周期等缘由,未被及时发现而致使的数据库漏洞。

  ‍‍‍‍ 其余错误 。‍‍‍‍‍‍除了以上五类缘由错误致使的数据库漏洞,大部分其余错误是因为用户在使用数据库时,未能按照数据库官方要求进行操做和配置,或者是数据库自己的设计缺陷所引起的漏洞。‍‍‍‍

  ‍‍7. 从漏洞利用的结果划分

  ‍‍‍‍ 越权访问 。访问本来不可访问的数据,包括读和写。这一条一般是攻击者的核心目的,并且可形成很是严重的灾难(如银行数据被人可写)。

  ‍‍‍‍ 提权 。经过越权等方式,对一个低权限用户提高权限,一步一步直到提高为DBA权限。利用提权后的帐号窃取数据库中核心数据。

  ‍‍‍‍ 拒绝服务 。攻击者强制目标数据库中止提供服务,是黑客经常使用的攻击手段之一。其中数据库端口进行的消耗性攻击只是拒绝服务攻击的一小部分,凡是使数据库服务被暂停甚至所处主机死机,都属于拒绝服务攻击。

  ‍‍‍‍‍‍ 夺取操做系统 。当黑客经过网络对数据库进行攻击,利用缓冲区漏洞的攻击会经过劫持被入侵函数中的栈中的函数返回值,来夺取‍‍‍‍‍‍函数控制,跳转到黑客编写的shellcode。当shellcode打开CMD(windows)便可经过数据库帐号来操控操做系统,从而夺取整个操做系统的过程。

  ‍‍‍‍ 认证绕过 。一般利用认证系统‍‍‍‍‍‍的漏洞不用授权就能进入系统。一般认证绕过都是为权限提高或直接的数据访问服务的。‍‍

  ‍‍‍‍8. 从数据库‍‍存漏洞的位置划分

  ‍‍‍‍因为不一样数据库相似功能的名称不一样本文依oracle为例说明:按照漏洞位置能够分为TNS(监听)漏洞 、Aurora GIOP server漏洞、XDB组件漏洞、DBMS_CDC_IMPDP漏洞、LT组件漏洞、DBMS_CDC_SUBSCRIBE漏洞、DBMS_CDC_ISUBSCRIBE漏洞、MDSYS.SDO_GEOM_TRIG_INSI漏洞、SYS.CDC_DROP_CTABLE_BEFORE漏洞、DBMS_SCHRDULER漏洞、UTL_FILE漏洞、Data Redaction漏洞、审计漏洞等。‍‍

  ‍‍‍‍9. 从漏洞产生的时序上划分

  ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 已发现好久的漏洞 。数据库厂商已经发布补丁或修补方法,不少人已经知晓。这类漏洞一般不少人已经进行了修改,宏观上看,危‍‍‍‍‍‍害较小。

  ‍‍‍‍‍‍刚发现的漏洞。数据库厂‍‍‍‍商刚发布补丁或修补方法,知道的人还很少。相对于上一种漏洞其危害性较大,若是此时出现了蠕虫或傻‍‍瓜化的利用程序,那么会‍‍‍‍‍‍‍‍致使大批数据库受到攻击。这也是通常黑客最多利用的漏洞。‍‍‍‍‍‍‍‍‍‍‍‍‍‍

  ‍‍‍‍0day漏洞。尚未公开的漏洞,在私下交易中的。这类漏洞一般是最危险的,每每是有组织黑客所采用的。

相关文章
相关标签/搜索