CVE-2009-0229-PoC
Preuve de concept pour CVE-2009-0229 "Vulnérabilité de lecture de fichier du spouleur d'impression" LPE AFR (lié à CVE-2020-1048)
Détails
- Auteur : Andrei Costin ([email protected])
- Date du PoC : 2010-xx-xx
- Date de publication : 2020-05-14 (rappelé/inspiré par CVE-2020-1048 - oui, je suis arrivé trop tard à la fête :D )
- TL;DR
- Si vous voulez des 0day, fouillez le sous-système d'impression et de télécopie des OS :) - beaucoup de code hérité pour des raisons historiques - il y a des vulnérabilités pour tout le monde =)
Remarques
-
Remarque1 : Non vérifié - pas sûr à 100% que ce soit le même bogue qui déclenche le CVE-2009-0229
-
Remarque2 : Non vérifié - pourrait fonctionner sur des systèmes plus récents comme Windows Server 2012 et Windows Server 2016
-
Remarque3 : Toutes les versions de Windows sont livrées avec 4 fichiers "Page de séparation" par défaut
- pcl.sep
- pscript.sep
- sysprint.sep
- sysprtj.sep
-
Remarque4 : Cette astuce est plus vieille que Windows 95 =), je suis presque sûr qu'elle a été utilisée par des pros pour la "récupération furtive d'informations" ;)
Prérequis
- (attaquant local non-admin) a des "droits de gestion d'imprimante"
- option1 : peut ajouter une nouvelle imprimante
- option2 : peut modifier les paramètres d'une imprimante existante "à l'échelle du système" (souvent le cas)
- le "fichier arbitraire" à exfiltrer n'a pas de permission explicite "Refuser la lecture"
- très peu probable car cela rendrait l'accès aux fichiers pour la victime vraiment peu pratique/inutilisable
Exécution du PoC
-
L'attaquant local configure n'importe quelle imprimante à laquelle il/elle a accès pour utiliser un fichier "Page de séparation" fourni par l'attaquant (attack.sep), l'attaquant a maintenant une "imprimante armée"
- Voir "Références sur la page de séparation Windows" ci-dessous pour les détails
-
L'attaquant local crée le fichier "Page de séparation" (attack.sep) pour utiliser l'opérateur "@F"/"$F", comme suit, où le fichier à exfiltrer est supposé être "C:\secret.txt" (remarquez le \ et la concaténation directe à l'opérateur @F)
@
@FC:\\secret.txt
-
L'attaquant local doit imprimer quelque chose en utilisant l' "imprimante armée" ci-dessus
- Par exemple, l'attaquant local ouvre le Bloc-notes, imprime le document vide via l'imprimante configurée ci-dessus avec le fichier "Page de séparation"
- L'attaquant local utilise l'option "imprimer dans un fichier" (par ex., c:\temp\exfiltrated.out) lors de l'impression - il y a des "print to file" .ps dans la plupart des versions de Windows + .xps dans les versions plus récentes (http://ps-2.kev009.com/pcpartnerinfo/ctstips/e94a.htm)
- Ceci est fait pour que le contenu du fichier exfiltré n'aille pas vers l'imprimante (bien que ce soit aussi une option), mais devienne immédiatement disponible pour l'attaquant
-
Amélioration de l'attaque : un fichier "Page de séparation" peut contenir une liste par force brute des chemins/noms de fichiers les plus courants
-
Il y a aussi l'opérateur @L :)
Anecdotes
-
Trouvé en 2010 alors que je faisais des recherches/présentations "Hacking Printers for Fun and Profit"
-
Je suis presque sûr que les sous-systèmes d'impression et de télécopie sont truffés de vulnérabilités depuis Windows 3.1 (pour des raisons historiques)
Références de sécurité
Références sur la page de séparation Windows
- Voici à quoi ressemblent les boîtes de dialogue "Page de séparation" sur différentes versions de Windows
- Voici à quoi ressemble "Imprimer dans un fichier" dans certaines versions de Windows
- "Page de séparation" dans "Hands-On Microsoft Windows Server 2016 By Michael Palmer"
- "Créer des pages de séparation personnalisées dans Windows Server 2012/2016"
- "Utiliser une page de séparation lors de l'impression sous Windows"
- "Comment configurer une page de séparation d'impression ?"