数据库漏洞的存在有多种形式,因为每一个现实的场景由多维组合而成,因而数据库漏洞对应也可以从不同角度归类界定。这些分类将更有利于我们把握对每种漏洞的防护技术。

安华金和数据库安全实验室主要从以下九个角度对数据库漏洞进行分类介绍:

1.从漏洞作用范围界定

远程漏洞:功击者可以借助并直接通过网路发起对数据库功击的漏洞。这类漏洞害处极大,功击者能随心所欲的通过此漏洞害处网路上可识别的数据库。这种漏洞为黑客借助漏洞的主力。

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

2.从漏洞害处等级界定

漏洞害处等级主要根据CVE的评分来界定,分为三个档次:0-3(LOW);4-6(MEDIUM)、7-10(HIGH)。洞的害处等级界定是按照一个漏洞对数据库导致哪些影响来界定的。对数据库的响的绝密性、安全性、可用性影响越大恐吓等级越高,反之危险等级越低。举例说明:

CVE-2006-1705危险等级是低。它对数据库系统文件无任何影响,可能会造成数据库个别配置文件被更改ubuntu linux,对数据库运行无任何影响。

CVE-2006-1871危险等级是中。它只是很可能导致个别信息泄漏,有可能造成数据库个别配置文件被更改linux开发培训,可能造成数据库性能增长或小概率出现断链接。

CVE-2006-3702危险等级是高。它可以造成所有数据库系统文件泄漏linux 栈溢出攻击原理,数据库完全被破坏,可能造成数据库彻底宕机。

3.从受影响系统界定

linux 栈溢出攻击原理_栈溢出攻击原理及防范措施_栈溢出攻击实验

现有的操作系统多种多样,但是每种系统对应多个版本。操作系统主要分为以下五类:dos系统、windows系统、unix系统、linux系统和其他操作系统。因为漏洞注入点地址和操作系统具体版本有着直接的关系,所以须要根据操作系统的具体版本来界定。以oracle为例,因为不同的操作系统对缓冲区溢出的逼抢机制不同,造成这类漏洞基本不存在跨平台的可能。

4.从漏洞的害处范围界定

漏洞害处是指漏洞被借助后引起的各类害处。本文的害处是指对数据库的直接害处或借助数据库对其他系统引起的害处。这种害处可以分为三类:

害处数据库自身,这类漏洞主要是对数据库自身进行功击。这类漏洞在下文中的“5.从黑客入侵数据库的技术界定”一节中有详尽讲解。

害处数据库所在服务器,这类漏洞通过数据库对服务器进行功击。其中手段可分为:通过pl/SQL运行OS命令、通过JAVA运行OS命令、直接通过任务调度程序运行OS命令、使用ALTERSYSTEM运行OS命令,在oracle的个别版本中可以借助oracle编译本地pl/SQL应用程序的形式来运行OS命令。

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

害处数据库所在网路上的其他平台,这类漏洞通过数据库对网路上的其他数据库和服务进行入侵。

5.从黑客入侵数据库技术界定

5.1SQL注入

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

在正常的sql句子中通过嵌入、注释、转义符等手段加入针对数据库漏洞或数据库设置缺陷的畸形字符串或其他畸形输入。通过单次或多次这些畸形输入逐渐获取数据库中更高权限,最终获取数据库中敏感信息或直接夺回数据库DBA权限。因而可能对数据库所在的网路环境和本地服务器导致害处。

手段具体分为:

linux 栈溢出攻击原理_栈溢出攻击原理及防范措施_栈溢出攻击实验

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

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

注入select/delete/insert/update句子

注入函数

注入匿名pl/SQL块

游标注入

借助触发器

lateral加壳技术

其中每种技术中还有细分,比如lateral加壳技术中最知名的是CREATEANTTRIGGER权限提DBA、CREATEANTVIEW权限提DBA、EXECUTEANYPROCEDURE权限提DBA、CREATEPROCEDUER权限提DBA。

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

针对SQL操作的注入。‍‍最常见的是借助where谓词更改SQL句子返回不同的结果集,来达到获取数据库敏感信息的目的。

5.2缓冲区溢出

栈溢出攻击实验_linux 栈溢出攻击原理_栈溢出攻击原理及防范措施

