如何利用oracle组件XD缓冲区漏洞获取系统控制权限及防护建议..docxVIP

如何利用oracle组件XD缓冲区漏洞获取系统控制权限及防护建议..docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何利用oracle组件XD缓冲区漏洞获取系统控制权限及防护建议.

如何利用oracle组件XD缓冲区漏洞获取系统控制权限及防护建议作者:安华金和 思成本文将向大家展示一种侵数据库的方法,希望能引起大家的警惕。想知道攻击者入侵数据库的方法首先要深究攻击者入侵数据库的目的。经过调查发现攻击者入侵者入侵数据库的最终目标要么是获取数据库敏感数据、要么是获取数据库控制权限、要么是获取数据库所在操作系统控制权限、要么是获取数据库所在网络环境的部分控制权限。其中获得任意的访问权限是达成上述目的的第一步(无论是数据库控制权还是数据库所在操作系统控制权)。对于没有用户名和密码的攻击者来说,绕过身份验证的过程成了整个过程的第一步。绕过身份验证的方法有很多,其中最常规的是利用数据字典离线或在线暴力破解用户名密码。本文给大家揭示的是高级攻击者采用的绕过身份验证的办法——利用oracle组件XDB存在的缓冲区漏洞,直接绕过身份验证获取ORACLE所在系统控制权限和oracle控制权限。在这里首先给大家解释两个关键名词。1.身份验证——通俗的说就是数据库客户端在登录数据库的时候,客户端输入的账号和密码通过数据库校验的过程。一般攻击者攻破身份验证有2种方式:方式一,研究身份验证原理,通过破解的方式破解身份验证。方式二,想办法不通过身份验证登录数据库,也就是说绕过身份验证。本文给大家揭示的利用XDB缓冲区溢出漏洞就是绕过身份验证的方法之一。2.Oracle的XDB组件——XDB组件是oracle上提供XML服务能力的组件,从Oracle9i之后,会作为缺省安装项。安装完XDB后,在启动Oracle时,有两个服务:HTTP(默认端口为8080)和FTP(默认端口2100)会缺省启动。这里的FTP服务是Oracle自身的FTP服务,不是标准的FTP服务,在这个FTP服务中进行的身份验证,将会使用Oracle数据库的用户名/密码。在Oracle提供的这个版本的FTP服务中存在一个巨大的缓冲区漏洞,通过这个漏洞我们即可以攻占Oracle所在的操作系统。查询TNS会看到该服务是否启动上图中红色标记的部分就显示出XDB组件中的FTP服务的状态和端口号。我们要利用的这个漏洞只需要知道目标数据库的ip地址和目标数据库确实存在的用户名(oracle有大量默认用户,所以真实的用户名很好获取。本例模拟攻击者行为采用的是低权限用户scott),但并不必知道该用户名对应的密码。通过一定的手段确定数据库IP地址后(安华金和数据库实验室其他文章会详细描述如何获取目标数据库的关键信息)用FTP访问数据库。FTP访问的方式是ftp://databasehost:端口号 用户名/密码的书写格式。虽然oracle对用户输入的每一个参数都进行的长度验证,但XDB身份验证操作中的PASS命令缺乏对由用户名密码等信息组合成的字符串的长度进行合理限制。导致当向PASS命令的执行函数中传入过长字符串会造成函数缓冲区溢出,然后利用溢出的字符串去改变栈(栈缓冲区溢出可以参考《windows缓冲区溢出原理(栈)》一文)的返回地址为shellcode的初始地址。通过shellcode攻击者控制住了数据库所在的操作系统。如下图所示:上图采用的漏洞验证工具是安华金和的DBHaker工具。至此我们已经模拟攻击者完成了通过XDB中缓冲区溢出漏洞来绕过身份验证的过程。为了让大家更加直观的感受该漏洞的危害,请大家点击右下角查看操作系统资源这个shellcode会直接拉起目标数据库所在服务器的控制台。我们通过这个控制台就可以模拟攻击者对目标数据库所在操作系统进行控制。上图中我们执行了net start 命令查询目标数据库所在操作系统的所有服务。此时我们可以直接对服务状态进行修改,来造成服务器宕机。如下图所示:通过net stop OracleOraHome92TNSListener 来停止目标数据库上的TNS监听。模拟合法客户端去访问该数据库,直接报错无法连上该服务器。因为这种方式我们可以控制管理员权限的系统账号,所以可以整个操作系统做任何变化。下面我们用获得的操作系统权限来通过数据库身份验证。Oracle数据库支持2种身份验证方式。其中一种是通过本操作系统权限来验证。如下图所示:用本地操作系统账号进行oracle登录身份验证。由于我们已经控制了操作系统所以用这种方式可以直接用数据库sysdba权限的sys账号登录。直接查询只有sysdba可见的存储数据库全部用户名和密码视图图中读取的就是目标机器上数据库中的所有用户名和密码。密码可以通过离线破解。当然攻击者都用SYS登上了数据库,完全可以通过执行“alter user scott identified by 新密码” 直接修改任意用户的密码。如果攻击者无法通过sqlplus / as sysdba 直接本地登录。报错如下图:这是由于目标机器

文档评论(0)

stzs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档