Wavense
VulnerabilitiesVendorsMy Stack
Wavense© 2026 Wavense. All rights reserved.Privacy PolicyTerms & Conditions
Vulnerabilities/CVE-2017-9791
Vulnerability dossier

CVE-2017-9791

Apache Struts 2 RCE via Struts 1 Plugin

VendorapachePublishedJul 10, 2017SourceNVDWeaknessCWE-20
Act now

Actively exploited in the wild. Patch or mitigate immediately — don't wait for a maintenance window.

⚙ WeaponizedMetasploit module availableopen ↗PoCPublic exploit on Exploit-DB#44643 ↗#42324 ↗
Severity
Critical · 9.8
CVSS base score
Exploitation
In the wild
CISA KEV · Metasploit · Exploit-DB
Predicted risk
99% model
EPSS forecast — overtaken by confirmed exploitation
Exposure
Internet-facing
Exploitable remotely, no login, no user action
01

What's the risk?

An unauthenticated attacker, remotely over the network, with no user interaction, can fully compromise the system — steal data, tamper with it and take it offline.

The Struts 1 plugin in Apache Struts 2.1.x and 2.3.x might allow remote code execution via a malicious field value passed in a raw message to the ActionMessage.

How it's exploitedMITRE ATT&CK · inferred from weakness & vector
Initial Access
T1190Exploit Public-Facing Application

Inferred from the weakness type (CWE) and how the flaw is reached — the techniques an attacker would chain to exploit this. Real-world corroboration appears here as threat intel is folded in.

02

Who's exploiting it?

Corroborated threat activity referencing this CVE — with source and confidence, not inference.

Confirmed exploited in the wild. CISA KEV · catalogued Feb 10, 2022

Named threat actors and observed ATT&CK techniques appear here as intel feeds are folded in — the ATT&CK chain above stays inferred until then.

03

Are we affected?

33
  • Affectedapache · struts2.3.1
  • Affectedapache · struts2.3.1.1
  • Affectedapache · struts2.3.1.2
  • Affected
