PoC files

21 files

File viewing is interactive and short-lived. Downloads are password-protected ZIP archives using password eip.

GitHub

Docker lab environments

1
GitHub

docker

Created
Vuln labCVE-2024-53677Dockerfile

1 Dockerfile

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker-based environment that builds and runs an Apache Struts 2 web application (version 6.3.0.2) on Tomcat 9.0, designed to demonstrate the CVE-2024-53677 file upload path traversal vulnerability.

docker/Dockerfile:1-23docker/struts-app/pom.xml:1-102README.md:1-74

Lab assessment

Vulnerability lab

The README explicitly states the repository is for CVE-2024-53677, provides a lab setup, and describes the vulnerability. The Dockerfile builds a Struts application with a vulnerable file upload action, and the POM file names the project 'CVE-2024-53677' with a description confirming it is a demo for that CVE.

README.md:1-74docker/struts-app/pom.xml:10-11docker/Dockerfile:1-23
Lab shapeDockerfile
ServicesUnknown
Compose manifests0
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

Struts application (upload-1.0.0.war)

vulnerable targetfile upload handler

A Java web application built with Apache Struts 2 (version 6.3.0.2) that provides file upload endpoints. The UploadAction and UploadsAction classes accept file uploads and write them to a directory using the user-supplied filename without sanitization, enabling path traversal. The application is packaged as a WAR and deployed on Tomcat.

docker/struts-app/pom.xml:1-102docker/struts-app/src/main/java/com/example/UploadAction.java:1-77docker/struts-app/src/main/java/com/example/UploadsAction.java:1-79docker/struts-app/src/main/resources/struts.xml:1-16

Tomcat 9.0 server

application serverdeployment target

A Tomcat 9.0 servlet container that hosts the vulnerable Struts application. The Dockerfile copies the WAR file, a custom tomcat-users.xml with admin credentials, a context.xml, and a modified catalina.sh script into the image. It exposes port 8080.

docker/Dockerfile:8-23docker/tomcat-users.xml:1-7docker/context.xml:1-24

Maven build stage

build toolcompilation

A temporary build stage based on openjdk:17-jdk-alpine that installs Maven, copies the Struts application source, and runs 'mvn clean package' to produce the WAR file. The resulting artifact is copied to the Tomcat stage.

docker/Dockerfile:1-7

catalina.sh (modified)

Tomcat startup scriptdebugger attachment

A copy of the Tomcat catalina.sh script that includes an additional JAVA_OPTS line to attach an IntelliJ debugger on port 8000, listening on all interfaces. This is a modification from the standard script.

docker/catalina.sh:1-693docker/catalina.sh:234

Python exploit script (CVE-2024-53677.py)

exploit clientproof-of-concept

A Python script referenced in the README that sends crafted file upload requests to the vulnerable application to achieve path traversal. The script itself is not included in the evidence packet, but its usage is described.

README.md:30-48
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2024-53677

Supported by supplied evidence

The POM file explicitly names the project 'CVE-2024-53677' and describes it as a demo for that CVE. The README details the vulnerability and provides a lab setup. The Java source code shows a file upload action that uses the user-supplied filename directly in a File constructor, enabling path traversal, which aligns with the CVE description of flawed file upload logic in Apache Struts.

docker/struts-app/pom.xml:10-11README.md:1-74docker/struts-app/src/main/java/com/example/UploadAction.java:48-52
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker must be installed to build and run the lab environment.README.md:10-13
  • The Python exploit script requires the 'requests' library.requirements.txt:1
  • The target URL and the vulnerable upload parameter name must be known to run the exploit.README.md:35-37

Evidence-described exercise path

  1. Build the Docker image using the provided command.README.md:11-12
  2. Run the Docker container, mapping port 8080.README.md:12-13
  3. Install Python dependencies (requests).README.md:30-32
  4. Execute the Python exploit script against the running container, specifying the target URL and the upload parameter with a path traversal payload (e.g., '../test.jsp').README.md:35-37
  5. Verify the file was written outside the intended upload directory, demonstrating path traversal.README.md:39-48
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is directed at the contained lab target. The Dockerfile builds and runs a vulnerable Struts application inside a container. The modified catalina.sh adds a debugger port, which is a common development practice and does not indicate hidden compromise. No evidence shows host escape, external connections, persistence, credential theft, or destructive actions beyond the intended vulnerability demonstration.

docker/Dockerfile:1-23docker/catalina.sh:234README.md:1-74
Review boundaries

What the analysis did not establish

  • The Python exploit script (CVE-2024-53677.py) is not included in the evidence packet; its behavior cannot be analyzed.
  • Two compiled Java class files (UploadAction.class, UploadsAction.class) are present but uninspected; their behavior is assumed to match the provided source code.
  • The packet does not include a docker-compose.yml or runtime configuration beyond the Dockerfile; port mappings and volume mounts are only described in the README.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

Packet coverage: 2 binary files not inspected

Linked vulnerabilities

2