CVE-2017-9805

HIGH KEV RANSOMWARE NUCLEI

Apache Struts 2 REST Plugin XStream RCE

Title source: metasploit
STIX 2.1

Exploitation Summary

CVE-2017-9805 is actively exploited and listed in the CISA Known Exploited Vulnerabilities (KEV) catalog, added November 3, 2021, with confirmed use in ransomware campaigns. EIP tracks 26 public exploits from researchers including Warflop, qazbnm456, mazen160, including a Metasploit module exploits/multi/http/struts2_rest_xstream. A Nuclei detection template is also available.

AI-analyzed exploit summary This exploit leverages a deserialization vulnerability in Apache Struts 2.5 to 2.5.12 via the REST plugin's XStream handler. It constructs a malicious XML payload to execute arbitrary commands on the target system.

Description

The REST Plugin in Apache Struts 2.1.1 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13 uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to Remote Code Execution when deserializing XML payloads.

Exploits (26)

exploitdb WORKING POC
by Warflop · pythonremotelinux
https://www.exploit-db.com/exploits/42627

This exploit leverages a deserialization vulnerability in Apache Struts 2.5 to 2.5.12 via the REST plugin's XStream handler. It constructs a malicious XML payload to execute arbitrary commands on the target system.

Classification
Working Poc 100%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.5 - 2.5.12
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts with the REST plugin enabled
devstral-2 · analyzed Feb 16, 2026 Full analysis →
github WRITEUP 3,480 stars
by qazbnm456 · poc
https://github.com/qazbnm456/awesome-cve-poc/tree/master/CVE-2017-9805.md

This repository provides a detailed writeup and references for CVE-2017-9805 (S2-052), a deserialization vulnerability in Apache Struts 2. It includes links to external PoCs, Metasploit modules, and technical analyses but does not contain direct exploit code.

Classification
Writeup 90%
Attack Type
Deserialization
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2 (REST plugin with XStream handler)
No auth needed
Prerequisites: Apache Struts 2 with REST plugin enabled · XStream handler in use
devstral-2 · analyzed Feb 27, 2026 Full analysis →
nomisec WORKING POC 248 stars
by mazen160 · remote
https://github.com/mazen160/struts-pwn_CVE-2017-9805

This repository contains a Python-based exploit for CVE-2017-9805, a deserialization vulnerability in Apache Struts2 REST plugin. The exploit leverages XML payloads to achieve remote code execution (RCE) on vulnerable systems.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.5 - 2.5.12
No auth needed
Prerequisites: Vulnerable Apache Struts2 REST plugin endpoint · Network access to the target
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC 60 stars
by luc10 · remote
https://github.com/luc10/struts-rce-cve-2017-9805

This is a functional exploit for CVE-2017-9805, targeting Apache Struts via a malicious XML payload that achieves remote code execution (RCE) through deserialization. It supports both single-target exploitation and bulk scanning with a reverse shell callback mechanism.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts (REST plugin with XStream handler)
No auth needed
Prerequisites: Vulnerable Apache Struts instance with REST plugin enabled · Network access to the target
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC 20 stars
by chrisjd20 · remote
https://github.com/chrisjd20/cve-2017-9805.py

This is a functional exploit for CVE-2017-9805, targeting Apache Struts 2.5-2.5.12 via deserialization in the REST plugin. It uses XML payload manipulation to execute arbitrary commands on the target system.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.5-2.5.12
No auth needed
Prerequisites: Vulnerable Apache Struts instance with REST plugin enabled
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC 15 stars
by 0x00-0x00 · remote
https://github.com/0x00-0x00/-CVE-2017-9805

This is a Python exploit for CVE-2017-9805, targeting Apache Struts2's XStream REST deserialization vulnerability (S2-052). It crafts a malicious XML payload to execute arbitrary commands on the target system.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts2 (versions affected by S2-052)
No auth needed
Prerequisites: Target system running vulnerable Apache Struts2 · Network access to the target
devstral-2 · analyzed Feb 16, 2026 Full analysis →
github WRITEUP 14 stars
by xbl3 · poc
https://github.com/xbl3/awesome-cve-poc_qazbnm456/tree/master/CVE-2017-9805.md

This repository provides a detailed writeup and references for CVE-2017-9805 (S2-052), a remote code execution vulnerability in Apache Struts 2. It includes links to external PoCs, Metasploit modules, and technical analyses but does not contain direct exploit code.

