FileBackupService::doBackupFiles() в sysPass в lib/SP/Services/Backup/FileBackupService.php вокруг строки 388 создает команду оболочки tar путем объединения строк пути к каталогу резервного копирования $this->path непосредственно в командную строку ('tar czf ' . $backupFileApp . ' ' . BASE_PATH . ' --exclude \"' . $this->path . '\" 2>&1') и передает результат в PHP exec() без применения escapeshellarg() и проверки пути на соответствие безопасному набору символов. Значение $this->path считывается из конфигурации sysPass, которая сохраняется в базе данных и доступна для записи через API настроек администратора и пользовательский интерфейс администратора. Таким образом, администратор (или злоумышленник, получивший токен API администратора или сеанс администратора) может сохранить путь резервного копирования, содержащий метасимволы оболочки, и запустить операцию резервного копирования для выполнения произвольных команд ОС от имени пользователя процесса веб-сервера (обычно www-data или apache).
Поскольку sysPass — это менеджер паролей, единственной целью которого является хранение учетных данных для других систем, выполнение кода от имени пользователя веб-сервера позволяет считывать главный пароль sysPass и ключ шифрования из памяти или файлов конфигурации, расшифровывать все сохраненные учетные данные в базе данных, экспортировать все хранилище паролей, переходить во внутренние системы с использованием раскрытых учетных данных и устанавливать постоянные бэкдоры на хосте менеджера паролей.
Показать оригинальное описание (EN)
sysPass's FileBackupService::doBackupFiles() in lib/SP/Services/Backup/FileBackupService.php around line 388 builds a tar shell command by string-concatenating the backup directory path $this->path directly into the command line ('tar czf ' . $backupFileApp . ' ' . BASE_PATH . ' --exclude \"' . $this->path . '\" 2>&1') and passes the result to PHP's exec() with no application of escapeshellarg() and no validation of the path against a safe character set. The $this->path value is read from the sysPass configuration, which is persisted in the database and writable through the admin settings API and the admin UI. An administrator (or an attacker who has obtained an admin API token or admin session) can therefore store a backup path containing shell metacharacters and trigger a backup operation to execute arbitrary OS commands as the web server process user (typically www-data or apache). Because sysPass is a password manager whose sole purpose is to hold credentials for other systems, code execution as the web-server user permits reading sysPass's master password and encryption key from memory or configuration files, decrypting every stored credential in the database, exporting the entire password vault, pivoting to internal systems using the disclosed credentials, and installing persistent backdoors on the password-manager host.
Характеристики атаки
Последствия
Строка CVSS v4.0