Pull to refresh

Эксплоит для уязвимости в Cisco UCS Manager: так ли страшен чёрт?

Reading time4 min
Views3.1K
В сети опубликован эксплоит для Cisco UCS Manager. Указывается, что уязвимы версии 2.1(1b) и, возможно, другие.
На сайте Cisco в разделе GNU Bash Environment Variable Command Injection Vulnerability указано, что доступны обновлённые версии продуктов, исправляющих уязвимость:
  • 3.0(1d) (Available)
  • 2.2(3b) (Available)
  • 2.2(2e) (Available)
  • 2.2(1f) (Available)
  • 2.1(3f) (Available)
  • 2.0(5g) (Available)

Собственное тестирование показало, что уязвимы версии:
  • 2.2(1d)
  • 2.2(1c)
  • 2.1(2a)

Не уязвимы:
  • 2.2(6c)
  • 2.2(3e)

Мы провели анализ работы эксплоита, а также количество уязвимых устройств. Используя поисковик Shodan и наш собственный поисковый аналог (да здравствует импортозамещение). И вот что получилось.

Судя по коду эксплоита, команды инжектируются в поле User-Agent при работе по специально сформированному URL по протоколу HTTPS. Можно разделить работу эксплоита на 2 этапа. На первом этапе эксплоит пытается определить уязвима ли система. Для этого считывается файл пользователей "/etc/passwd" и ищется пользователь «root». На втором этапе делается реверс-коннект к контролируемому узлу атакующего, используя особенности псевдо устройства /dev/tcp.

У нас нашлось уязвимое оборудование и я смог немного поиграться с эксплоитом.

Выполняем команды.
$ who
daemon


Считываем содержимое файла "/etc/passwd"

$ cat /etc/passwd
root:*:0:0:root:/root:/isanboot/bin/nobash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/usr/sbin:
sys:*:3:3:sys:/dev:
ftp:*:15:14:ftp:/var/ftp:/isanboot/bin/nobash
ftpuser:*:99:14:ftpuser:/var/ftp:/isanboot/bin/nobash
nobody:*:65534:65534:nobody:/home:/bin/sh
admin:x:2002:503::/var/home/admin:/isan/bin/vsh_perm
svc-isan:*:499:501::/var/home/svc-isan:/isan/bin/vsh_perm
samdme:x:2003:504::/var/home/samdme:/bin/bash


Т.е. пользователь root действительно существует, а уязвимое ПО запускается от пользователя daemon.
Также открыто много портов.
Вот лишь краткий список
$ netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:161 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:36738 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6021 0.0.0.0:* LISTEN
tcp 0 0 127.12.0.1:4101 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5991 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:7911 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5961 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:906 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:907 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6351 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5871 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:906 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:907 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6351 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5871 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6321 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5841 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5781 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6261 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:51189 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4023 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:27000 0.0.0.0:* LISTEN



uname -a
Linux UCS078A-A-A 2.6.27.10 #1 SMP Fri Nov 15 03:08:09 PST 2013 i686 i686 i386 GNU/Linux

cat /etc/*release

Wind River Linux


Инжекция кода именно в строку User-Agent — распространённая практика. Например, скрипт поиска уязвимости типа Shellshock для сетевого сканнера nmap также пользуется этим подходом в настройках по-умолчанию. Хотя лично мне не удалось настроить данный скрипт так, чтобы он действительно определил уязвимость в тестируемом оборудовании Cisco UCS Manager.

Поисковик Shodan по запросу «Cisco UCS Manager» не выдаёт ничего. А по запросу «Cisco UCS» — много всякого, из чего можно найти 7 адресов, относящихся к искомому устройству. Такое ощущение, что проблема в невозможности поиска по подстроке из нескольких слов: в итоге ищется любое из выражения. Хотя, может быть, я просто неопытный пользователь Shodan.
На конференции PHDays 2015 я и мой коллега рассказывали про свой поисковик, аналогичный Шодану.

Поиск по банальному запросу в 2-х сетях с маской 16:


В основном мы рассказывали как устроен поисковик. Но также затронули проблему поиска конкретного оборудования: необходимо найти максимальное количество устройств по запросу. При этом в результатах запроса должно быть минимум мусора. В частности, высказывали мысль, про некий цифровой отпечаток. Если вкратце: оборудование бывает по-разному настроено (настройки по-умолчанию, или кастомные настройки, работа оборудования за межсетевым экраном или за NAT). Изучая каждый случай методом проб и ошибок, а также с учётом накопленного опыта создаётся уже совсем не тривиальный запрос. Его результаты могут сильно отличаться от банального первоначального поиска. Так случилось и в этой ситуации. Например, как видно из скриншота выше, при поиске устройства попадается строка «OpenSSL/FIPS». Поиск этой строки в Shodan опять разочаровывает: в результатах опять нет чёткой искомой строки. Поиск в нашем поисковике увеличил количество обнаруженных адресов по сравнению с предыдущим поиском. Хотя, честно скажем: такой поиск всё же выдаёт и мусорные записи. Т.е. записи, при проверке не имеющие ничего общего с Cisco UCS Manager.
В общем и целом вопрос создания цифровых отпечатков (в т.ч. для конкретных устройств) — тема для отдельной статьи. Ограничусь фактом: мы обнаружили около 50 устройств уникальных IP-адреса (говорить про количество найденных устройств не совсем корректно, т.к. у каждого устройства может быть несколько сетевых интерфейсов с разными адресами). В основном в США.

В данный момент прорабатывается вопрос предоставления доступа к нашему поисковику широкой аудитории. Если будет интерес со стороны сообщества.
Tags:
Hubs:
Total votes 7: ↑7 and ↓0+7
Comments0

Articles