标签:无法自动 防范 现在 覆盖 操作系统 sha bsp linu 利用
缓冲区溢出原理
缓冲区溢出是指当计算机程序向缓冲区内填充的数据位数超过了缓冲区本身的容量。溢出的数据覆盖在合法数据上。理想情况是,程序检查数据长度并且不允许输入超过缓冲区长度的字符串。但是绝大多数程序都会假设数据长度总是与所分配的存储空间相匹配,这就为缓冲区溢出埋下隐患。
原理
Oracle数据库服务器登录长用户名缓冲区溢出漏洞
ORACLE数据库服务程序在拷贝用户名外部数据到本地内存缓冲区时没有进行充分边界检查,远程攻击者可以利用这个漏洞对数据库进行缓冲区溢出攻击,可能以Oracle进程权限在系统上执行任意指令。
Oracle数据库服务程序中处理验证请求部分的代码存在远程可利用缓冲区溢出,通过传递超长用户名给服务程序,远程攻击者可以触发基于栈的溢出,精心构建用户名数据可能以Oralce进程权限在系统上执行任意指令,在Linux/Unix系统上为"Oracle"权限,而在Windows系统下Local System权限。
多数Oracle的客户端应用程序会截断超长的用户名再提供给数据库,因此攻击者需要写自己的验证客户端来利用这个漏洞。不过NGSSoftware发现有一个客户端工具LOADPSP可以允许超长用户名输入,用户可以用来进行测试,工具在Oracle安装目录下的"bin"目录下。
搜索型注入点
这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“keyword=关键字”,有的不显示的链接地址,而是直接通过搜索框表单提交。
此类注入点提交的 SQL 语句,其原形大致为:
select * from 表名 where 字段 like ‘%关键字%‘
当我们提交注入参数为“keyword=‘and[查询条件] and ‘%‘=‘,则向数据库提交的完事SQL语句为:
select * from 表名 where 字段 like ‘%‘ and [查询条件] and ‘%‘=‘%‘
基于保护堆栈中返回地址的检测方法
缓冲区溢出攻击最关键的步骤是要通过修改函数返回地址来改变程序的流程,因此,在函数调用返回前,通过检查返回地址是否被修改可以判断是否有缓冲区溢出攻击发生。
缓冲区溢出攻击占了远程网络攻击的绝大多数,这种攻击可以使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权。如果能有效地消除缓冲区溢出的漏洞,则很大一部分的安全威胁可以得到缓解。 目前有三种基本的方法保护缓冲区免受缓冲区溢出的攻击和影响: 1、通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码; 2、强制写正确的代码的方法; 3、利用编译器的边界检查来实现缓冲区的保护,使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁。
标签:无法自动 防范 现在 覆盖 操作系统 sha bsp linu 利用
原文地址:https://www.cnblogs.com/blankicefire/p/9063073.html