Skip to content

CVE-2017-5638 — The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before…

Key facts

CVE-2017-5638 is a Critical (9.8) vulnerability: The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before…. This entry ships a detection-only PoC and a Docker test lab. It is on the CISA Known Exploited Vulnerabilities (KEV) catalog (added 2021-11-03), confirming active exploitation in the wild, and is linked to known ransomware campaigns.

Actively exploited — on the CISA KEV catalog

CVE-2017-5638 is listed on the CISA Known Exploited Vulnerabilities (KEV) catalog (added 2021-11-03), confirming exploitation in the wild. It is linked to known ransomware campaigns. Federal remediation deadline: 2022-05-03. Prioritise patching and deploy the detection and prevention rules below.

CVE CVE-2017-5638
Severity Critical (9.8)
CISA KEV Actively exploited (added 2021-11-03) · ransomware
Detection / prevention —
PoC poc.py
Source 2017/CVE-2017-5638/

Details

English | 한국어

Description

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.

Vulnerability Details

Property Value
CVE ID CVE-2017-5638
CVSS Score 9.8

Proof of Concept

Download

# Download PoC script
curl -O https://raw.githubusercontent.com/fankh/vulnerability-poc/main/2017/CVE-2017-5638/poc.py

Usage

# Run PoC against target
python3 poc.py --target <TARGET_URL>

# With authentication
python3 poc.py --target <TARGET_URL> --username <USER> --password <PASS>

⚠️ Warning: This PoC is for authorized security testing only. It uses detection-only techniques and does not exploit or damage target systems.

Test Lab

This repository includes a Docker-based test environment with both vulnerable and patched applications.

Quick Start

# Clone and navigate to CVE directory
cd CVE-2017-5638

# Start both applications
docker-compose up -d

# Run tests
./run-tests.sh    # Linux/Mac
./run-tests.ps1   # Windows PowerShell

Application Endpoints

Application URL Status
Vulnerable App http://localhost:8080 Shows vulnerability
Patched App http://localhost:8081 Demonstrates fix

Directory Structure

├── README.md           # English documentation
├── README_KO.md        # Korean documentation
├── poc.py              # PoC detection script
├── docker-compose.yml  # Container orchestration
├── run-tests.sh        # Linux/Mac test runner
├── run-tests.ps1       # Windows test runner
├── vulnerable-app/     # Vulnerable version
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
└── patched-app/        # Fixed version
    ├── app.py
    ├── Dockerfile
    └── requirements.txt

