The Struts 2 DefaultActionMapper supports a method for short-circuit navigation state changes by prefixing parameters with “action:” or “redirect:”, followed by a desired navigational target expression. This mechanism was intended to help with attaching navigational information to buttons within forms.
In Struts 2 before 2.3.15.1 the information following “action:”, “redirect:” or “redirectAction:” is not properly sanitized. Since said information will be evaluated as OGNL expression against the value stack, this introduces the possibility to inject server side code.
References
- https://nvd.nist.gov/vuln/detail/CVE-2013-2251
- https://exchange.xforce.ibmcloud.com/vulnerabilities/90392
- http://archiva.apache.org/security.html
- http://cxsecurity.com/issue/WLB-2014010087
- http://packetstormsecurity.com/files/159629/Apache-Struts-2-Remote-Code-Execution.html
- http://seclists.org/fulldisclosure/2013/Oct/96
- http://seclists.org/oss-sec/2014/q1/89
- http://struts.apache.org/release/2.3.x/docs/s2-016.html
- http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20131023-struts2
- http://www.fujitsu.com/global/support/software/security/products-f/interstage-bpm-analytics-201301e.html
- https://github.com/advisories/GHSA-47qp-8v9g-39hp