CVE-2022-39197
Fortra Cobalt Strike
2023-03-30
Fortra Cobalt Strike contains a cross-site scripting (XSS) vulnerability in Teamserver that would allow an attacker to set a malformed username in the Beacon configuration, allowing them to execute code remotely.
Технический анализ и план устранения
Суть уязвимости
CVE-2022-39197 представляет собой критическую уязвимость типа Cross-Site Scripting (XSS) в компоненте Teamserver продукта Cobalt Strike (версии до 4.7.1).
Проблема заключается в недостаточной фильтрации данных в поле «process name» (имя процесса) или «username» при регистрации нового Beacon. Злоумышленник может отправить специально сформированный запрос на Teamserver, имитируя подключение нового агента. Вредоносная нагрузка в поле имени интерпретируется графическим интерфейсом клиента Cobalt Strike (Java Swing) как HTML-тег.
Поскольку Java Swing поддерживает базовый рендеринг HTML, атакующий может использовать тег <img> с атрибутом src, указывающим на удаленный ресурс. Это позволяет:
1. Раскрыть IP-адрес оператора.
2. Выполнить атаку на перебор файлов (через file://).
3. В определенных конфигурациях добиться удаленного выполнения кода (RCE) через десериализацию или загрузку вредоносных Java-объектов.
Как исправить
Основным и единственным надежным способом устранения уязвимости является обновление Cobalt Strike до версии 4.7.1 или выше. В этой версии разработчики внедрили принудительное экранирование HTML-символов перед их отображением в консоли оператора.
Для обновления выполните следующие действия:
- Запустите скрипт обновления в директории с установленным Cobalt Strike:
./update
-
Если автоматическое обновление недоступно, скачайте актуальную версию через лицензионный портал Fortra и полностью замените файлы
cobaltstrike.jarиteamserver. -
Перезапустите Teamserver, чтобы изменения вступили в силу:
./teamserver <IP_адрес> <пароль> <профиль>
Временные меры
Если немедленное обновление невозможно, необходимо минимизировать риски с помощью следующих настроек:
-
Использование Malleable C2 Profile: Настройте профиль так, чтобы ограничить длину и тип символов в полях, передаваемых Beacon. Однако это не гарантирует полной защиты от поддельных пакетов.
-
Фильтрация трафика на уровне сетевого экрана: Разрешите входящие соединения на порт Teamserver (по умолчанию 50050) только с доверенных IP-адресов операторов.
iptables -A INPUT -p tcp --dport 50050 -s <TRUSTED_IP> -j ACCEPT
iptables -A INPUT -p tcp --dport 50050 -j DROP
-
Запуск клиента в изолированной среде: Запускайте клиентскую часть Cobalt Strike (GUI) внутри изолированной виртуальной машины или контейнера без доступа к критическим файлам хостовой системы и внутренней сети.
-
Отключение автоматического рендеринга (для продвинутых пользователей): Использование Java-агентов для перехвата вызовов методов отрисовки текста в Swing и принудительной очистки строк от HTML-тегов.