缓冲区溢出:这儿所说的缓冲区溢出是指源缓冲区的数据向大于自身位数的缓冲区复制数据时,赶超目标缓冲区的位数边界,但是数据库未对存入数据进行边界判定,最终造成目标缓冲区爆满。目标缓冲区显存改变程序控制流、夺取操作系统、禁止访问等多种结果。缓冲区溢出主要可以分成四种:静态数据溢出、栈溢出、堆溢出和低格串。

手段具体分为:

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

堆溢出。‍‍‍‍缓冲区溢出的一种,借助原理类似栈溢出,但因为堆中地址是动态分配的,难以确切定位,所以黑客要借助堆溢出须要通过DWORDSHOOT技术来对堆进行扫描,获取堆溢出中可借助的地址。

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

低格串。‍‍‍‍低格串漏洞最明显的事例,就是在*printf系列函数中根据一定的格式对数据进行输出。黑客主要是借助printf系列函数有三条特殊的性质,首先,第一个可以被借助的性质是:*printf系列函数的参数的个数是不固定的。其次,借助*printf的一个特殊的格式符%n,黑客就向显存中写入exploit。再度,借助附加格式符控制跳转地址的值。

5.3其他

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

撞库。通过已搜集到的在其他服务中注册的用户名和密码,对目标数据库进行访问尝试。因为好多人习惯用相同密码和帐号,因而成功登录到目标数据库的可能性大大增强,达成窃取大量敏感信息的目的。

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

6.从数据库漏洞动因界定

输入验证错误。‍‍‍‍‍‍‍‍‍‍‍‍这些错误主要来始于字符串、包等输入值缺少正确合理的验证,因而造成畸形的输入值步入数据库系统函数中,对数据库引起不可预计的后果。

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

缓冲区溢出错误。‍‍‍‍因为数据库中个别函数中的参数值缺少边界限制和检测,进而曝露出的数据库漏洞。

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

意外条件错误。‍‍‍‍因为数据库中逻辑比较复杂,个别极少被触发的逻辑分支因为软件周期等诱因,未被及时发觉而引起的数据库漏洞。

其他错误。‍‍‍‍‍‍不仅以上五类缘由错误造成的数据库漏洞,大部份其他错误是因为用户在使用数据库时,无法根据数据库官方要求进行操作和配置,或则是数据库本身的设计缺陷所引起的漏洞。

7.从漏洞借助的结果界定

越权访问。访问先前不可访问的数据,包括读和写。这一条一般是功击者的核心目的,并且可引起特别严重的灾难(如建行数据被人可写)。

加壳。通过越权等方法linux 栈溢出攻击原理,对一个低权限用户提高权限,一步一步直至提高为DBA权限。借助加壳后的帐号泄露数据库中核心数据。

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

栈溢出攻击实验_栈溢出攻击原理及防范措施_linux 栈溢出攻击原理

夺回操作系统。当黑客通过网路对数据库进行功击,借助缓冲区漏洞的功击会通过绑架被入侵函数中的栈中的函数返回值,来夺回‍‍‍‍‍‍函数控制,跳转到黑客编撰的shellcode。当shellcode打开CMD(windows)即可通过数据库帐号来操控操作系统,进而夺回整个操作系统的过程。

认证绕开。一般借助认证系统‍‍‍‍‍‍的漏洞不用受权才能步入系统。一般认证绕开都是为权限提高或直接的数据访问服务的。

8.从数据库‍‍存漏洞的位置界定

因为不同数据库类似功能的名称不同本文依oracle为例说明:根据漏洞位置可以分为TNS(窃听)漏洞、AuroraGIOPserver漏洞、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漏洞、DataRedaction漏洞、审计漏洞等。

9.从漏洞形成的时序上界定

已发觉许久的漏洞。数据库厂商早已发布补丁或修复方式,好多人早已知晓。这类漏洞一般好多人早已进行了更改,宏观上看,危‍‍‍‍‍‍害较小。

刚发觉的漏洞。数据库厂‍‍‍‍商刚发布补丁或修复方式,晓得的人还不多。相对于上一种漏洞其害处性较大,若果此时出现了蠕虫或傻‍‍瓜化的借助程序,这么会‍‍‍‍‍‍‍‍引起大批数据库遭到功击。这也是通常黑客最多借助的漏洞。

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

以上9种不同角度的数据库漏洞界定,结合CVE对数据库这一类软件形成的漏洞进行简略说明,后续安华金和数据库安全实验室将会对每种类型的漏洞进行深‍‍入剖析。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复