hacktricks/network-services-pentesting/pentesting-printers/factory-defaults.md

75 lines
6.6 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
**Réinitialiser** un appareil aux paramètres d'usine est une fonctionnalité critique en matière de sécurité car elle **écrase les mécanismes de protection** tels que les mots de passe définis par l'utilisateur. Cela peut généralement être fait en appuyant sur une **combinaison de touches spéciale** sur le **panneau de commande** de l'imprimante. Effectuer une telle réinitialisation ne prend que quelques secondes et est donc un scénario réaliste pour les attaquants locaux ou les testeurs de pénétration, qui peuvent par exemple se faufiler dans la salle de copie à l'heure du déjeuner. Cependant, l'**accès physique** à l'appareil n'est **pas toujours une option**.
2022-05-01 12:49:36 +00:00
### SNMP
2023-06-03 13:10:46 +00:00
Le Printer-MIB définit l'objet **prtGeneralReset** (**OID 1.3.6.1.2.1.43.5.1.1.3.1**) qui permet à un attaquant de redémarrer l'appareil (powerCycleReset(4)), de réinitialiser les paramètres NVRAM (resetToNVRAM(5)) ou de restaurer les paramètres d'usine (resetToFactoryDefaults(6)) en utilisant SNMP. Cette fonctionnalité/attaque est **prise en charge par une grande variété d'imprimantes** et supprime tous les mécanismes de protection tels que les mots de passe définis par l'utilisateur pour le serveur web intégré. Bien que les mécanismes de protection puissent être contournés efficacement, un inconvénient pratique de cette approche est que toute la **configuration d'adresse IP statique sera perdue**. **Si aucun service DHCP** n'est disponible, l'attaquant ne pourra **plus** se **reconnecter** à l'appareil après l'avoir réinitialisé aux paramètres d'usine.
2023-06-03 13:10:46 +00:00
**Réinitialiser l'appareil aux paramètres d'usine** peut être accompli en utilisant la commande `snmpset` comme indiqué ci-dessous (vous devez connaître la **chaîne de communauté**, qui est par défaut dans la plupart des cas `public`):
```bash
snmpset -v1 -c public printer 1.3.6.1.2.1.43.5.1.1.3.1 i 6
```
2022-05-01 12:49:36 +00:00
### [PML](./#pml)/[PJL](./#pjl)
2023-06-03 13:10:46 +00:00
Dans de nombreux scénarios, un attaquant n'a pas la capacité d'effectuer des requêtes SNMP en raison de pare-feux ou de chaînes de communauté SNMP inconnues. Cependant, sur les appareils **HP**, **SNMP** peut être transformé en sa représentation **PML** et intégré à une tâche d'impression légitime. Cela permet à un attaquant de **redémarrer et/ou de réinitialiser l'appareil** aux paramètres d'usine dans des tâches d'impression ordinaires, comme indiqué ci-dessous:
```bash
@PJL DMCMD ASCIIHEX="040006020501010301040106"
```
2023-06-03 13:10:46 +00:00
N'importe qui peut reproduire cette attaque sur les imprimantes HP, redémarrer ou réinitialiser l'appareil peut facilement être reproduit en utilisant [**PRET**](https://github.com/RUB-NDS/PRET):
```bash
./pret.py -q printer pjl
Connection to printer established
Welcome to the pret shell. Type help or ? to list commands.
printer:/> reset
printer:/> restart
```
2022-05-01 12:49:36 +00:00
### PostScript
2023-06-03 13:10:46 +00:00
PostScript offre une fonctionnalité similaire : le paramètre système **FactoryDefaults**, "un indicateur qui, s'il est **défini sur vrai** **juste avant** que l'imprimante soit éteinte, provoque le retour de tous les paramètres non volatils à leurs valeurs **par défaut d'usine** lors de la prochaine mise sous tension". Il convient de noter que **PostScript** lui-même a également la capacité de **redémarrer** son **environnement**, mais cela nécessite un **mot de passe valide**. \
Cependant, l'interpréteur PostScript peut être mis dans une **boucle infinie** comme discuté dans les attaques DoS de [traitement de document](http://hacking-printers.net/wiki/index.php/Document_processing), ce qui oblige l'utilisateur à **redémarrer manuellement** l'appareil et donc à réinitialiser le mot de passe PostScript.
2023-06-03 13:10:46 +00:00
Réinitialiser les paramètres système PostScript aux valeurs par défaut d'usine :
```bash
<< /FactoryDefaults true >> setsystemparams
```
2023-06-03 13:10:46 +00:00
Redémarrer l'interpréteur PostScript et la mémoire virtuelle :
```bash
true 0 startjob systemdict /quit get exec
```
2023-06-03 13:10:46 +00:00
N'importe qui peut redémarrer ou réinitialiser l'interpréteur PostScript d'une imprimante peut être facilement reproduit en utilisant [**PRET**](https://github.com/RUB-NDS/PRET):
```bash
./pret.py -q printer ps
Connection to printer established
Welcome to the pret shell. Type help or ? to list commands.
printer:/> reset
printer:/> restart
```
2022-05-01 12:49:36 +00:00
### PRESCRIBE
2023-06-03 13:10:46 +00:00
Pour les appareils **Kyocera**, les langages de description de page **PRESCRIBE** peuvent être utilisés pour **réinitialiser l'appareil** aux paramètres d'usine à partir de travaux d'impression ordinaires en utilisant l'une des commandes suivantes :
```bash
!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";
```
2023-06-03 13:10:46 +00:00
Pour reproduire cette attaque, ouvrez une connexion réseau brute sur le port 9100/tcp de l'imprimante et **envoyez les commandes documentées ci-dessus**.