apache · struts
2.3.3
  • Affectedapache · struts2.3.4
  • Affectedapache · struts2.3.4.1
  • Affectedapache · struts2.3.7
  • Affectedapache · struts2.3.8
  • Affectedapache · struts2.3.12
  • Affectedapache · struts2.3.14
  • Affectedapache · struts2.3.14.1
  • Affectedapache · struts2.3.14.2
  • Affectedapache · struts2.3.14.3
  • Affectedapache · struts2.3.15
  • Affectedapache · struts2.3.15.1
  • Affectedapache · struts2.3.15.2
  • Affectedapache · struts2.3.15.3
  • Affectedapache · struts2.3.16
  • Affectedapache · struts2.3.16.1
  • Affectedapache · struts2.3.16.2
  • Affectedapache · struts2.3.16.3
  • Affectedapache · struts2.3.20
  • Affectedapache · struts2.3.20.1
  • Affectedapache · struts2.3.20.3
  • Affectedapache · struts2.3.24
  • Affectedapache · struts2.3.24.1
  • Affectedapache · struts2.3.24.3
  • Affectedapache · struts2.3.28
  • Affectedapache · struts2.3.28.1
  • Affectedapache · struts2.3.29
  • Affectedapache · struts2.3.30
  • Affectedapache · struts2.3.31
  • Affectedapache · struts2.3.32
  • 04

    What to do

    Generated by Wavense from the CVE record — an immediate mitigation and the permanent fix.

    1. !

      Mitigate now

      As an interim measure, deploy a Web Application Firewall (WAF) to inspect and block suspicious input containing known RCE attack patterns or unusual characters in Struts application parameters. Restrict network access to Struts applications, limiting exposure to only necessary internal or trusted external sources via firewall rules. Enhance monitoring of application logs for signs of attempted command injection or unusual server process activity, particularly for requests targeting Struts 1 plugin components.

    2. ✓

      Permanent fix

      The permanent resolution requires upgrading affected Apache Struts 2.1.x and 2.3.x applications to a version that addresses this vulnerability. Specifically, upgrade to Apache Struts 2.5.12 or a later version, as these versions have completely removed the vulnerable Struts 1 plugin. Additionally, review application dependencies to ensure no legacy Struts 1 plugin code remains or is being implicitly loaded, which could reintroduce the risk.

    Technical details— weakness, CVSS vector & calculator, related CVEs

    Business impact

    An attacker can achieve remote code execution (RCE) by injecting malicious field values into an ActionMessage within a vulnerable Struts 2 application utilizing the Struts 1 plugin. This allows arbitrary command execution on the host server, potentially leading to full system compromise, sensitive data exfiltration, or complete service disruption. The business consequences include severe data breaches, significant reputational damage, and financial penalties due to regulatory non-compliance.

    Weakness

    1
    CWE-20Common Weakness Enumeration · MITRE definition

    CVSS 3.1 details

    CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    0.0
    / 10.0 base
    Critical severity
    CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    Exploitability metrics
    Attack VectorAV
    Remotely exploitable across a network
    Attack ComplexityAC
    No special conditions required
    Privileges RequiredPR
    No authorization needed
    User InteractionUI
    No user participation needed
    Impact metrics
    ScopeS
    Impact confined to the vulnerable component
    ConfidentialityC
    Total loss of confidentiality
    IntegrityI
    Total loss of integrity
    AvailabilityA
    Total loss of availability

    Related vulnerabilities

    Other CVEs affecting struts

    NVD
    9.8Critical
    CVE-2020-17530KEV⚙ WeaponizedExploit likely

    Forced OGNL evaluation, when evaluated on raw user input in tag attributes, may lead to remote code execution. Affected software : Apache Struts 2.0.0 - Struts 2.5.25.

    oracleCWE-917Expression Language InjectionNetworkLow effortNo authNo interactionCIA
    2020-12-10
    NVD
    9.8Critical
    CVE-2017-5638KEV⚙ WeaponizedExploit likely

    The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 has incorrect exception handling and error-message generation during file-upload attempts, which allows remote attackers to execute arbitrary commands via a crafted Content-Type, Content-Disposition, or Content-Length HTTP header, as exploited in the wild in March 2017 with a Content-Type header containing a #cmd= string.

    ibmCWE-755Improper Handling of Exceptional ConditionsNetworkLow effortNo authNo interactionCIA
    2017-03-11
    NVD
    9.8Critical
    CVE-2013-2251KEV⚙ WeaponizedExploit likely

    Apache Struts 2.0.0 through 2.3.15 allows remote attackers to execute arbitrary OGNL expressions via a parameter with a crafted (1) action:, (2) redirect:, or (3) redirectAction: prefix.

    apacheCWE-74NetworkLow effortNo authNo interactionCIA
    2013-07-19
    NVD
    9.8Critical
    CVE-2012-0391KEV⚙ WeaponizedExploit likely

    The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during certain exception handling for mismatched data types of properties, which allows remote attackers to execute arbitrary Java code via a crafted parameter.

    apacheCWE-94Code InjectionNetworkLow effortNo authNo interactionCIA
    2012-01-08
    NVD
    8.1High
    CVE-2018-11776KEV⚙ WeaponizedExploit likely

    Apache Struts versions 2.3 to 2.3.34 and 2.5 to 2.5.16 suffer from possible Remote Code Execution when alwaysSelectFullNamespace is true (either by user or a plugin like Convention Plugin) and then: results are used with no namespace and in same time, its upper package have no or wildcard namespace and similar to results, same possibility when using url tag which doesn't have value and action set and in same time, its upper package have no or wildcard namespace.

    oracleNetworkHigh effortNo authNo interactionCIA
    2018-08-22
    NVD
    8.1High
    CVE-2017-9805KEV⚙ WeaponizedExploit likely

    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.

    ciscoCWE-502Deserialization of Untrusted DataNetworkHigh effortNo authNo interactionCIA
    2017-09-15
    NVD
    7.5High
    CVE-2006-1547KEVExploit likely

    ActionForm in Apache Software Foundation (ASF) Struts before 1.2.9 with BeanUtils 1.7 allows remote attackers to cause a denial of service via a multipart/form-data encoded form with a parameter name that references the public getMultipartRequestHandler method, which provides further access to elements in the CommonsMultipartRequestHandler implementation and BeanUtils.

    apacheCWE-749Exposed Dangerous Method or FunctionNetworkLow effortNo authNo interactionCIA
    2006-03-30
    NVD
    9.8Critical
    CVE-2026-104711

    Improper neutralization of special elements used in an expression language statement ('Expression Language Injection') vulnerability in Apache Struts. If the application is configured to use the legacy RESTful action mapper, a crafted request can inject an OGNL expression that may lead to remote code execution. Struts 7 is affected only when the OGNL allowlist is disabled; it is enabled by default. Applications using the default action mapper, the restful2 mapper, or the Struts REST plugin are not affected. This issue affects Apache Struts: from 2.0.0 through 2.3.37, from 2.5.0 through 2.5.33, from 6.0.0 through 6.11.0, from 7.0.0 through 7.3.0. Users are recommended to upgrade to version 6.12.0 or 7.4.0, which fixes the issue.

    apacheCWE-917Expression Language InjectionNetworkLow effortNo authNo interactionCIA
    2026-10-05
    0.0
    / 10.0 base
    Critical severity
    Key facts
    CVE ID
    CVE-2017-9791
    Published
    Jul 10, 2017
    Last modified
    Jun 17, 2026
    CVSS
    9.8 (v3.1)
    EPSS
    98.91%
    In CISA KEV
    Yes
    Confidence
    100/100
    Weakness
    CWE-20
    Timeline
    1. Jul 10, 2017Published to NVDNVD
    2. Jun 17, 2026Record last modifiedNVD
    3. Aug 22, 2026AI analysis generatedWavense
    View on NVD