Skip to main content
Mallory
HighCISA KEVExploited in the wildPublic exploit

Microsoft Exchange Server static validation key RCE

IdentifiersCVE-2020-0688CWE-502

CVE-2020-0688 is a remote code execution vulnerability in on-premises Microsoft Exchange Server. The provided content identifies it as the Microsoft Exchange memory corruption vulnerability and repeatedly notes that exploitation is possible by an authenticated user against Exchange, particularly via the Exchange Control Panel (ECP). The supporting content further states that the issue is associated with non-unique cryptographic keys created at install time (described as a static key vulnerability), enabling attackers with valid credentials to craft malicious serialized ViewState data that Exchange will accept and deserialize. Public reporting referenced in the content indicates this can be used to execute attacker-controlled code and commonly to write an ASPX web shell such as /ecp/HybridLogout.aspx.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation allows authenticated remote code execution on the Exchange server, including execution as SYSTEM according to the supplied context. The content also shows this vulnerability being used in real intrusions to drop web shells, regain access after remediation, establish persistence, escalate privileges, access Exchange environments, and support lateral movement and broader compromise of victim networks.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, reduce exposure of on-premises Exchange services, especially ECP/OWA, to untrusted networks; require MFA for Exchange access; restrict or disable unnecessary external access; monitor for anomalous authenticated access to ECP; and hunt for indicators of exploitation such as unexpected ASPX files, suspicious requests to /ecp/, and web-shell-like command execution patterns. Because the content states exploitation requires authentication, hardening credential security and preventing brute-force or credential reuse materially reduces risk until patching is completed.

Remediation

Patch, then assume compromise.

Apply Microsoft's February 2020 security updates for affected Microsoft Exchange Server versions. The content explicitly references Microsoft Exchange patching for CVE-2020-0688 and identifies it as a known exploited vulnerability. Because exploitation commonly involves valid credentials and web shell deployment, remediation should also include credential rotation for potentially exposed accounts, inspection of Exchange/ECP directories for unauthorized ASPX files such as HybridLogout.aspx, and incident response to determine whether post-exploitation persistence was established.
PUBLIC EXPLOITS

Exploits

13 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (7 hidden).

VALID 13 / 20 TOTALView more in app
CVE-2020-0688MaturityPoCVerified exploit

This repository is an exploit for CVE-2020-0688, a remote code execution vulnerability in Microsoft Exchange Server due to fixed cryptographic keys in ViewState. The main exploit logic is implemented in 'exploit.py', which automates authentication to OWA, checks for vulnerability, and leverages ysoserial.net (ysonet.exe) to generate a malicious ViewState payload. The exploit allows the attacker to execute arbitrary commands, upload files, and obtain a reverse shell on the target Exchange server. The attacker must provide valid credentials and host a web server for payload delivery. The 'script.bat' file is a base64-encoded PowerShell script that establishes a reverse shell using netcat. The repository structure is straightforward: 'exploit.py' (main exploit), 'script.bat' (reverse shell payload), and 'README.md' (usage instructions). The exploit targets Exchange servers accessible over the network and requires the attacker to modify configuration parameters for their environment.

tvdat20004Disclosed Aug 4, 2025pythonbatchnetwork
PSForgot2kEyXCHANGEMaturityPoCVerified exploit

This repository contains a PowerShell proof-of-concept exploit for CVE-2020-0688, a vulnerability in Microsoft Exchange Server where all unpatched servers use the same cryptographic keys for ViewState. The main script, PSForgot2kEyXCHANGE.ps1, allows an attacker with valid Exchange credentials to execute arbitrary commands as SYSTEM on a vulnerable Exchange server. The exploit works by authenticating to the server, generating a malicious ViewState payload using ysoserial.net, and sending it to the Exchange Control Panel endpoint. The repository includes a README with usage instructions and a LICENSE file. The only code file is the PowerShell script, which is self-contained but requires ysoserial.net to function. The attack vector is network-based, targeting Exchange servers over HTTP(S), and the script requires the attacker to supply the target server URL, credentials, command to execute, and the path to ysoserial.net.

