黑客狙击Oracle系统的八大常用套路(1)

Oracle的销售在向客户兜售其数据库系统一直把它吹捧为牢不可破的,耍嘴皮子容易,兑现起来可就不那么容易了。不管什么计算机系统,人们总能够找到攻击它的方法,Oracle也不例外。本文将和大家从黑客的角度讨论黑客是用哪些方法把黑手伸向了你原以为他们不能触及的数据,希望作为Oracle的数据库管理员能够清楚的阐明自己基础架构的哪些区域比较容易受到攻击。同时我们也会讨论保护系统防范攻击的方法。

1.SQL注入攻击

如今大部分的Oracle数据库都具有为某种类型网络应用服务的后端数据存储区,网页应用使数据库更容易成为我们的攻击目标体现在三个方面。其一,这些应用界面非常复杂,具有多个组成成分,使数据库管理员难以对它们进行彻底检查。其二,阻止程序员侵入的屏障很低,即便不是C语言的编程专家,也能够对一些页面进行攻击。下面我们会简单地解释为什么这对我们这么重要。第三个原因是优先级的问题。网页应用一直处于发展的模式,所以他们在不断变化,推陈出新。这样安全问题就不是一个必须优先考虑的问题。

SQL注入攻击是一种很简单的攻击,在页面表单里输入信息,悄悄地加入一些特殊代码,诱使应用程序在数据库里执行这些代码,并返回一些程序员没有料到的结果。例如,有一份用户登录表格,要求输入用户名和密码才能登录,在用户名这一栏,输入以下代码:

cyw'); select username, password from all_users;--

如果数据库程序员没有聪明到能够检查出类似的信息并“清洗”掉我们的输入,该代码将在远程数据库系统执行,然后这些关于所有用户名和密码的敏感数据就会返回到我们的浏览器。

