
POC لثغرة Apache Tika CVE-2025-66516 لأغراض تعليمية فقط
لأغراض تعليمية/اختبارات مصرح بها فقط | الترخيص | سياسة الأمان
يحتوي هذا المستودع على استغلال كمفهوم إثباتي (POC) لثغرة CVE-2025-66516، وهي ثغرة حقن كيان خارجي XML (XXE) في إصدارات Apache Tika السابقة للإصدار 3.2.2. تؤثر الثغرة على محلل XFA (بنية نماذج XML) في مكوّن tika-parser-pdf-module، مما يسمح للمهاجمين بقراءة الملفات المحلية وسرقة البيانات الحساسة عبر مستندات PDF مُعدّة بشكل خبيث.
CVE-2025-66516 هي ثغرة أمنية خطيرة في وظيفة تحليل PDF في Apache Tika. عند معالجة ملفات PDF التي تحتوي على نماذج XFA مدمجة، تفشل إصدارات Tika قبل 3.2.2 في تقييد معالجة الكيانات الخارجية بشكل صحيح في محللات XML. وهذا يسمح للمهاجمين بـ:
يتضمن هذا المستودع:
Apache Tika XXE، استغلال CVE-2025-66516، ثغرة أمنية في Tika، هجوم الكيان الخارجي في XML، حقن XXE في PDF، ثغرة Tika 3.2.1، XXE خارج النطاق، OOB XXE، بحث أمني، اختبار اختراق، استغلال POC، إفصاح عن ثغرة، ثغرة محلل XFA، tika-parser-pdf-module، ثغرة كشف ملفات، سرقة بيانات، هجوم SSRF، برمجة آمنة، تحليل ثغرات، اختبار أمني، قرصنة أخلاقية، أمن معلومات، بحث في الأمن السيبراني، كود استغلال Apache Tika، حمولة XXE، أمان PDF، ثغرة محلل مستندات
ملاحظة: تم اختبار هذا المفهوم الإثباتي والتحقق منه على:
أولاً، أنشئ دليلاً مخصصاً لملفات POC للحفاظ على تنظيم جميع الملفات.
mkdir apache_tika_poc
cd apache_tika_poc
قبل المتابعة مع POC، تحقق من أن بيئتك تحتوي على التبعيات المطلوبة. ستعرض هذه الأوامر إصدارات مترجم/بيئة تشغيل Java لديك وتفاصيل نظام التشغيل، وهي مهمة لإعادة إنتاج الثغرة.
# Check Java version
java -version
javac -version
# Check OS version
lsb_release -a
المخرجات المتوقعة: يجب أن ترى معلومات إصدار Java (مثل OpenJDK 17.x.x) وتفاصيل إصدار Ubuntu (24.04.3 LTS).
قم بتنزيل كل من النسختين القابلة للاستغلال (3.2.1) والمصححة (3.2.2) من Apache Tika. نحتاج إلى النسختين معاً لإثبات أن ثغرة XXE موجودة في 3.2.1 وتم إصلاحها في 3.2.2. ملف tika-app JAR هو ملف تنفيذي متكامل يتضمن جميع محللات Tika وتبعياتها.
# Download vulnerable Tika version
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.1/tika-app-3.2.1.jar
# Download patched Tika version
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.2/tika-app-3.2.2.jar
المخرجات المتوقعة: سيتم تنزيل ملفي JAR - tika-app-3.2.1.jar (~75 ميغابايت) وtika-app-3.2.2.jar (~75 ميغابايت).
تحقق من الإصدارات الدقيقة بفحص ملفات JAR manifest. يؤكد هذا أن لدينا النسخ الصحيحة القابلة للاستغلال والمصححة قبل الاختبار.
# Check vulnerable version manifest
unzip -p tika-app-3.2.1.jar META-INF/MANIFEST.MF
# Check patched version manifest
unzip -p tika-app-3.2.2.jar META-INF/MANIFEST.MF
المخرجات المتوقعة: ملفات manifest تعرض Implementation-Version: 3.2.1 و3.2.2 على التوالي، بالإضافة إلى طوابع زمنية للبناء وبيانات وصفية أخرى.
إذا نظرنا إلى نماذج Project Object Model (تحدد خصائص POM في Maven تبعيات المشروع وإعدادات البناء والبيانات الوصفية)، نلاحظ عدم وجود tika-parsers منفصلة كما ذُكر في النشرات الأمنية - قد يكون ذلك متعلقاً بالإصدار، والافتراض أن وحدة tika-parsers في الإصدارين 3.2.1 و3.2.2، وهما جزء من POC، قد استُبدلت بوحدات محلل فردية.
# List all component pom.properties files for both versions
unzip -l tika-app-3.2.1.jar | grep pom.properties | grep tika
unzip -l tika-app-3.2.2.jar | grep pom.properties | grep tika
المخرجات المتوقعة: قائمة بجميع وحدات مكونات Tika بما في ذلك tika-core وtika-parser-pdf-module وtika-xmp وغيرها. ستلاحظ وجود وحدات محلل فردية بدلاً من وحدة tika-parsers واحدة.
استخرج وعرض معلومات الإصدار لمكونات Tika الأساسية. يساعدنا هذا في فهم بنية الوحدات الداخلية والتأكد من أن كلاً من المكتبة الأساسية ووحدة محلل PDF في الإصدارات المتوقعة.
# Check tika-core, tika-parser-pdf-module, and tika-app versions for 3.2.1
unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-app/pom.properties
# Check tika-core, tika-parser-pdf-module, and tika-app versions for 3.2.2
unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-app/pom.properties
المخرجات المتوقعة: خصائص POM تعرض version=3.2.1 أو version=3.2.2 لكل مكوّن، مفصولة بـ ---. يجب أن تتطابق المكونات الثلاثة (tika-core وtika-parser-pdf-module وtika-app) مع الإصدار العام.
أنشئ ملف أسرار وهمياً سيكون هدف هجوم XXE الخاص بنا. يحاكي هذا الملف بيانات حساسة (مثل مفاتيح API أو بيانات الاعتماد) قد يحاول المهاجم سرقتها عبر ثغرة XXE.
# Create target secret file
echo "INTERNAL_SERVER_KEY=EXPOSED" > fake-secrets.txt
المخرجات المتوقعة: ملف باسم fake-secrets.txt يحتوي على السلسلة INTERNAL_SERVER_KEY=EXPOSED. سيتم قراءة هذا الملف بواسطة استغلال XXE.
لفهم الإصلاح، نحتاج إلى فك ترجمة ومقارنة فئة XMLReaderUtils من كلا الإصدارين. هذه الفئة مسؤولة عن إنشاء محللات XML، وتنبع الثغرة من طريقة تكوينها لمعالجة كيانات XML.
# Extract vulnerable JAR for analysis
mkdir tika-3.2.1-extract && cd tika-3.2.1-extract && unzip -q ../tika-app-3.2.1.jar && cd ..
# Extract patched JAR for analysis
mkdir tika-3.2.2-extract && cd tika-3.2.2-extract && unzip -q ../tika-app-3.2.2.jar && cd ..