网络安全 频道

安华金和 数据库攻击与防御通用知识

  渗透脚本

  黑客渗透时使用的攻击脚本,结构为:脚本名称、脚本功能详细描述、脚本危害程度、漏洞攻击代码程序等部分。

  0day漏洞

  软件中暴露出漏洞,但由于软件开发周期等原因。数据库厂商未能及时修复的已知漏洞。这种漏洞一旦被黑客掌握,则可以会被利用,用于对数据库进行渗透攻击。有可能会导致数据泄漏。

  Black Tuesday

  微软每个月第二周的星期二发布补丁(包含MSSQL),这一天被称为Black Tuesday。很多黑客会通宵达旦去研究微软发布的补丁,通过补丁对比寻找微软修复的漏洞。由于客户不一定能马上及时更新微软的最新补丁,所以黑客可能会利用这些从补丁中寻找到的漏洞对目标软件进行攻击。

  exploit

  黑客用于对软件进行攻击的一段含有恶意代码的输入。它可能是一段攻击性的网络数据包,也可能是一段带有攻击性的畸形串。它是黑客用于发动缓冲区溢出攻击的具体代码。

  shellcode

  Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。exploit中的一部分,是缓冲区溢出攻击中植入进程的代码。当缓冲区溢出成功劫持到函数返回地址之后,则进入shellcode的流程,执行shellcode部分的代码。

  缓冲区溢出

  缓冲区溢是指源缓冲区的数据向小于自身位数的缓冲区复制数据时,超越目标缓冲区的位数边界,并且数据库未对存入数据进行边界判断,最终导致目标缓冲区爆满。目标缓冲区内存改变程序控制流、夺取操作系统、禁止访问等多种结果。缓冲区溢出主要可以分成三种:静态数据溢出、栈溢出和堆溢出。

  缓冲区溢出,简单的说就是计算机对接收的输入数据没有进行有效的检测(理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。

  栈溢出

  栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。缓冲区溢出的一种主要是通过利用截取函数返回值来进行栈溢出。方式主要分为2种,1.通过缓冲区溢出改变函数逻辑流程。2通过缓冲区溢出改变函数返回地址。其中比较常见的为第二种。

  堆溢出

  堆溢出是缓冲区溢出的一种,利用原理类似栈溢出,但由于堆中地址是动态分配的无法准确定位,所以黑客要利用堆溢出需要通过DWORD SHOOT技术来对堆进行扫描。获取堆溢出中可利用的地址。[s1]

  DWORD SHOOT

  这种技术是缓冲区堆溢出的主要核心技术,由于堆中地址不是固定的是动态分配的所以需要通过散射的方式向内存堆中任意位置写入exploit,进而劫持进程,运行shellcode,已到达黑客对软件控制的目标。

  静态数据区溢出

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

  整数溢出

  "缓冲区溢出的一种主要由于整数在内存里面保存在一个固定长度 (在本章中使用32位)的空间内,它能存储的最大值就是固定的,当尝试去存储一个数,而这个数又大于这个固定的最大值时,将会导致整数溢出。例如A , B两个数都是32位长,首先赋值给A 一个32位整数的最大值,B被赋值为1。然后让A和B相加,然后存储结果到第3个无符号32位的整数C,代码如下:

  A = 0xFFFFFFFF;

  B = 0x00000001;

  C = A + B;

  很显然,A的值是:11111111 11111111 11111111 11111111;

  B的值是:00000000 00000000 00000000 00000001;

  两者相加,得到结果为:00000000 00000000 00000000 00000000。因此,C中的值是0,发生了整数溢出 当C是用来描述缓冲区大小或数组索引的时候,就可能被黑客利用,用来改变程序逻辑,绕过一些防御机制,已达到入侵的目的。"

  格式化串漏洞

  "格式化串漏洞最显著的例子,就是在*printf()系列函数中按照一定的格式对数据进行输出,可以输出

  到标准输出,即printf(),也可以输出到文件句柄,字符串等,对应的函数有fprintf,sprintf,

  snprintf,vprintf,vfprintf,vsprintf,vsnprintf等。能被黑客利用的地方也就出在这一系列

  的*printf()函数中,黑客主要是利用printf()系列函数有三条特殊的性质,首先第一个可以被利用的性质是:*printf()系列函数的参数的个数是不固定的。2.利用*printf()的一个特殊的格式符%n,我们就向内存中写入exploit。3.利用附加格式符控制跳转地址的值。"

  夺取操作系统权限

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

  SHE

  windows 早期的异常处理机制。活跃于WINDOWS SP3以前(包含SP3)的版本。后被VEH取代默认异常处理机制地位。SHE是一个单向链表,每当操作系统发生异常的时候,系统会检测进程的PEB结构,当PEB符合要求的时候,系统将会遍历SHE异常链表,SHE异常处理函数会得到执行。

  VEH

  VEH windows XP SP3后出现的新的异常处理机制,优先级高于SHE。VES是一个双向链表,每当操作系统发生异常的时候,系统会检测进程的PEB结构中的EnvironmentUpdateCount元素,当PEB. EnvironmentUpdateCount符合要求的时候,系统将会遍历VEH异常链表,VEH异常处理函数会得到执行。

  UEF

  系统默认异常处理函数,VEH/SHE 最后一环。当发生异常处理后一旦中间所以异常处理机制都无法处理的时候,最终会跳入系统异常处理。系统异常处理会采取强制关闭软件,并且跳出弹窗发出异常信息。

  Heap Spray

  一种加强shellcode稳定运行的方法。Heap Spray是在shellcode的前面加上大量的slide code(滑板指令),组成一个注入代码段。然后向系统申请大量内存,并且反复用注入代码段来填充。这样就使得进程的地址空间被大量的注入代码所占据。然后结合其他的漏洞攻击技术控制程序流,使得程序执行到堆上,最终将导致shellcode的执行。

  GS安全编译选项

  微软在VS2005后提供的一种安全机制,GS编译选项可以检查堆栈中是否有溢出。检查的方法是在函数栈的返回地址的前面加入一个随机生成的cookie验证串。如果函数栈遭到缓冲区溢出,改变了函数返回值,那在改变函数返回值之前一定会改变cookie串。在调用返回地址之前对随机的cookie进行检查发现被修改,则不执行返回地址,直接跳入异常处理。

  security cookie

  是一个在栈中的随机cookie串,用于检验栈是否被溢出。它属于微软在VS2005后提供的一种安全机制,GS编译选项中的一部分

  heap cookie

  是一个在堆中的随机cookie串,用于检验堆是否被溢出。它属于微软在VS2005后提供的一种安全机制,GS编译选项中的一部分

  web 层SQL注入攻击

  SQL命令注入漏洞源于PHP、asp等脚本语言对用户输入数据解析的缺陷。SQL注入攻击是黑客对数据库进行攻击的常用手段之一。缺乏对用户输入数据的合法性进行判断,使应用程序存在安全隐患。最终导致黑客可以通过WEB应用获取后台数据库中的敏感信息。

  SQL盲注

  当黑客向web应用发送注入点测试语句的时候,WEN应用把后台的数据库报错信息隐藏掉后,黑客通过响应时间等因素来判断后台数据库类型,此处是否为注入点的一种技术。

  内联SQL注入

  sql注入的一种,他的特点是在原有SQL语句中加入一些黑客需要查询的内容。虽然注入一些黑客要执行的SQL代码后,但原来的SQL语句依然会执行。

  终止式SQL注入

  sql注入的一种,他的特点是在原有SQL语句中加入一些黑客需要查询的内容。利用注释符彻底改变原SQL语句的含义,使整个SQL语句返回的结果完全被黑客所用。

  XSS攻击

  XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy).现在跨站脚本攻击是web应用新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。当然这种攻击手段攻击者的目标不再是是WEB应用,而是通过web应用来入侵其他客户端使用者。

  游标注入

  游标注入是指利用游标进行sql注入。游标分为3类,其中游标注入使用的是显式游标。发生游标注入有3种场景:1.缺乏异常处理,挂起的游标被低权限用户恶意利用2. oracle游标漏洞提权3. oracle游标设计本身的安全隐患。

  数据库层SQL注入

  数据库系统级的函数、系统级的包和一些安全缺陷,进行的通过SQL语句中的畸形字符串或者其他方式,进行越权或提权操作。往往最终可以把一个低权限账号提升到DBA权限

  代码注入

  在已有的SQL语句中插入新的SQL语句,一般需要数据库支持多条语句一起执行。

  函数调用注入

  针对数据库中某函数的参数已有的漏洞进行SQL串的注入。

  针对SQL操作的注入

  依靠对WHERE子句的修改使SQL语句返回不同的结果集

  弱口令

  通常认为容易被别人猜测到或被破解工具破解的口令均为弱口令,其中很大一部分是数据库默认口令

  缺省密码

  缺省密码是指数据库在创建过程中会产生默认用户名和默认密码。数据库提示用户修改密码,但用户未进行修改,产生缺省密码漏洞。例如:mssql中管理员用户sa/sa。

  拒绝服务攻击

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

  越权攻击

  数据库中用户根据权限划分,一些用户本身并不具备某些操作权限。黑客获得了这个数据库用户后通过一些畸形的sql语法串,对含有漏洞的函数进行注入。导致低权限用户获得高权限用户才有的操作权限,执行原本自身权限无法执行的语句,获取敏感数据。

  权限提升攻击

  数据库中用户根据权限划分,一些用户本身并不具备某些操作权限。黑客获取该数据库用户后通过一些畸形的sql语法串,对含有漏洞的函数进行注入。导致低权限用户获得高权限用户才有的操作权限,执行提权语句,获取敏感数据。

  社会工程攻击

  是一种利用社会工程学来进行的攻击。常见的短信诈骗、电话诈骗都属于社会工程学攻击范畴。

  暴力破解

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

  撞库

  通过已收集到的在其他服务中注册的用户名和密码,对目标数据库进行访问尝试。由于很多人习惯用相同密码和账号,很可能会成功登陆到目标数据库,盗取大量敏感信息。

0
相关文章