Хочу поделиться парой серьёзных уязвимостей, найденных мною в телефонных аппаратах Grandstream.
1. Загрузка произвольного конфига в телефон
Изучая веб интерфейс цветных телефонов gxp21xx для изучения их api, наткнулся на скрипт загрузки конфига в телефон, это скрипт /cgi-bin/upload_cfg
В отличии от других скриптов, этому скрипту не передаётся sessionid, а передаётся только файл. Быстрая проверка через curl показала, что и вправду, воспользоваться этим скриптом можно без без авторизации:
curl -i -F name="config.txt" -F file="@config.txt;type=text/plain" -H "Content-Disposition: form-data; name=file; filename=config.txt" http://xx.xx.xx.xx/cgi-bin/upload_cfg
Файл config.txt представляет из себя тектовый файл с набором параметров вида: Рхххх=уууу
Заливая файл с одной строчкой «P2=admin», мы меняем админский пароль на телефоне, после чего можем залогиниться в веб интерфейс.
В телефоне присутствуют аналогичные скрипты для загрузки воллпейпера, телефонной книги и т.д.
Данная узязвимость присутствует в телефонах gxp2130, gxp2140 и gxp2160
2. Дамп конфига телефона
Следующая уязвимость ещё страшнее первой. Была уже обнаружена после получения рутового доступа к телефону и анализа скриптов в cgi-bin.
Это скрипт /cgi-bin/dumpsettings, вот его содержимое:
#!/usr/bin/haserl
#!/bin/ash
<?
RESULT=`nvram show | grep -v :STR`
HEADER="Content-Type: text/plainrnrn"
HEADER="Expires: $(date)rn$HEADER"
HEADER="Content-disposition: attachment; filename=settings.cfgrn$HEADER"
HEADER="Cache-Control: no-cache, must-revalidatern$HEADER"
echo -en $HEADER
echo "$RESULT"
?>
Как видно этот чудо скрипт просто отправляет вывод команды nvram show | grep -v :STR без какого либо намёка на авторизацию. А в nvram содержится много интересных параметров, помимо самого конфига. Ну и конечно там все пароли в открытом виде: админский и сип аккаунты.
Эта уязвимость в большинстве устройств grandstream (а может и во всех), включая шлюзы.
3. Шифрованные конфиги
Помимо xml конфигов, при провижинге телефон может использовать зашифрованный тектовый конфиг. Утилиту для создания такого конфига можно скачать на сайте грандстрима. Первое что настораживает, при использовании этой утилиты, что она не просит никакой пароль для шифрования. На телефоне для расшифровки конфига используется утилита prov_config_dec, которой для дешифровки нужен только мак :) Таким образом расшифровать конфиг нет никакой проблемы. А некоторый voip провайдеры, уверены в надёжности шифрования и выкладывают такие конфиги в открытый доступ (для провижининга телефонов своих клиентов). Простым перебором мак адресов, у одного из американских voip провайдеров удалось скачать порядка пятисот конфигов с сип учётками внутри :)
4. Бэкдор от грандстрима
Решил за одно поискать и бэкдоры в прошивке. Реверс-инжиниринг банарника dropbear показал, что залогиниться по ssh можно не только под юзером admin, но и под юзером root, используюя ключик. Паблик кей заботливо лежит в прошивке по пути /rom/.ssh/authorized_keys
Так что владельцы приватного ключа, могут спокойно залогиниться по ssh :) А получив рутовый доступ на телефон, можно например прослушивать разговоры, или даже просто слушать, что происходит вокруг телефона, даже вне разговора.
Данным узязвимостям можно найти не одно применение, это может быть:
- Банальное воровство сип учёток
- Подмена имени звонящего через телефонную книгу
- Подмена сип сервера с целью перехвата траффика и прослушки
- Загрузка вредоносного софта в систему телефона, например для записи с микрофона или для произведения каких либо атак
В интернете мной было обнаружено большой количество телефонов, смотрящих в интернет своим веб интерфейсом, где прекрасно эксплуатируются перечисленные выше уязвимости.
Ну и если не хотите дожидаться новой прошивки с закрытыми уязвимостями (саппорт у грандстрима какой-то очень тугой), то можно самому выпилить уязвимые скрипты из прошивки, как это описано здесь habrahabr.ru/post/249855/
Автор: vanyas