hacktricks/network-services-pentesting/pentesting-printers/print-job-manipulation.md
2024-12-12 13:56:11 +01:00

68 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Sobreposição de Conteúdo
Uma maneira simples de manipular a aparência de impressões é **usar** sobreposições. \
[**PCL**](./#pcl) possui uma função documentada para colocar **macros de sobreposição** em cima de um documento. Infelizmente, esse recurso é **limitado ao trabalho de impressão atual** e não pode ser tornado permanente. \
[**PostScript**](./#postscript-ps) não oferece tal funcionalidade por padrão, no entanto, pode ser programado ao **redefinir o operador showpage** que está contido em todo documento PostScript para imprimir a página atual. O atacante pode **se conectar ali**, executar seu próprio código e depois chamar a versão original do operador.\
Assim, ela pode sobrepor todas as páginas a serem impressas com um arquivo EPS personalizado. Esse hack pode ser usado para **adicionar gráficos ou fontes arbitrários às cópias físicas de um documento** (É possível alterar completamente a aparência de um documento sobrepondo uma página em branco e depois adicionando conteúdo personalizado).\
Obviamente, tal abordagem só pode ser bem-sucedida se PostScript for usado como driver de impressora e nenhuma `StartJobPassword` estiver definida.
![](http://hacking-printers.net/wiki/images/thumb/9/93/Overlay.jpg/300px-Overlay.jpg)
**Como testar esse ataque?**
Use os comandos `cross` ou `overlay` do [**PRET**](https://github.com/RUB-NDS/PRET) no modo ps, depois desconecte e imprima um documento arbitrário:
```
./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
```
# Substituição de Conteúdo
Mesmo que um atacante possa colocar uma sobreposição acima de documentos existentes, ela não será capaz de **alterar valores específicos** no documento original, a menos que sua estrutura exata seja conhecida. Às vezes, não se quer apenas adicionar conteúdo personalizado, mas **analisar e substituir partes** do documento existente. \
O problema de substituir texto em arquivos PostScript pode ser reduzido ao **problema de extrair strings** do documento renderizado. Isso não é trivial, porque as strings podem ser construídas dinamicamente pelo próprio programa PostScript. Portanto, simples análise e substituição dentro do código-fonte do documento não são uma opção.\
Você pode usar um **operador `show` redefinido**. O operador show aceita uma string como entrada, que é pintada em um local específico da página atual. Ao redefinir o operador, o **texto** pode ser elegantemente **extraído**. Essa abordagem também pode ser usada para **pesquisar e substituir** de forma direcionada em strings imediatamente **antes** de serem **pintadas**. \
A abordagem é **bem-sucedida** para documentos PostScript baseados em **LaTeX** que são enviados diretamente para a impressora, enquanto **falha** para arquivos PostScript gerados pelo **GIMP**, que em vez de strings **cria gráficos rasterizados** de sua representação. O mesmo problema ocorre para qualquer formato de documento até mesmo o próprio PostScript quando processado pelo CUPS. Teoricamente, tais construções de linguagem também poderiam ser analisadas e devem ser objeto de pesquisa futura.
**Como testar esse ataque?**
Use o comando `replace` do [**PRET**](https://github.com/RUB-NDS/PRET) no modo ps, depois desconecte e imprima um documento PostScript contendo 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
```
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>