IT老鸟,信息安全硕士。
分类: Oracle
2011-06-07 10:28:24
Oracle安全问题
网络使用Oracle已知的一些漏洞
本文乃《Oracle数据库攻防之道》的部分读书笔记,国内很
多oracle不安全的信息。而没有深入说那里不安全。我简单
整理一下吧。
《Oracle数据库攻防之道》 清华大学出版社07年11月第一
版同时还有《数据库黑客大曝光-数据库服务器防护术》
圆规正传:
TNS头
Refuse packet的第54个字节如果是a3表示是一个无效的密
码,a2表示没有这样的用户。
获取版本
Listener 支持version和status命令识别版本。在10g后一
个不能用了。前一个还是可以用的
同时tns包的第9,10字节会给出正在使用的tns协议版本,第
11,12字节给出系统能够识别的版本号。可以不断降低这个
看看系统是那个版本。
Oracle 10r2 supports 0X139
Oracle 9r2 supports 0X138
Oracle 9i supports 0X137
Oracle 8 supports 0X139
使用xml数据库
通过tcp的2100端口获取,这个是一项FTP服务
返回值中有
使用TNS错误文本返回值中VSNNUM的数字是10进制的。转化
成16进制就能看到版本了。
TNS版本的TTC函数
在ANO商议头的后面三个字节找到客户机和服务器的版本第
17,18,19字节。
攻击身份验证
如果oracle工作在多线程服务器(mts)模式下并且切换了
端口就会重新验证密码。这个时候发送账号和密码,如果账
号存在oracle将会对数据库中密码先hash加密后用DES加密
后发过来。
过程是利用slgdt()函数来hash,kzsrenc()获取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文件包
含密钥对应字段分别是emdPepPwd和emdRepPwdSeed
剩下的文件是
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以前有效
。
触发器可以产生脏数据和系统问题
编写存储过程的权限编写存储过程可以提权
后面的就没细看了。有空再借的看看。
后面几个章节分别是
5,PL/SQL的相关信息。包括注入,二阶注入,攻击PL/SQL紊乱等
7,间接增加权限
8,攻破访问控制
9,攻击pl/sql web应用程序,使之穿破防火墙进入ORACLE后端
10,运行OS系统命令
11,饶过访问控制,攻击文件系统
12,饶过访问控制,在不引起注意的情况下盗取数据。