References

  • http://blog.talosintelligence.com/2017/03/apache-0-day-exploited.html
  • http://blog.trendmicro.com/trendlabs-security-intelligence/cve-2017-5638-apache-struts-vulnerability-remote-code-execution/
  • http://www.arubanetworks.com/assets/alert/ARUBA-PSA-2017-002.txt
  • http://www.eweek.com/security/apache-struts-vulnerability-under-attack.html
  • http://www.oracle.com/technetwork/security-advisory/cpujul2017-3236622.html
  • http://www.securityfocus.com/bid/96729
  • http://www.securitytracker.com/id/1037973
  • https://arstechnica.com/security/2017/03/critical-vulnerability-under-massive-attack-imperils-high-impact-sites/
  • https://cwiki.apache.org/confluence/display/WW/S2-045
  • https://cwiki.apache.org/confluence/display/WW/S2-046
  • https://exploit-db.com/exploits/41570
  • https://git1-us-west.apache.org/repos/asf?p=struts.git%3Ba=commit%3Bh=352306493971e7d5a756d61780d57a76eb1f519a
  • https://git1-us-west.apache.org/repos/asf?p=struts.git%3Ba=commit%3Bh=6b8272ce47160036ed120a48345d9aa884477228
  • https://github.com/mazen160/struts-pwn
  • https://github.com/rapid7/metasploit-framework/issues/8064
  • https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbgn03733en_us
  • https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbgn03749en_us
  • https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbhf03723en_us
  • https://isc.sans.edu/diary/22169
  • https://lists.apache.org/thread.html/r1125f3044a0946d1e7e6f125a6170b58d413ebd4a95157e4608041c7%40%3Cannounce.apache.org%3E
  • https://lists.apache.org/thread.html/r6d03e45b81eab03580cf7f8bb51cb3e9a1b10a2cc0c6a2d3cc92ed0c%40%3Cannounce.apache.org%3E
  • https://lists.apache.org/thread.html/r90890afea72a9571d666820b2fe5942a0a5f86be406fa31da3dd0922%40%3Cannounce.apache.org%3E
  • https://nmap.org/nsedoc/scripts/http-vuln-cve2017-5638.html
  • https://packetstormsecurity.com/files/141494/S2-45-poc.py.txt
  • https://security.netapp.com/advisory/ntap-20170310-0001/
  • https://struts.apache.org/docs/s2-045.html
  • https://struts.apache.org/docs/s2-046.html
  • https://support.lenovo.com/us/en/product_security/len-14200
  • https://twitter.com/theog150/status/841146956135124993
  • https://www.exploit-db.com/exploits/41614/
  • https://www.imperva.com/blog/2017/03/cve-2017-5638-new-remote-code-execution-rce-vulnerability-in-apache-struts-2/
  • https://www.kb.cert.org/vuls/id/834067
  • https://www.symantec.com/security-center/network-protection-security-advisories/SA145
  • http://blog.talosintelligence.com/2017/03/apache-0-day-exploited.html
  • http://blog.trendmicro.com/trendlabs-security-intelligence/cve-2017-5638-apache-struts-vulnerability-remote-code-execution/
  • http://www.arubanetworks.com/assets/alert/ARUBA-PSA-2017-002.txt
  • http://www.eweek.com/security/apache-struts-vulnerability-under-attack.html
  • http://www.oracle.com/technetwork/security-advisory/cpujul2017-3236622.html
  • http://www.securityfocus.com/bid/96729
  • http://www.securitytracker.com/id/1037973
  • https://arstechnica.com/security/2017/03/critical-vulnerability-under-massive-attack-imperils-high-impact-sites/
  • https://cwiki.apache.org/confluence/display/WW/S2-045
  • https://cwiki.apache.org/confluence/display/WW/S2-046
  • https://exploit-db.com/exploits/41570
  • https://git1-us-west.apache.org/repos/asf?p=struts.git%3Ba=commit%3Bh=352306493971e7d5a756d61780d57a76eb1f519a
  • https://git1-us-west.apache.org/repos/asf?p=struts.git%3Ba=commit%3Bh=6b8272ce47160036ed120a48345d9aa884477228
  • https://github.com/mazen160/struts-pwn
  • https://github.com/rapid7/metasploit-framework/issues/8064
  • https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbgn03733en_us
  • https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbgn03749en_us
  • https://h20566.www2.hpe.com/hpsc/doc/public/display?docLocale=en_US&docId=emr_na-hpesbhf03723en_us
  • https://isc.sans.edu/diary/22169
  • https://lists.apache.org/thread.html/r1125f3044a0946d1e7e6f125a6170b58d413ebd4a95157e4608041c7%40%3Cannounce.apache.org%3E
  • https://lists.apache.org/thread.html/r6d03e45b81eab03580cf7f8bb51cb3e9a1b10a2cc0c6a2d3cc92ed0c%40%3Cannounce.apache.org%3E
  • https://lists.apache.org/thread.html/r90890afea72a9571d666820b2fe5942a0a5f86be406fa31da3dd0922%40%3Cannounce.apache.org%3E
  • https://nmap.org/nsedoc/scripts/http-vuln-cve2017-5638.html
  • https://packetstormsecurity.com/files/141494/S2-45-poc.py.txt
  • https://security.netapp.com/advisory/ntap-20170310-0001/
  • https://struts.apache.org/docs/s2-045.html
  • https://struts.apache.org/docs/s2-046.html
  • https://support.lenovo.com/us/en/product_security/len-14200
  • https://twitter.com/theog150/status/841146956135124993
  • https://www.exploit-db.com/exploits/41614/
  • https://www.imperva.com/blog/2017/03/cve-2017-5638-new-remote-code-execution-rce-vulnerability-in-apache-struts-2/
  • https://www.kb.cert.org/vuls/id/834067
  • https://www.symantec.com/security-center/network-protection-security-advisories/SA145
  • https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2017-5638

Generated by PoC Generator on 2026-07-04T10:40:45.108611121

Frequently asked questions

What is CVE-2017-5638?

CVE-2017-5638 is a Critical (9.8) vulnerability: The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before…. This entry ships a detection-only PoC and a Docker test lab. It is on the CISA Known Exploited Vulnerabilities (KEV) catalog (added 2021-11-03), confirming active exploitation in the wild, and is linked to known ransomware campaigns.

How do I detect CVE-2017-5638?

Run the detection-only PoC included with this entry against your Docker test lab to confirm whether a target is affected; pair it with your own IDS logging.

How do I block or mitigate CVE-2017-5638?

Upgrade to a fixed version per the vendor advisory; the NVD record lists the affected versions. Use the included PoC to verify your remediation.

Is CVE-2017-5638 actively exploited?

Yes. CVE-2017-5638 is on the CISA Known Exploited Vulnerabilities (KEV) catalog, added 2021-11-03, which means it has been exploited in the wild. CISA also links it to known ransomware campaigns. CISA set a federal remediation deadline of 2022-05-03. Prioritise patching and deploy the detection and prevention rules above.


For authorized security testing and research only. See the full source and NVD record.