justin-pDisclosed Mar 4, 2020powershellnetwork
cve-2020-0688MaturityPoCVerified exploit

This repository contains a Python exploit script (cve-2020-0688.py) targeting Microsoft Exchange Server's CVE-2020-0688 vulnerability. The exploit leverages ysoserial.exe to generate a malicious .NET ViewState payload containing an arbitrary system command, which is then sent to the Exchange Control Panel (ECP) endpoint via a crafted URL. The script requires the user to specify the target Exchange URL, a command to execute, and a valid ASP.NET session ID. The default payload writes a file to the target's C: drive, demonstrating successful code execution. The repository also includes documentation files, .xml files related to serialization libraries, and a configuration file for ysoserial.exe. The exploit is operational and demonstrates remote code execution capabilities against vulnerable Exchange servers.

truongtnDisclosed Feb 28, 2020pythonnetwork
cve-2020-0688MaturityPoCVerified exploit

This repository provides a proof-of-concept exploit for CVE-2020-0688, a remote code execution vulnerability in Microsoft Exchange Server's ECP (Exchange Control Panel) due to improper handling of ViewState. The repository contains two files: a README.md with usage instructions and a Python script (exploit.py) that automates the login process to the Exchange OWA/ECP interface. The script attempts to authenticate with provided credentials, extract the __VIEWSTATEGENERATOR and ASP.NET_SessionId values, and then constructs a ysoserial.net command to generate a malicious ViewState payload. The payload is designed to trigger a DNS request (as a demonstration of code execution) to an attacker-controlled domain. The exploit is not fully functional and is marked as a mockup requiring further development and a test environment. The main attack vector is network-based, targeting the Exchange web interface. Notable endpoints include the ECP default.aspx page, the OWA login endpoint (auth.owa), and a DNS domain used for out-of-band verification.

random-robbieDisclosed Feb 25, 2020pythonnetwork
CVE-2020-0688-GUIMaturityPoCVerified exploit

This repository is a C# WPF GUI tool for exploiting CVE-2020-0688, a remote code execution vulnerability in Microsoft Exchange Server. The project consists of a Visual Studio solution with a main application in 'CVE-2020-0688-GUI'. The GUI allows the user to specify a target Exchange server (without the protocol prefix), provide valid credentials, and choose between executing a command or loading a shellcode binary. The tool enforces that only one mode (command or shellcode) can be used at a time. The exploit logic is triggered via the 'EXPLOIT' button, which instantiates an 'ExchangeExploit' object (not included in the provided files, likely part of a dependency or omitted code) to perform the attack. The result of the exploitation attempt is displayed in the GUI. The repository is not part of a framework and is a standalone operational exploit tool. The README provides usage instructions and credits the original author of the command-line version. The only fingerprintable endpoint in the code is the example 'mail.nasa.gov', used as a placeholder for the target Exchange server address.

W01fh4ckerDisclosed May 9, 2024csharpxamlnetwork
CVE-2020-0688MaturityPoCVerified exploit

This repository contains a Python exploit script (CVE-2020-0688.py) targeting Microsoft Exchange Server 2016 and 2019 instances vulnerable to CVE-2020-0688. The exploit requires valid domain credentials and interacts with the Exchange server's /owa/auth.owa and /ecp/default.aspx endpoints over HTTPS. It uses ysoserial.exe (included in the Release directory) to generate a malicious .NET ViewState payload that, when delivered to the server, results in remote code execution of arbitrary system commands. The script is operational and automates the authentication, payload generation, and exploitation process. The other files in the repository are .xml documentation/configuration files and are not directly involved in the exploit process.

youncybDisclosed Feb 28, 2020pythonnetwork
ecp_slapMaturityPoCVerified exploit

