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

от автора

В сети опубликован эксплоит для 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-адреса (говорить про количество найденных устройств не совсем корректно, т.к. у каждого устройства может быть несколько сетевых интерфейсов с разными адресами). В основном в США.

В данный момент прорабатывается вопрос предоставления доступа к нашему поисковику широкой аудитории.

ссылка на оригинал статьи https://habrahabr.ru/post/280364/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *