<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Algunas impresoras tienen trabajos de impresión almacenados accesibles desde el servidor web. Sin embargo, generalmente la retención de trabajos debe ser activada explícitamente para un trabajo de impresión determinado y se puede hacer utilizando comandos PJL estándar o código PostScript propietario. Los trabajos se mantienen entonces en memoria y pueden ser reimprimidos desde el panel de control.
Los trabajos en espera se mantienen en memoria y pueden ser reimpresos desde el panel de control de la impresora. Esta característica es soportada por varias impresoras, sin embargo, parece que solo algunos dispositivos Epson permiten que la retención permanente de trabajos sea configurada usando `@PJL DEFAULT HOLD=ON`.
Utiliza el comando `hold` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo pjl para verificar si se puede configurar la retención permanente de trabajos:
PostScript ofrece una funcionalidad similar que, sin embargo, es específica del modelo y del fabricante. Para la serie HP LaserJet 4k y varias impresoras Kyocera, la retención de trabajos se puede habilitar anteponiendo los siguientes comandos a un documento PostScript:
Es posible, aunque poco común, activar la retención de trabajos en el diálogo de impresión como se discutió anteriormente. Sin embargo, con PostScript, se tiene acceso completo sobre el trabajo de impresión actual y con el operador [startjob](./#postscript-ps), es incluso posible salir del bucle del servidor y acceder a trabajos futuros. Tal funcionalidad tiene el potencial de capturar todos los documentos si PostScript se utiliza como un controlador de impresora.
Con la capacidad de engancharse a operadores PostScript arbitrarios, es posible manipular y acceder a trabajos de impresión ajenos. Para **analizar el flujo de datos actual enviado a la impresora**, se puede aplicar una característica bastante interesante del lenguaje PostScript: leer su propio código de programa como datos utilizando el operador `currentfile`. De esta manera, se puede acceder al flujo de datos completo que será procesado por el intérprete de PostScript leyendo y almacenándolo en un archivo en el dispositivo de impresión. Si la impresora no ofrece acceso al sistema de archivos, **los documentos capturados pueden almacenarse en memoria**, por ejemplo, dentro de diccionarios permanentes de PostScript. \
Un problema práctico es decidir **qué operador debe ser enganchado** ya que no se obtiene acceso al flujo de datos hasta que este operador es procesado por el intérprete de PostScript. Como el atacante quiere capturar trabajos de impresión desde el principio, el **operador redefinido debe ser el primer operador** contenido en el documento PostScript. Afortunadamente, todos los documentos impresos con CUPS tienen una estructura fija que comienza con `currentfile /ASCII85Decode filter /LZWDecode filter cvx exec`. Basándose en la suposición de tal estructura fija, el atacante puede capturar documentos desde el principio y ejecutar (es decir, imprimir) el archivo después. Para sistemas de impresión **distintos de CUPS** este ataque también debería ser posible, pero **los operadores necesitan ser adaptados**. Tenga en cuenta que el encabezado de PostScript, que generalmente incluye el tamaño del medio, el usuario y los nombres de los trabajos, no puede ser capturado utilizando este método porque primero nos enganchamos al comienzo del documento actual. Otra estrategia genérica para engancharse al comienzo de cada trabajo de impresión es establecer el parámetro del sistema `BeginPage`, si es soportado por la impresora (la mayoría lo hace). Esta vulnerabilidad ha estado presumiblemente presente en dispositivos de impresión durante décadas, ya que solo se abusan de las construcciones del lenguaje definidas por el estándar de PostScript.
Ahora, imprime documentos arbitrarios (asegúrate de que PRET esté desconectado para no bloquear el canal de impresión). Después, puedes listar, obtener o reimprimir documentos capturados:
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).