This repository contains a Go-based proof-of-concept exploit for CVE-2020-0688, a remote code execution vulnerability in Microsoft Exchange Server's ECP (Exchange Control Panel) component. The repository consists of three files: a LICENSE, a README.md with detailed usage instructions, and the main exploit code in 'ecp_slap.go'. ecpslap.go implements three main functions: - 'scan': Authenticates to the target Exchange server's ECP endpoint using provided credentials, checks for vulnerability indicators, and saves authentication cookies to 'cookies.txt'. - 'generate': Assists in generating a ysoserial.net ViewState payload for command execution, outputting the appropriate command line for ysoserial.net. - 'exploit': Uses the cookies and the serialized payload to send an authenticated request to the ECP endpoint, triggering code execution on the vulnerable server. The exploit requires valid credentials and targets the ECP endpoint (typically https://<target>/ecp). It leverages ysoserial.net to generate a malicious ViewState payload, which is then delivered to the server to achieve arbitrary command execution. The README provides comprehensive instructions, including manual validation steps and references to official advisories and write-ups. The code is a functional proof-of-concept and does not include weaponized features such as automated payload generation or post-exploitation modules.

zyn3rgyDisclosed Oct 23, 2020gonetwork
CVE-2020-0688_EXPMaturityPoCVerified exploit

This repository provides an exploit for CVE-2020-0688, a remote code execution vulnerability in Microsoft Exchange Server due to a fixed cryptographic key in the ViewState parameter. The main exploit script, CVE-2020-0688_EXP.py, is a Python tool that automates the exploitation process. It authenticates to the target Exchange server's OWA (Outlook Web App) interface using provided credentials, retrieves necessary session and ViewState information, and then generates a malicious ViewState payload using ysoserial.NET (included in the repository). The payload can execute arbitrary system commands on the server. The script supports both encrypted and unencrypted payloads. The README provides usage instructions and lists several example vulnerable endpoints under the /ecp/ path. The repository also includes documentation and configuration files for ysoserial.NET, which is used to generate the serialized payloads. The exploit requires valid credentials and network access to the Exchange server's ECP endpoints. The overall structure is straightforward: one main Python exploit script, a README, and supporting files for ysoserial.NET.

Yt1g3rDisclosed Feb 27, 2020pythonnetwork
cve-2020-0688-webshell-upload-techniqueMaturityPoCVerified exploit

This repository contains a Python exploit script targeting Microsoft Exchange servers vulnerable to CVE-2020-0688, a .NET deserialization vulnerability. The exploit requires valid Exchange credentials and interacts with the server's /owa/auth.owa and /ecp/default.aspx endpoints to authenticate and leak necessary session and viewstate information. It then uploads an ASPX webshell to /ecp/HybridLogout.aspx, allowing the attacker to execute arbitrary system commands via the webshell's 'cmd' parameter. The script is operational, providing an interactive shell for command execution. The repository consists of a README and a single Python exploit script, with the main entry point being 'fuckchina_v2.py'. No hardcoded IPs or domains are present; endpoints are relative to the user-supplied Exchange server URL.

w4fz5uck5Disclosed Jun 12, 2020pythonnetwork
CVE-2020-0688MaturityPoCVerified exploit

This repository contains operational exploit and detection tools for CVE-2020-0688, a critical deserialization vulnerability in Microsoft Exchange Server's MachineKeySection. The main files are: - ExchangeDetect.cs: A C# tool that authenticates to a target Exchange server using provided credentials, then crafts and sends a malicious __VIEWSTATE parameter to /ecp/default.aspx to detect if the server is vulnerable. It checks for a custom response header (X-ZCG-TEST) to confirm exploitation. - RemoteStub.cs: A C# web shell stub that can be deployed to a compromised server. It receives encrypted payloads via the __SCROLLPOSITION parameter, decrypts them, and can execute commands, run shellcode, or return the process architecture. It returns results in a hidden __VIEWSTATE field. - README.md: Provides build and usage instructions for the tools, including command-line options for detection and exploitation (command execution, shellcode injection, architecture detection). The exploit requires valid Exchange credentials and network access to the target's OWA and ECP endpoints. The tools are capable of both detecting the vulnerability and, with the related ExchangeCmd tool (not included in the provided files), achieving remote code execution. The endpoints targeted are the standard Exchange OWA and ECP URLs over HTTPS. The code is written in C# and is operational, providing real exploitation capabilities for CVE-2020-0688.

zcgonvhDisclosed Mar 1, 2020csharpnetwork
CVE-2020-0688MaturityPoCVerified exploit

This repository contains a Python exploit script (CVE-2020-0688.py) targeting Microsoft Exchange Server instances vulnerable to CVE-2020-0688, a ViewState deserialization vulnerability. The exploit requires valid Exchange user credentials and interacts with the /owa/auth.owa endpoint to authenticate and obtain a session cookie. It then extracts the VIEWSTATEGENERATOR value from the Exchange Control Panel (ECP) page and prompts the user to generate a malicious ViewState payload using ysoserial.net. The payload is then delivered to the /ecp/default.aspx endpoint, resulting in arbitrary command execution on the server. The repository is structured simply, with the main exploit logic in a single Python file and a README providing usage instructions. The exploit is operational, requiring some manual steps (payload generation) but automating authentication and payload delivery.

Jumbo-WJBDisclosed Feb 26, 2020pythonnetwork
cve-2020-0688MaturityPoCVerified exploit

This repository provides a set of Python scripts to exploit CVE-2020-0688, a remote code execution vulnerability in Microsoft Exchange Server (2010-2019) due to a fixed cryptographic key in ViewState. The main files are: - 'cve-2020-0688.py': Automates login to Exchange OWA, retrieves necessary session and ViewState information, and helps craft a ysoserial.NET ViewState payload for command execution. The user must supply a ysoserial-generated payload for exploitation. - '0688-detect.py': Similar to the main exploit, but appears to focus on detection and basic exploitation, including version checks and a hardcoded payload for testing vulnerability. - 'ExchangeCmdPy.py': A more advanced exploit script that, after authentication and exploitation, provides an interactive shell (via the GiveMeShell class) to execute commands, run shellcode, install a memory shell, and remove persistence artifacts. It automates the full exploitation chain and post-exploitation interaction. - 'requirements.txt': Lists dependencies (pycryptodome, requests, urllib3). The exploit requires valid Exchange credentials and network access to the target's OWA and ECP endpoints. It leverages the ViewState deserialization flaw to execute arbitrary commands, and can provide persistent access via a memory shell. Several Exchange ECP endpoints are referenced for exploitation. The repository is operational and provides both exploitation and post-exploitation capabilities.

RidterDisclosed Feb 27, 2020pythonnetwork
CVE-2020-0688MaturityPoCVerified exploit

This repository contains a PowerShell exploit script (CVE-2020-0688.ps1) targeting the Microsoft Exchange Server ViewState deserialization vulnerability (CVE-2020-0688). The exploit leverages the fact that all vulnerable Exchange installations use the same static cryptographic keys for ViewState, allowing an authenticated attacker to craft a malicious ViewState payload (using ysoserial.net) that is deserialized by the server, resulting in remote code execution as SYSTEM. The script requires the attacker to provide the Exchange ECP URL, valid credentials, the command to execute, and the path to ysoserial.exe. It automates the login process, retrieves necessary session and ViewState parameters, generates the payload, and triggers the exploit by sending a crafted request to the /ecp/default.aspx endpoint. The repository also includes a README with detailed usage instructions and a GPLv3 license file. The main attack vector is network-based, requiring access to the Exchange web interface and valid credentials. The endpoints of interest are /owa/auth.owa (for authentication) and /ecp/default.aspx (for payload delivery).

MrTizDisclosed Jan 4, 2021powershellnetwork
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
Microsoft CorporationExchange Serverapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence32

Every observed campaign linking this CVE to a named adversary.

Associated malware5

Malware families riding this exploit, with evidence and IOCs.

Detection signatures1

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity4

Community discussion across Reddit, Mastodon, and other social sources.