Chinaunix首页 | 论坛 | 博客
  • 博客访问: 442829
  • 博文数量: 78
  • 博客积分: 2307
  • 博客等级: 上尉
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-04 00:31
个人简介

IT老鸟,信息安全硕士。

文章分类
文章存档

2017年(2)

2012年(21)

2011年(55)

分类: Oracle

2011-06-07 10:28:24

Oracle安全问题

网络使用Oracle已知的一些漏洞
本文乃《Oracle数据库攻防之道》的部分读书笔记,国内很

oracle不安全的信息。而没有深入说那里不安全。我简单

整理一下吧。
Oracle数据库攻防之道》 清华大学出版社0711月第一

版同时还有《数据库黑客大曝光-数据库服务器防护术》
圆规正传:
TNS

Refuse packet
的第54个字节如果是a3表示是一个无效的密

码,a2表示没有这样的用户。

获取版本

Listener 支持versionstatus命令识别版本。在10g后一

个不能用了。前一个还是可以用的
同时tns包的第9,10字节会给出正在使用的tns协议版本,第

11,12字节给出系统能够识别的版本号。可以不断降低这个

看看系统是那个版本。
Oracle 10r2 supports 0X139
Oracle 9r2 supports 0X138
Oracle 9i supports 0X137
Oracle 8 supports 0X139

使用xml数据库
通过tcp2100端口获取,这个是一项FTP服务
返回值中有
使用TNS错误文本返回值中VSNNUM的数字是10进制的。转化

16进制就能看到版本了。
TNS
版本的TTC函数
ANO商议头的后面三个字节找到客户机和服务器的版本第

17,18,19字节。

攻击身份验证
如果oracle工作在多线程服务器(mts)模式下并且切换了

端口就会重新验证密码。这个时候发送账号和密码,如果账

号存在oracle将会对数据库中密码先hash加密后用DES加密

后发过来。
过程是利用slgdt()函数来hashkzsrenc()获取DES密钥,

lncgks()加密,lncecb()输出。再调用kzsrenc()和用户输

入的密码散列值对该密码加密。将结果发送至客户机。
解密过程:
利用oracore库中的lncupw()创建自己密码散列值的一个副

本。然后调用函数kzsrenp()函数,这个生成密钥,以及在

CBC模式下用户密码的加密。接着,密文以AUTH_PASSWORD

形式送回服务器如果和原文hash一致则通过了验证。
oracle8.1.7.4下验证。
或者获取返回到AUTH_PASSWORD长度。如果是16位则密码不

大于8字符,如果密码在9~16字符则AUTH_PASSWORD长度在32

个字符。密码过小则暴力破解。

过多的用户名
SYS
SYSTEM
DBSNMP
CTXSYS
MDSYS
SCOTT
以上用户名除了DBSNMP是被激活的,其余的都是冻结的。一

旦用合法身份登录。就能激活。还有其他的账户。
10g$oracle_home/hostname_sid/sysman/config下的

emoms.properties内有密码虽然是DES加密的,emoms文件包

含密钥对应字段分别是emdPepPwdemdRepPwdSeed
剩下的文件是
postDBCreation.log
如果安装的时候密码出错。这个里面有
其余可能的组:
$oracle_home/cfgtoollogs/cfgfw/Cfmlogger_install_dat

e.log
$oracle_home/cfgtoollogs/cfgfw/oracle.assistants.ser

ver_install_date.log

$oracle_home/cfgtoollogs/configToolAllCommands
$oracle_home/inventory/Components21/oracle.assistant

s.server/10.2.0.1.0/context.xml
$oracle_home/inventory/ContentsXML/ConfigXML/oracle.

assistants.server.10_2_0_1_0.CFM.1.inst.xml

$oracle_home/cfgtoollogs/oui/installActions_install_

date.log(windows only)
如乱码05.......
里面的加密方式,密钥,密码用乱码表示。分别是开头的05

表示DES加密,接下来16个字符是密钥再接下来16个是密码.

超长用户名可导致缓冲区溢出问题。这个书上说的不详。

ORACLE的用户名默认长度我也没查。在oracle9r2以前有效

触发器可以产生脏数据和系统问题

编写存储过程的权限编写存储过程可以提权
后面的就没细看了。有空再借的看看。
 
后面几个章节分别是

5PL/SQL的相关信息。包括注入,二阶注入,攻击PL/SQL紊乱等

7,间接增加权限

8,攻破访问控制

9,攻击pl/sql web应用程序,使之穿破防火墙进入ORACLE后端

10,运行OS系统命令

11,饶过访问控制,攻击文件系统

12,饶过访问控制,在不引起注意的情况下盗取数据。

 

阅读(1753) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~