Classification
Writeup 90%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2 (REST plugin with XStream handler)
No auth needed
Prerequisites: Apache Struts 2 with REST plugin enabled · XStream handler in use
devstral-2 · analyzed Feb 27, 2026 Full analysis →
nomisec WORKING POC 5 stars
by Lone-Ranger · remote
https://github.com/Lone-Ranger/apache-struts-pwn_CVE-2017-9805

This repository contains a Python-based exploit for CVE-2017-9805, a deserialization vulnerability in Apache Struts 2. The exploit leverages a malicious XML payload to achieve remote code execution (RCE) on vulnerable systems.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2 (versions affected by CVE-2017-9805)
No auth needed
Prerequisites: Vulnerable Apache Struts 2 instance · Network access to the target
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC 3 stars
by Shakun8 · remote
https://github.com/Shakun8/CVE-2017-9805

This is a functional exploit for CVE-2017-9805, leveraging deserialization in Apache Struts REST plugin to achieve remote code execution. The payload uses a crafted XML with Java gadget chains to execute arbitrary commands.

Classification
Working Poc 90%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.5 - 2.5.12
No auth needed
Prerequisites: Target must have vulnerable Struts REST plugin exposed · Network access to the target
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC 3 stars
by hahwul · remote
https://github.com/hahwul/struts2-rce-cve-2017-9805-ruby

This is a functional exploit for CVE-2017-9805, leveraging XStream deserialization in Apache Struts2 REST Plugin to achieve remote code execution. The PoC constructs a malicious XML payload that triggers command execution via ProcessBuilder when processed by the vulnerable endpoint.

Classification
Working Poc 100%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts2 REST Plugin (versions up to 2.5.12)
No auth needed
Prerequisites: Vulnerable Struts2 REST Plugin endpoint · Network access to the target
devstral-2 · analyzed Feb 16, 2026 Full analysis →
github WORKING POC 1 stars
by vaishakhcv · perlpoc
https://github.com/vaishakhcv/CVE-exploits/tree/master/CVE-2017-9805

This repository contains a functional Perl exploit for CVE-2017-9805, targeting Apache Struts REST Plugin's XStream deserialization vulnerability. The exploit crafts a malicious XML payload to achieve remote code execution (RCE) on vulnerable systems.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.1.2 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13
No auth needed
Prerequisites: Target URL with vulnerable Struts REST Plugin endpoint
devstral-2 · analyzed Feb 27, 2026 Full analysis →
nomisec WORKING POC 1 stars
by 0xd3vil · remote
https://github.com/0xd3vil/CVE-2017-9805-Exploit

This exploit leverages CVE-2017-9805, a deserialization vulnerability in Apache Struts2 Rest Plugin, to achieve remote code execution via a malicious XML payload. The payload uses Java deserialization gadgets to execute arbitrary commands on the target system.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts2 Rest Plugin (versions up to 2.5.12)
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts2 Rest Plugin · Network access to the target system
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC 1 stars
by jongmartinez · local
https://github.com/jongmartinez/-CVE-2017-9805-

This is a Python exploit for CVE-2017-9805, leveraging deserialization in Apache Struts2's XStream REST plugin to achieve remote command execution. The PoC crafts a malicious XML payload to trigger arbitrary command execution via ProcessBuilder.

Classification
Working Poc 100%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts2 (versions 2.3.5 - 2.3.31, 2.5 - 2.5.10)
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts2 with the REST plugin enabled
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec SCANNER 1 stars
by UbuntuStrike · infoleak
https://github.com/UbuntuStrike/struts_rest_rce_fuzz-CVE-2017-9805-

This script checks for the presence of vulnerable Struts2 REST plugin paths by fuzzing common versioned URIs. It does not exploit CVE-2017-9805 but identifies potentially vulnerable endpoints.

Classification
Scanner 90%
Attack Type
Info Leak
Complexity
Trivial
Reliability
Theoretical
Target: Apache Struts 2.1.1-2.1.34, 2.2.1-2.2.34, 2.3.1-2.3.34, 2.5.1-2.5.13
No auth needed
Prerequisites: Network access to the target · Struts2 REST plugin exposed
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC 1 stars
by BeyondCy · remote
https://github.com/BeyondCy/S2-052

This repository contains a working exploit for CVE-2017-9805, a deserialization vulnerability in Apache Struts2 REST plugin. The exploit leverages XML payloads to execute arbitrary commands on the target system.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts2 (2.1.2 - 2.3.33, 2.5 - 2.5.12)
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts2 with the REST plugin enabled
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC
by Experience-rookie · remote
https://github.com/Experience-rookie/struts-s2-052-deserialization-rce-lab

