Уязвимость в панели управления хостингом Vesta, позволяющая получить права root
В Vesta Control Panel, web-панели управления сервером хостинга, распространяемой под лицензией GPLv3, выявлена критическая уязвимость, позволяющая поднять свои привилегии в системе. Суть уязвимости в том, что связанные с аутентификацией настройки передаются http-серверу nginx через включение файла директивой "include" в nginx.conf.
Файл с дополнительными настройками сохраняется в каталогах пользователей (/home/{user}/web/{domain}/stats/auth.conf) с правами непривилегированного пользователя хостинга, но при перезапуске nginx обрабатывает настройки с правами root. Пользователь хостинга может подменить содержимое auth.conf и получить доступ к содержимому любых системных файлов, в том числе узнать содержимое /etc/shadow.
Например, пользователь может записать в файл
client_body_temp_path /etc/shadow; location /vstats/steal { alias /; }
Первая стока позволит при перезапуске nginx сменить владельца для /etc/shadow на пользователя nginx. А вторая строка позволит получить содержимое /etc/shadow при открытии в браузере страницы "http://test.com/vstats/steal/etc/shadow".
Также возможно перезаписать содержимое любых системных файлов и получить привилегии root без необходимости подбора пароля по хэшу. Например, указав
client_body_temp_path /etc/profile.d/vim.sh; location /evil { error_log /etc/profile.d/vim.sh; }
можно записать данные в файл /etc/profile.d/vim.sh отправить ошибочный запрос к сайту.