其中每种技术中还有细分,例如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. 从漏洞利用的结果划分
越权访问。访问原本不可访问的数据,包括读和写 。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据被人可写) 。
推荐阅读
- 如何修改MySQL数据库数据存储盘?
- MySQL数据库如何安装
- 详解数据库连接池概念、原理、运行机制等
- Java代码获取数据库表名、字段名、字段类型及注释等信息
- 在一个千万级的数据库查寻中,如何提高查询效率?
- 分析NoSQL比较火的三个数据库Memcached、Redis、MongoDB
- 什么是数据库?什么是SQL?怎么入门SQL?
- 数据库两大必备神器:索引和锁底层原理是什么
- 数据库缓存更新的套路
- html5怎么连接数据库?
