Несколько дней назад вышло критическое обновление для ISPManager4, вариантов Lite и Pro. Новая ревизия имеет версию 4.4.10.25, ее выпуск обусловлен наличием серьезной ошибки в алгоритме работы ISPManager с локальными пользователями.
Официальное объявление данной версии не дает представление о проблеме:
4.4.10.25 – 18.08.2015
bugfix Исправлена проблема безопасности. Подробнее в документации: параметр DenyAuthUIDRanges. Рекомендуем вам обновиться до этой версии
forum.ispsystem.com, forum.ispsystem.com/ru/showthread.php?t=28944
Вместе с тем, ряд наших партнеров и коллег поделились информацией, полученной в ходе расследования успешных эксплуатаций данной уязвимости. Это позволяет предположить примерный алгоритм действия взломщика.
С помощью механизма pingback в CMS (например, в WordPress)
создается ложный вызов в адрес локальной панели ISPManager со специально сформированным URL. Данный URL использует функции API панели ISPManager4 для смены пароля пользователя.
Пример из лог-файла ISPManager4:
Aug 20 17:01:11 [ 5308:1469] INFO Request [IP.ADD.RE.SS][apache] 'sok=ok&elid=www%2Ddata&func=usrparam&confirm=*&passwd=*&name=www%2Ddata&out=json'
Aug 20 17:01:14 [ 5308:1471] INFO Request [IP.ADD.RE.SS][apache] 'sok=ok&elid=nginx&func=usrparam&confirm=*&passwd=*&name=nginx&out=json'
Aug 20 17:01:16 [ 5308:1473] INFO Request [IP.ADD.RE.SS][apache] 'sok=ok&elid=www&func=usrparam&confirm=*&passwd=*&name=www&out=json'
Aug 20 17:01:19 [ 5308:1475] INFO Request [IP.ADD.RE.SS][apache] 'sok=ok&elid=apache&func=usrparam&confirm=*&passwd=*&name=apache&out=json'
IP.ADD.RE.SS – это адрес узла, на который идет атака. Видно, что производится перебор “стандартных” имен пользователей, от которых может производится работа компонентов вэбсервера – для этих пользователей производится попытка смены пароля.
С точки зрения вэбсервера запрос выглядит так:
domain.tld "GET /manager/ispmgr?out=json&name=user&passwd=XXXXXXXXXX&confirm=XXXXXXXXXX&func=usrparam&elid=user&sok=ok HTTP/1.0" 200 35 "-" "WordPress/3.8.9; http://www.domain.tld; verifying pingback from IP"
Наше предположение об ошибке – ниже. Как известно, ISPManager4 обычно запускается как модуль Apache – это видно в include-файле:
# head -1 /usr/local/ispmgr/etc/ispmgr.inc
LoadModule ispmgr_module /usr/local/ispmgr/lib/apache/mod_ispmgr.so
Данный модуль является обработчиком URL вида IP.ADD.RE.SS/manager/, причем пользователем с точки зрения панели будет тот uid, от которого запущен apache (apache, www, www-data – в зависимости от операционной системы). Видимо, при запросе на смену пароля ISPManager4 не производит дополнительных проверок и позволяет установить этому системному пользователю пароль.
Далее все зависит от фантазии злоумышленника – получен доступ к системе, можно использовать ssh, использовать другие уязвимости для получения root-доступа и так далее.
Если вы используете ISPManager4 Lite или Pro, мы рекомендуем незамедлительно обновить панель управления и проверить систему на возможные следы взлома. Обратите внимание на “лишних” пользователей в панели управления, аномальное поведение ОС и, конечно, проверьте актуальность версий WordPress и других CMS.