你可能会认为这是在危言耸听,不过还有更绝的。David Litchfield在他的著作《Oracle黑客手册》(Oracle Hacker's Handbook)中把某种特殊的pl/sql注入攻击美其名曰:圣杯(holy grail),因为它曾通杀Oracle 8到Oracle10g的所有Oracle数据库版本。很想知道其作用原理吧。你可以利用一个被称为DBMS_EXPORT_EXTENSION的程序包,使用注入攻击获取执行一个异常处理程序的代码,该程序会赋予用户或所有相关用户数据库管理员的特权。

这就是Oracle发布的著名安全升级补丁Security Alert 68所针对的漏洞。不过据Litchfield称,这些漏洞是永远无法完全修补完毕的。

防范此类攻击的方法

总而言之,虽说没有万能的防弹衣,但鉴于这个问题涉及到所有面向网络的应用软件,还是要尽力防范。目前市面上有各式各样可加以利用的SQL注入检测技术。可以参照http://www.securityfocus.com/infocus/1704 系列文章的详细介绍。

还可以用不同的入侵检测工具在不同的水平上检测SQL注入攻击。访问专门从事Oracle安全性研究的Pete Finnigan的安全网站http://www.petefinnigan.com/orasec.htm,在该网页搜索“sql injection”,可以获得更多相关信息。Pete Finnigan曾在其博客上报告称Steven Feurstein目前正在编写一个称为SQL Guard 的pl/sql程序包,专门用来防止SQL注入攻击,详情请查看以下网页http://www.petefinnigan.com/weblog/archives/05.htm

对于软件开发人员来说,很多软件包都能够帮助你“清洗”输入信息。如果你调用对从页面表单接受的每个值都调用清洗例行程序进行处理,这样可以更加严密的保护你的系统。不过,最好使用SQL注入工具对软件进行测试和验证,以确保万无一失。

1. 默认密码

Oracle数据库是一个庞大的系统,提供了能够创建一切的模式。绝大部分的系统自带用户登录都配备了预设的默认密码。想知道数据库管理员工作是不是够勤奋?这里有一个方法可以找到答案。看看下面这些最常用的预设用户名和密码是不是能够登录到数据库吧:

Username Password

applsys apps

ctxsys change_on_install

dbsnmp  dbsnmp

outln  outln

owa  owa

perfstat  perfstat

scott  tiger

system  change_on_install

system  manager

sys  change_on_install

sys  manager

就算数据库管理员已经很勤奋的把这些默认配对都改了,有时候想猜出登录密码也不是一件困难的事情,逐个试试“oracle”、“oracle4”、“oracle8i”、“oracle11g”,看看碰巧是不是有一个能登录上去的。

Pete Finnigan提供了一份关于缺省用户和对应密码的名单,该名单非常全面而且是最新的,并包括已经加密的密码。如果你用all_users来进行查询,可以尝试并比较一下这份名单,详细名单请参阅:http://www.petefinnigan.com/default/default_password_list.htm

防范此类攻击的方法

作为数据库管理员,应该定期审核所有的数据库密码,如果某些商业方面的阻力使你不能轻易更改容易被人猜出的密码,你可以尽量心平气和地和相关人员解释,用一些直观的例子来阐明如果不修改密码的话会有什么不好的事情发生,会有什么样的风险存在。

Oracle也提供了密码安全profile,你可以激活该profile,在某种水平上加强数据库密码的复杂性,还可以执行定期密码失效。要注意要把这个功能设置为只对通过网络服务器或中间层应用服务器登录的事件起作用。

2. 蛮力攻击(Brute Force)

蛮力攻击,就像其名字所暗示的,就是不停的撬,直到“锁”打开为止的方法。对于Oracle数据库来说,就是用某种自动执行的进程,通过尝试所有的字母数字组合来破解用户名和密码。

Unix的管理员就可以利用一款名为John the Ripper的密码破解软件来执行这类的攻击。现在如果你下载某个补丁,你也可以利用这款软件来对Oracle进行蛮力攻击,敲开其密码。不过根据密码的复杂程度不同,这可能是个很费时的过程,如果你想加快这个进程,可以事先准备一张包含所有密码加密的表,这样的表叫做Rainbow table,你可以为每个用户名准备一张不同的rainbow table,因为这种密码加密算法把用户名作为助燃剂。在这里就不再深入介绍更多的细节问题了,大家可以查阅http://www.antsight.com/zsl/rainbowcrack/获得更多信息。

Oracle服务器的默认设置是,对某个特定帐户输错密码达十次就会自动锁定该帐户。不过通常“sys as sysdba”权限没有这个限制,这可能是因为如果你锁定了管理员,那所有人都将被锁定。这样的设置为我们黑客破解软件(OraBrute)如开辟了一条生路,它们会昼夜不停地敲打你数据库的前门,直到它乖乖打开为止。

防范此类攻击的方法

想要抵御此类攻击,可以使用之前提及的对付预设密码攻击的方法。不过好奇心过重的数据库管理员也可能下载上面提到的工具侵入自己的系统。这说明了你真正的风险来自何方。

更多相关文章
  • 本月收到一份关爱里程碑的邮件,入职满3周年了,从一个懵懂的新人到从容淡定的小油条,在外辛苦打工不容易,能收到一封简单的关怀邮件也是有感欣慰,这里祝愿公司越发展越好. 进入主题,移动网页设计中,很多同学常问一个问题:这么多种移动设备,要兼容哪几类呢? 相信很多人会回答主流的系统ios.android, ...
  • Docker 1.8.0 RC1 发布,正式版计划在 8 月 4 日(周二)发布.此版本引入了一些非常棒的 apt & yum repos. Docker 1.8.0 将会引入一个新的 API 来文件和目录到一个容器中,每个人都可以使用 Docker Remote API 实现他们的构建系统 ...
  • Problem E: Swipe Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 100  Solved: 15[Submit][Status][Web Board] Description 德鲁伊在炉石传说中是一个很稳定的职业,主流的卡组套路有咆哮德, ...
  • 特别声明:本系列文章LiAnLab.org著作权所有,转载请注明出处.作者系LiAnLab.org资深Android技术顾问吴赫老师.本系列文章交流与讨论:@宋宝华Barry 共18次连载,讲述Android Service背后的实现原理,透析Binder相关的RPC. 1.1 实现Remote S ...
  •     R G B 值   R G B 值   R G B 值 黑色 0 0 0 # 黄色 255 255 0 #FFFF00 浅灰蓝色 176 224 230 #B0E0E6 象牙黑 41 36 33 #292421 香蕉色 227 207 87 #E3CF57 品蓝 65 105 225 #41 ...
  • 一种最早出现在2012年名叫Stegoloader的木马,在最近几个月里死灰复燃,主要以美国的医疗组织为攻击目标.这是一种将恶意代码隐藏在PNG图片文件内部的计算机木马,使用数字隐写技术绕过计算机和网络防御系统. 据戴尔安全工作室(Dell SecureWorks)最近的一份报告显示,尽管该木马主要 ...
一周排行
  • 又到了一年一度的大节日,又是各种求表白闹分手还有想哥哥的日子,作为嘴炮领袖兼道德模范,我决定今天说真话,且不说废话. 为表达对于长期关注我空间以及博客的少年们的谢意,我决定说点什么,让大家作为茶余饭后的谈资. 最近工 ...
  • 相必大家都知道 stdClass 类,这这可看成是PHP5的一个基类, 提供了类似于数组的调用方法可以通过显式的方法将一个数组转换成stdClass,然后通过用对像的方式访问PHP内容到剪贴板PHP代码:$a = n ...
  •  前段时间大概2012年圣诞节左右,在t00ls上看见ecshop全版本注入,当时也下载了最新的程序分析了下,最近考试比较忙,今天刚考完,把我分析的记录下来.     漏洞关键文件:     /includes/li ...
  • [html] /////////第一次打开时判断网络状态   - (int) connectedToNetwork   {       NSString *kindStr;       int kind;       ...
  • <See You Again>是由美国说唱歌手Wiz Khalifa和新人查理·普斯共同演唱的一首歌曲 ,于2015年3月17日发行,收录于电影<速度与激情7>的原声带中,作为该电影的片尾曲和 ...
  • OpenStack Swift client开发 如果你搭建好了Swift环境 ,你应该可以通过Swift 命令 来尝试去测试上传下载等功能,这是因为在安装Swift的时候,通常会安装一个python-swiftcl ...
  • Java培训.Android培训.iOS培训..Net培训.期待与您交流! - cmd编译出现"错误:编码GBK的不可映射字符" win7改成系统默认,XP改成ANSI即可 是 1.dir : 列 ...
  • Mac 下配置 Git 服务器 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 XCode 4 默认支持 Git 作为代码仓库,当我们新建一个仓库的时候,可以勾选创建 ...
  • 美女图片是国内互联网入门级站长最喜欢做的网站之一,怎么做好一个美女图片站?又是一个大难题,到目前为止国内互联网还没像国外一样出现大型的图片网站比如Flickr,所以还是有很大的发展机会,下面成都网站优化谈一下做好一个 ...
  • 如何是一个指针变量成为空指针: 如果 p 是一个指针变量,则 p = 0;.p = 0L;.p = ‘\0’;.p = 3 - 3;.p = 0 * 17; 中的任何一种赋值操作之后(对于 C 来说还可以是 p = ...