This repository contains a functional exploit for CVE-2017-9805, leveraging XML deserialization in Apache Struts REST plugin to achieve remote code execution via a crafted payload. The exploit uses a malicious object graph to trigger ProcessBuilder.start() for arbitrary command execution.

Classification
Working Poc 100%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.1.6–2.3.33, 2.5–2.5.12
No auth needed
Prerequisites: Target with vulnerable Apache Struts version · REST plugin enabled · Network access to the target
devstral-2 · analyzed Mar 16, 2026 Full analysis →
nomisec WORKING POC
by 7s26simon · remote-auth
https://github.com/7s26simon/CVE-2017-9805-S2-052

This repository contains a functional Python exploit for CVE-2017-9805, leveraging deserialization in Apache Struts 2 via a crafted XML payload. The exploit sends a malicious HTTP PUT request with a serialized payload that triggers remote code execution (RCE) through Java deserialization gadgets.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2 (S2-052)
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts 2 · Network access to the target's HTTP/HTTPS service
devstral-2 · analyzed Feb 28, 2026 Full analysis →
nomisec WRITEUP
by Fl5xia · poc
https://github.com/Fl5xia/CVE-2017-9805

This repository provides a technical analysis and description of CVE-2017-9805, an RCE vulnerability in Apache Struts 2 due to unsafe XStream deserialization in the REST plugin. It includes details about the vulnerability but does not contain actual exploit code.

Classification
Writeup 90%
Attack Type
Deserialization
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2 (REST plugin)
No auth needed
Prerequisites: Vulnerable Apache Struts 2 instance with REST plugin enabled
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC
by NoSpaceAvailable · poc
https://github.com/NoSpaceAvailable/CVE-2017-9805_example_build

This repository contains a proof-of-concept for CVE-2017-9805, which exploits a deserialization vulnerability in Apache Struts REST plugin. The code demonstrates how an attacker can manipulate XML payloads to execute arbitrary commands on the server.

Classification
Working Poc 90%
Attack Type
Deserialization
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.5.12 and earlier
No auth needed
Prerequisites: Access to a vulnerable Apache Struts REST endpoint · Ability to send crafted XML payloads
devstral-2 · analyzed Feb 16, 2026 Full analysis →
github WORKING POC
by winterwolf32 · perlpoc
https://github.com/winterwolf32/CVE_Exploits-/tree/master/CVE-2017-9805

The repository contains a functional Perl exploit for CVE-2017-9805, targeting Apache Struts REST plugin deserialization vulnerability. The exploit crafts a malicious XML payload to achieve remote code execution via XStream deserialization.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.1.2 through 2.3.x before 2.3.34 and 2.5.x before 2.5.13
No auth needed
Prerequisites: target URL with vulnerable Struts REST endpoint
devstral-2 · analyzed Feb 27, 2026 Full analysis →
nomisec WORKING POC
by z3bd · remote
https://github.com/z3bd/CVE-2017-9805

This repository contains a functional exploit for CVE-2017-9805, targeting Apache Struts 2.5 to 2.5.12 via deserialization in the REST plugin. The exploit leverages XStream to execute arbitrary commands on the target system.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.5 - 2.5.12
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts with the REST plugin enabled
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC
by rvermeulen · poc
https://github.com/rvermeulen/apache-struts-cve-2017-9805

This repository contains a proof-of-concept for CVE-2017-9805, a REST plugin XStream deserialization vulnerability in Apache Struts. The exploit leverages insecure deserialization to achieve remote code execution (RCE).

Classification
Working Poc 90%
Attack Type
Deserialization
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.5 - 2.5.12
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts with the REST plugin enabled
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WORKING POC
by wifido · local
https://github.com/wifido/CVE-2017-9805-Exploit

This is a Python-based exploit for CVE-2017-9805, targeting Apache Struts2 Rest Plugin XStream RCE. It constructs a malicious XML payload to execute arbitrary commands via deserialization.

Classification
Working Poc 95%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts2 Rest Plugin (XStream)
No auth needed
Prerequisites: Target must be running a vulnerable version of Apache Struts2 Rest Plugin · Network access to the target
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec WRITEUP
by AvishkaSenadheera · poc
https://github.com/AvishkaSenadheera/CVE-2017-9805---Documentation---IT19143378

