- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
- 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** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
Algumas impressoras possuem trabalhos de impressão armazenados acessíveis a partir do servidor web. Geralmente, no entanto, a retenção de trabalhos deve ser ativada explicitamente para um determinado trabalho de impressão e pode ser feita usando comandos PJL padrão ou código PostScript proprietário. Os trabalhos são então mantidos na memória e podem ser reimpressos a partir do painel de controle.
Os trabalhos retidos são mantidos na memória e podem ser reimpressos a partir do painel de controle da impressora. Essa funcionalidade é suportada por várias impressoras, no entanto, parece que apenas alguns dispositivos Epson permitem que a retenção permanente de trabalhos seja definida usando `@PJL DEFAULT HOLD=ON`.
O PostScript oferece funcionalidade semelhante, mas é específico para modelo e fornecedor. Para as séries HP LaserJet 4k e várias impressoras Kyocera, a retenção de trabalhos pode ser ativada adicionando os seguintes comandos a um documento PostScript:
Embora seja teoricamente possível habilitar permanentemente a retenção de trabalhos PostScript usando o operador [startjob](./#postscript-ps), essa configuração é explicitamente redefinida pelo CUPS no início de cada trabalho de impressão usando `<< /Collate false >> setpagedevice`. Para contrariar esse mecanismo de proteção, no entanto, o atacante pode redefinir permanentemente o operador `setpagedevice` para não ter efeito algum.
É possível, embora incomum, ativar a retenção de trabalhos na caixa de diálogo de impressão, conforme discutido acima. No entanto, com o PostScript, é possível ter acesso completo ao trabalho de impressão atual e, com o operador [startjob](./#postscript-ps), é possível até mesmo sair do loop do servidor e acessar trabalhos futuros. Tal funcionalidade tem o potencial de capturar todos os documentos se o PostScript for usado como driver de impressora.
Com a capacidade de se conectar a operadores PostScript arbitrários, é possível manipular e acessar trabalhos de impressão estrangeiros. Para **analisar o fluxo de dados real enviado para a impressora**, pode-se aplicar um recurso interessante da linguagem PostScript: ler seu próprio código de programa como dados usando o operador `currentfile`. Dessa forma, todo o fluxo de dados a ser processado pelo interpretador PostScript pode ser acessado por leitura e armazenado em um arquivo no dispositivo da impressora. Se a impressora não oferecer acesso ao sistema de arquivos, **os documentos capturados podem ser armazenados na memória**, por exemplo, dentro de dicionários PostScript permanentes. \
Um problema prático é decidir **qual operador deve ser conectado**, já que não se tem acesso ao fluxo de dados até que esse operador seja processado pelo interpretador PostScript. Como um atacante deseja capturar trabalhos de impressão desde o início, o **operador redefinido deve ser o primeiro operador** contido no documento PostScript. Felizmente, todos os documentos impressos com o CUPS são pressionados em uma estrutura fixa que começa com `currentfile /ASCII85Decode filter /LZWDecode filter cvx exec`. Com base na suposição de tal estrutura fixa, o atacante pode capturar documentos desde o início e executar (ou seja, imprimir) o arquivo posteriormente. Para sistemas de impressão **diferentes do CUPS**, esse ataque também deve ser possível, mas **os operadores precisam ser adaptados**. Observe que o cabeçalho PostScript, que geralmente inclui o tamanho da mídia, o usuário e os nomes dos trabalhos, não pode ser capturado usando este método, porque primeiro nos conectamos no início do documento real. Outra estratégia genérica para se conectar no início de cada trabalho de impressão é definir o parâmetro do sistema `BeginPage`, se suportado pela impressora (a maioria das impressoras faz isso). Essa vulnerabilidade provavelmente está presente em dispositivos de impressão há décadas, pois apenas construções de linguagem definidas pelo padrão PostScript são abusadas.
Agora, imprima documentos arbitrários (certifique-se de que o PRET está desconectado para não bloquear o canal de impressão). Depois, você pode listar, buscar ou reimprimir documentos capturados:
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
- 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** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.