
Доказательство концепции эксплуатации CVE-2022-34919, демонстрирующее неаутентифицированную произвольную загрузку файлов и удалённое выполнение кода (RCE) в классическом интерфейсе Contensis CMS с помощью специально сформированных HTTP-запросов.
Система управления контентом Contensis до версии 15.2.1.79 содержит уязвимость в своем интерфейсе 'Classic', которая позволяет неаутентифицированному пользователю загружать и утверждать произвольные файлы. Загрузив файл aspx, можно выполнять команды в контексте веб-сервера.
Эта уязвимость была обнаружена в марте 2022 года и исправлена компанией Zengenti в релизе от 8 апреля 2022 года.
Шаги для воспроизведения:
1:
Первоначальная загрузка файла выполняется с помощью POST-запроса к следующей конечной точке:
https://[example].cloud.contensis.com/REST/UI/Wizards/CreateContent/UploadFile?folderId=1&projectId=1&context=%7B%22UserID%22%3A1%2C%22LanguageID%22%3A1%2C%22SecurityToken%22%3A%22%22%7D
Параметр context указывает, какой пользователь загружает файл; в данном случае UserId 1, системный администратор. Параметр SecurityToken обязателен, но может быть пустым. Этот запрос (скриншот 1) создает временный файл на сервере с UUID. В этом примере я использовал веб-шелл, доступный по адресу: https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/asp/cmd.aspx

2:
Затем файл должен быть утвержден с помощью POST-запроса к следующей конечной точке:
https://[example].cloud.contensis.com/REST/UI/Wizards/CreateContent/CreateContent
Этот запрос (скриншот 2) будет включать путь к временному файлу из первоначального запроса и параметры для утверждения для публикации и изменения типа контента, чтобы обойти ограничения на файлы. В данном случае ContentTypeId установлен на 43, что указывает на HTML-документ, а не на ASPX. Затем файл становится доступен на доменах 'preview' и 'live', указанных ниже:

3:
Будьте ответственны и тестируйте только на авторизованных хостах (скриншот 3)