This repository contains only a README file with no exploit code or technical details. It appears to be a placeholder or documentation stub for CVE-2017-9805, which is a deserialization vulnerability in Apache Struts.

Classification
Writeup 90%
Attack Type
Deserialization
Complexity
Theoretical
Reliability
Theoretical
Target: Apache Struts 2.3.x - 2.3.33, 2.5.x - 2.5.12
No auth needed
Prerequisites: none specified
devstral-2 · analyzed Feb 16, 2026 Full analysis →
nomisec SCANNER
by UbuntuStrike · remote
https://github.com/UbuntuStrike/CVE-2017-9805-Apache-Struts-Fuzz-N-Sploit

This script fuzz-tests for CVE-2017-9805 by checking for vulnerable Apache Struts REST plugin paths. It logs potentially vulnerable URIs and optionally launches a Metasploit exploit module.

Classification
Scanner 90%
Attack Type
Rce
Complexity
Trivial
Reliability
Theoretical
Target: Apache Struts 2.1.1-2.3.33, 2.5.1-2.5.12
No auth needed
Prerequisites: Network access to target · Apache Struts REST plugin exposed
devstral-2 · analyzed Feb 16, 2026 Full analysis →
metasploit WORKING POC EXCELLENT
by Man Yue Mo, wvu · rubypocunix
https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/struts2_rest_xstream.rb

This Metasploit module exploits CVE-2017-9805, a Java deserialization vulnerability in Apache Struts 2 REST plugin using XStream. It crafts a malicious XML payload to execute arbitrary commands via a ProcessBuilder chain.

Classification
Working Poc 100%
Attack Type
Rce
Complexity
Moderate
Reliability
Reliable
Target: Apache Struts 2.1.2 - 2.3.33, 2.5 - 2.5.12 (REST plugin with XStream)
No auth needed
Prerequisites: Exposed Struts REST endpoint · XStream library in use
devstral-2 · analyzed Feb 16, 2026 Full analysis →

Nuclei Templates (1)

Apache Struts2 S2-052 - Remote Code Execution
HIGHby pikpikcu
Shodan: http.html:"apache struts" || http.title:"struts2 showcase" || http.html:"struts problem report"
FOFA: body="struts problem report" || title="struts2 showcase" || body="apache struts"

References (13)

Core 13
Core References
Mitigation, Vendor Advisory x_refsource_confirm
https://struts.apache.org/docs/s2-052.html
Broken Link, Third Party Advisory, VDB Entry vdb-entry x_refsource_sectrack
http://www.securitytracker.com/id/1039263
Broken Link, Third Party Advisory, VDB Entry vdb-entry x_refsource_bid
http://www.securityfocus.com/bid/100609
Issue Tracking, Third Party Advisory, VDB Entry x_refsource_confirm
https://bugzilla.redhat.com/show_bug.cgi?id=1488482
Exploit, Third Party Advisory, VDB Entry exploit x_refsource_exploit-db
https://www.exploit-db.com/exploits/42627/
Mitigation, Vendor Advisory x_refsource_confirm
https://cwiki.apache.org/confluence/display/WW/S2-052
Third Party Advisory x_refsource_confirm
https://security.netapp.com/advisory/ntap-20170907-0001/
Third Party Advisory, US Government Resource third-party-advisory x_refsource_cert-vn
https://www.kb.cert.org/vuls/id/112992

Scores

CVSS v3 8.1
EPSS 0.9946
EPSS Percentile 99.9%
Attack Vector NETWORK
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

CISA SSVC

Vulnrichment
Exploitation active
Automatable no
Technical Impact total

Details

CISA KEV 2021-11-03
VulnCheck KEV 2021-11-03
InTheWild.io 2021-07-23
ENISA EUVD EUVD-2018-0602
Ransomware Use Confirmed
CWE
CWE-502
Status published
Products (13)
apache/struts 2.1.2 - 2.3.34
Apache Software Foundation/Apache Struts Apache Struts before 2.3.34 and 2.5.x before 2.5.13
cisco/digital_media_manager
cisco/hosted_collaboration_solution 10.5\(1\)
cisco/hosted_collaboration_solution 11.0\(1\)
cisco/hosted_collaboration_solution 11.5\(1\)
cisco/hosted_collaboration_solution 11.6\(1\)
cisco/media_experience_engine 3.5
cisco/media_experience_engine 3.5.2
cisco/network_performance_analysis
... and 3 more
Published Sep 15, 2017
KEV Added Nov 03, 2021
Tracked Since Feb 18, 2026