- Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
Certains imprimantes stockent des travaux d'impression accessibles depuis le serveur web. Cependant, la conservation des travaux doit être activée explicitement pour un certain travail d'impression et peut être effectuée à l'aide de commandes PJL standard ou de code PostScript propriétaire. Les travaux sont ensuite conservés en mémoire et peuvent être réimprimés depuis le panneau de commande.
Les travaux en attente sont conservés en mémoire et peuvent être réimprimés à partir du panneau de commande de l'imprimante. Cette fonctionnalité est prise en charge par diverses imprimantes, cependant, il semble que seuls certains appareils Epson permettent la conservation permanente des travaux en attente en utilisant `@PJL DEFAULT HOLD=ON`.
Utilisez la commande `hold` de [**PRET**](https://github.com/RUB-NDS/PRET) en mode pjl pour vérifier si la conservation permanente des travaux peut être activée :
PostScript offre une fonctionnalité similaire qui est cependant spécifique au modèle et au fournisseur. Pour les séries HP LaserJet 4k et diverses imprimantes Kyocera, la rétention de tâches peut être activée en préfixant les commandes suivantes à un document PostScript :
Bien qu'il soit théoriquement possible d'activer en permanence la rétention des travaux PostScript à l'aide de l'opérateur [startjob](./#postscript-ps), ce paramètre est explicitement réinitialisé par CUPS au début de chaque travail d'impression à l'aide de `<< /Collate false >> setpagedevice`. Pour contrer ce mécanisme de protection, l'attaquant peut redéfinir de manière permanente l'opérateur `setpagedevice` pour qu'il n'ait aucun effet.
Il est possible mais peu courant d'activer la rétention de travaux dans la boîte de dialogue d'impression comme discuté ci-dessus. Cependant, avec PostScript, on a un accès complet sur le travail d'impression en cours et avec l'opérateur [startjob](./#postscript-ps), il est même possible de sortir de la boucle du serveur et d'accéder aux travaux futurs. Une telle fonctionnalité a le potentiel de capturer tous les documents si PostScript est utilisé comme pilote d'imprimante.
Avec la capacité de se connecter à des opérateurs PostScript arbitraires, il est possible de manipuler et d'accéder à des travaux d'impression étrangers. Pour **analyser le flux de données réel envoyé à l'imprimante**, on peut appliquer une fonctionnalité assez cool du langage PostScript : lire son propre code de programme en tant que données en utilisant l'opérateur `currentfile`. De cette façon, tout le flux de données à traiter par l'interpréteur PostScript peut être accédé en le lisant et en le stockant dans un fichier sur le périphérique d'impression. Si l'imprimante ne propose pas d'accès au système de fichiers, les **documents capturés peuvent être stockés en mémoire**, par exemple dans des dictionnaires PostScript permanents. \
Un problème pratique est de décider **quel opérateur doit être connecté** car on n'a pas accès au flux de données jusqu'à ce que cet opérateur soit traité par l'interpréteur PostScript. Comme un attaquant veut capturer des travaux d'impression dès le début, l'**opérateur redéfini doit être le tout premier opérateur** contenu dans le document PostScript. Heureusement, tous les documents imprimés avec CUPS sont pressés dans une structure fixe commençant par `currentfile /ASCII85Decode filter /LZWDecode filter cvx exec`. En se basant sur l'hypothèse d'une telle structure fixe, l'attaquant peut capturer des documents dès le début et exécuter (aka imprimer) le fichier par la suite. Pour les systèmes d'impression **autres que CUPS**, cette attaque devrait également être possible, mais **les opérateurs doivent être adaptés**. Notez que l'en-tête PostScript qui inclut généralement la taille du support, les noms d'utilisateur et de travail ne peut pas être capturé en utilisant cette méthode car nous nous connectons d'abord au début du document réel. Une stratégie générique pour se connecter au début de chaque travail d'impression est de définir le paramètre système `BeginPage`, s'il est pris en charge par l'imprimante (la plupart des imprimantes le font). Cette vulnérabilité est probablement présente dans les périphériques d'impression depuis des décennies car seules les constructions de langage définies par la norme PostScript sont abusées.
Maintenant, imprimez des documents arbitraires (assurez-vous que PRET est déconnecté pour ne pas bloquer le canal d'impression). Ensuite, vous pouvez répertorier, récupérer ou réimprimer les documents capturés :
- Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.