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

73 lines
6.7 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-06-03 01:46:23 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/metodologia-pentesting"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 01:46:23 +00:00
# Contenido de superposición
2023-06-03 01:46:23 +00:00
Una forma sencilla de manipular la apariencia de las impresiones es **usando superposiciones**. \
[**PCL**](./#pcl) tiene una función documentada para poner **macros de superposición** encima de un documento. Desafortunadamente, esta función está **limitada al trabajo de impresión actual** y no se puede hacer permanente. \
[**PostScript**](./#postscript-ps) no ofrece tal funcionalidad por defecto, sin embargo, se puede programar en él **redefiniendo el operador showpage** que se encuentra en cada documento PostScript para imprimir la página actual. El atacante puede **engancharse allí**, ejecutar su propio código y luego llamar a la versión original del operador.\
Por lo tanto, puede superponer todas las páginas que se van a imprimir con un archivo EPS personalizado. Este hack se puede utilizar para **añadir gráficos o fuentes arbitrarias a las copias impresas de un documento** (es posible alterar por completo la apariencia de un documento superponiendo una página en blanco y luego añadiendo contenido personalizado).\
Obviamente, tal enfoque sólo puede tener éxito si se utiliza PostScript como controlador de impresora y no se establece ninguna `StartJobPassword`.
![](http://hacking-printers.net/wiki/images/thumb/9/93/Overlay.jpg/300px-Overlay.jpg)
2023-06-03 01:46:23 +00:00
**¿Cómo probar este ataque?**
2023-06-03 01:46:23 +00:00
Usa los comandos `cross` o `overlay` de [**PRET**](https://github.com/RUB-NDS/PRET) en modo ps, luego desconéctate e imprime un documento arbitrario:
```
./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
```
2023-06-03 01:46:23 +00:00
# Reemplazo de contenido
2023-06-03 01:46:23 +00:00
Incluso si un atacante puede poner una superposición sobre documentos existentes, no podrá **alterar valores específicos** en el documento original a menos que se conozca su estructura exacta. A veces, no solo se desea agregar contenido personalizado, sino **analizar y reemplazar partes** del documento existente. \
El problema de reemplazar texto en archivos PostScript se puede reducir al **problema de extraer cadenas** del documento renderizado. Esto no es trivial, porque las cadenas pueden ser construidas dinámicamente por el programa PostScript en sí mismo. Por lo tanto, el análisis y reemplazo simple dentro del código fuente del documento no es una opción. \
Se puede usar un **operador `show` redefinido**. El operador show acepta una cadena como entrada, que se pinta en una ubicación determinada de la página actual. Al redefinir el operador, se puede **extraer** el **texto** de manera elegante. Este enfoque también se puede utilizar para la **búsqueda y reemplazo** dirigidos en cadenas inmediatamente **antes** de que sean **pintadas**. \
El enfoque es **exitoso** para documentos PostScript basados en **LaTeX** que se envían directamente a la impresora, mientras que **falla** para archivos PostScript generados por **GIMP** que en lugar de cadenas **crean gráficos rasterizados** de su representación. El mismo problema ocurre para cualquier formato de documento, incluso PostScript en sí, cuando se procesa mediante CUPS. Teóricamente, dichas construcciones de lenguaje también podrían ser analizadas y deberían ser objeto de investigación adicional.
2023-06-03 01:46:23 +00:00
**¿Cómo probar este ataque?**
2023-06-03 01:46:23 +00:00
Use el comando `replace` de **PRET** en modo ps, luego desconéctese e imprima un documento PostScript que contenga '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
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- **Comparte tus trucos de hacking enviando PRs al repositorio [hacktricks](https://github.com/carlospolop/hacktricks) y al repositorio [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>