hacktricks/network-services-pentesting/pentesting-printers/print-job-manipulation.md

6.1 KiB
Raw Blame History

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Superposition de contenu

Une manière simple de manipuler l'apparence des impressions est d'utiliser des superpositions.
PCL a une fonction documentée pour placer des macros de superposition sur un document. Malheureusement, cette fonctionnalité est limitée au travail d'impression actuel et ne peut pas être rendue permanente.
PostScript n'offre pas une telle fonctionnalité par défaut, cependant, elle peut être programmée en redéfinissant l'opérateur showpage qui est contenu dans chaque document PostScript pour imprimer la page actuelle. L'attaquant peut s'y accrocher, exécuter son propre code puis appeler la version originale de l'opérateur.
Ainsi, elle peut superposer toutes les pages à imprimer avec un fichier EPS personnalisé. Ce hack peut être utilisé pour ajouter des graphiques ou des polices arbitraires aux copies papier d'un document (Il est possible de modifier complètement l'apparence d'un document en superposant une page blanche puis en ajoutant du contenu personnalisé).
Évidemment, une telle approche ne peut être couronnée de succès que si PostScript est utilisé comme pilote d'imprimante et qu'aucun StartJobPassword n'est défini.

Comment tester cette attaque ?

Utilisez les commandes cross ou overlay de PRET en mode ps, puis déconnectez-vous et imprimez un document arbitraire :

./pret.py -q printer ps
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> overlay overlays/smiley.eps
printer:/> cross whoa "HACKED"
printer:/> exit

Remplacement de contenu

Même si un attaquant peut superposer un calque sur des documents existants, il ne pourra pas modifier des valeurs spécifiques dans le document original à moins d'en connaître la structure exacte. Parfois, on ne veut pas seulement ajouter du contenu personnalisé, mais analyser et remplacer des parties du document existant.
Le problème du remplacement de texte dans les fichiers PostScript peut être réduit au problème de l'extraction de chaînes du document rendu. Ce n'est pas trivial, car les chaînes peuvent être construites dynamiquement par le programme PostScript lui-même. Par conséquent, une simple analyse et un remplacement dans le code source du document ne sont pas envisageables.
Vous pouvez utiliser un opérateur show redéfini. L'opérateur show accepte une chaîne en entrée, qui est peinte à un certain emplacement de la page actuelle. En redéfinissant l'opérateur, le texte peut être extrait de manière élégante. Cette approche peut également être utilisée pour rechercher et remplacer de manière ciblée dans les chaînes immédiatement avant qu'elles ne soient peintes.
L'approche est réussie pour les documents PostScript basés sur LaTeX qui sont directement envoyés à l'imprimante alors qu'elle échoue pour les fichiers PostScript générés par GIMP qui, au lieu de chaînes, crée des graphiques raster de leur représentation. Le même problème se pose pour tout format de document y compris le PostScript lui-même lorsqu'il est traité par CUPS. Théoriquement, de telles constructions linguistiques pourraient également être analysées et devraient faire l'objet de recherches ultérieures.

Comment tester cette attaque ?

Utilisez la commande replace de PRET en mode ps, puis déconnectez-vous et imprimez un document PostScript contenant DEF :

./pret.py -q printer ps
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> replace "ABC" "DEF"
printer:/> exit
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :