Rsync 枚举与匿名同步

LinuxBeginner
立即练习

介绍

欢迎来到本次关于 Rsync 枚举和利用的实操实验。Rsync 是一个广泛用于在网络上同步两个位置之间文件和目录的实用工具。虽然功能强大,但如果配置不当,可能会暴露敏感数据。

在本次实验中,你将模拟渗透测试中的一个常见场景:备份服务配置不当。你将首先执行基本的网络侦察,以确认目标在线。接下来,你将使用 nmap 工具扫描 Rsync 服务。一旦识别出该服务,你将枚举可用的共享,并利用匿名访问配置从目标下载文件,最终获取隐藏的 flag。

完成实验后,你将了解如何:

  • 使用 ping 验证网络连接。
  • 使用 nmap 扫描其默认端口上的 Rsync 服务。
  • 枚举并连接到匿名的 Rsync 共享。
  • 将文件从远程目标同步到你的本地机器。

让我们开始吧。

使用 Ping 验证与目标的连接

在此步骤中,你将首先确认从你的机器可以访问目标系统。ping 命令是一个标准的网络诊断工具,它向主机发送 ICMP Echo Request 数据包以测试连接性。这是任何网络侦察任务中的第一个也是最基本的一步。

你的环境中包含一个可以通过主机名 target 访问的目标系统。

在终端中执行以下命令,向 target 发送四个数据包并验证其在线状态:

ping -c 4 target

你应该会看到类似以下的输出,这证实了目标正在响应你的请求。IP 地址和响应时间可能会略有不同。

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.065/0.072/0.091/0.011 ms

成功收到回复后,你就已确认你的机器与目标之间存在稳定的网络连接。

使用 Nmap 扫描开放端口

在此步骤中,你将使用 nmap 扫描目标上的开放端口并识别运行的服务。Nmap 是一个强大的网络发现和安全审计工具。我们将扫描 Rsync 的默认端口,即 873

执行以下命令,对 target 的 873 端口执行版本扫描:

nmap -sV -p 873 target

让我们分解一下这个命令:

  • nmap: 运行 Network Mapper 工具的命令。
  • -sV: 启用版本检测,它会尝试确定在开放端口上运行的服务的版本。
  • -p 873: 指定 Nmap 只扫描 873 端口。

扫描完成后,你将看到类似以下的输出:

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-12 11:20 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00012s latency).

PORT    STATE SERVICE VERSION
873/tcp open  rsync   (protocol version 31)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds

输出确认了 873/tcp 端口是 open 的,并且正在运行 rsync 服务。此信息对于我们攻击的下一阶段至关重要。

通过 Rsync 连接目标

在此步骤中,你将与发现的 Rsync 服务进行交互。第一步是列出服务器上可用的“模块”或共享。如果启用了匿名访问,服务器将响应一个公共可访问目录的列表。

运行以下命令列出 target 上的模块:

rsync rsync://target

服务器应该会响应一个可用模块的列表。在这种情况下,你将看到一个名为 public 的模块。

public          Public Files

现在你知道存在一个名为 public 的模块,你可以将其内容同步到你的本地机器。我们将使用 -av 标志:-a 用于归档模式(它会保留权限、所有权等),-v 用于详细输出。

执行以下命令将 public 模块的内容下载到你当前的目录 (.):

rsync -av rsync://target/public/ .

该命令将连接到目标,传输文件,并显示操作摘要。

receiving incremental file list
./
flag.txt

sent 43 bytes  received 121 bytes  328.00 bytes/sec
total size is 31  speedup is 0.19

输出显示一个名为 flag.txt 的文件已成功下载到你的本地目录。

探索目标系统并定位 Flag

在最后一步中,你将检查从 Rsync 服务器下载的文件并获取 flag。由于你已将文件同步到当前目录,它们现在可以在本地供你检查。

首先,使用 ls 命令列出当前目录中的文件,并确认 flag.txt 已下载。

ls

你应该会在输出中看到 flag.txt

flag.txt

现在,使用 cat 命令显示 flag.txt 的内容。这将揭示你完成实验所需的 flag。

cat flag.txt

终端将显示 flag 的值。

labex{rsync_an0nym0us_4cc3ss_fl4g}

恭喜!你已成功识别了一个配置错误的 Rsync 服务,枚举了其共享,下载了其内容,并捕获了 flag。复制 flag 值以完成实验。

总结

在本实验中,你成功地对 Rsync 服务进行了安全评估,完成了从侦察到利用的整个过程。你学会了如何:

  • 使用 ping 命令与目标建立网络连接基线。
  • 使用 nmap 执行有针对性的端口扫描,识别开放的 Rsync 服务及其版本。
  • 与 Rsync 服务器交互以列出公共可用的模块,这是枚举的关键步骤。
  • 利用匿名访问的错误配置,将文件从目标同步到你的本地机器。
  • 从下载的文件中定位并检索 flag,从而完成目标。

这个练习展示了一个关键的安全原则:像 Rsync 这样为便利性而设计的服务,必须通过身份验证和访问控制进行妥善保护。允许 Rsync 服务器进行匿名访问可能导致严重的数据泄露。通过理解这些攻击向量,你将能更好地保护网络服务。