A single-container Docker environment based on node:22 that serves a Node.js Express web application on port 3000. The application uses jsonpath-plus 10.2.0 and exposes a /query endpoint that accepts user-supplied JSONPath expressions. The repository also includes a Python exploit script (CVE-2025-1302.py) that sends a crafted payload to the /query endpoint to achieve remote code execution via a reverse shell.
The README explicitly describes the repository as a PoC for CVE-2025-1302, a remote code execution vulnerability in jsonpath-plus. The Dockerfile builds a container running a vulnerable version of jsonpath-plus (10.2.0, as specified in package.json). The server.js code passes user input directly to JSONPath without sanitization, and the included Python script demonstrates exploitation by sending a reverse shell payload. This is a self-contained vulnerability reproduction environment.
An Express server listening on port 3000. It serves static files from the 'public' directory and provides two API endpoints: GET /data returns a hardcoded guestbook object, and POST /query accepts a JSON body with a 'path' field and passes it directly to JSONPath({path, json:message}) without sanitization, enabling JSONPath injection.
server.js:1-53
Python exploit script (CVE-2025-1302.py)
exploit demonstration tool
A Python command-line tool that sends a crafted JSONPath payload to a target URL's /query endpoint. The payload uses the JSONPath-plus constructor/prototype chain to execute a bash reverse shell command connecting back to a user-supplied IP and port. It includes a banner, spinner, and argument parsing for URL, LHOST, and LPORT.
CVE-2025-1302.py:1-124
Dockerfile
container build specification
Defines a Docker image based on node:22, installs npm dependencies (including jsonpath-plus 10.2.0), installs net-tools and netcat-openbsd, copies the application code, and exposes port 3000. The CMD runs node server.js.
Dockerfile:1-23
package.json
dependency manifest
Declares the application name 'jsonpath-test' and its dependencies, including the vulnerable jsonpath-plus version 10.2.0.
A simple search page that allows users to enter a search term, which is sent as a JSONPath expression to the /query endpoint. It displays results in a table and includes floating character images for visual effect.
The README describes CVE-2025-1302 as an RCE in jsonpath-plus before 10.3.0 due to improper input sanitization. The package.json pins jsonpath-plus to 10.2.0, and server.js passes unsanitized user input to JSONPath. The exploit script demonstrates RCE via a reverse shell payload. The evidence directly supports the claimed vulnerability.
Requirements and sequence described by the evidence
Prerequisites
Docker must be installed to build and run the vulnerable container.README.md:10-13
Python 3 and the packages in requirements.txt (requests, Faker, rich_click) must be installed to run the exploit script.README.md:27-30requirements.txt:1-3
A netcat listener must be started on the attacker's machine to receive the reverse shell.README.md:32-34
The target URL must point to the /query endpoint of the running vulnerable application.CVE-2025-1302.py:68-72
Evidence-described exercise path
Build the Docker image: docker build -t jsonpath:10.2.0 .README.md:11
Run the container: docker run --rm --name jsonpath -p 3000:3000 jsonpath:10.2.0README.md:12
Start a netcat listener on the attacker's machine: nc -l -p <LPORT>README.md:33
Run the exploit script: python3 CVE-2025-1302.py -u <URL_TO_EXPLOIT> -i <LHOST> -p <LPORT>README.md:34
The exploit sends a JSONPath payload to the /query endpoint, which triggers RCE and connects a reverse shell back to the attacker's listener.CVE-2025-1302.py:68-82
Safety-review evidence
Behaviors behind the stored safety assessment
No harmful behavior observed
All visible behavior is directed at the lab's own vulnerable target container. The exploit script sends a reverse shell payload to the /query endpoint of the intentionally vulnerable application, which is the expected exercise. There is no evidence of hidden behavior, host escape, external exfiltration, persistence, credential theft, or destruction. The Dockerfile installs netcat-openbsd, which is consistent with receiving a reverse shell inside the container for demonstration purposes. No suspicious indicators are present.
The packet includes 3 uninspected binary PNG files and 10 oversized PNG files that were not analyzed; their content could theoretically contain hidden payloads, but no evidence suggests this.
The Dockerfile installs netcat-openbsd, which could be used for purposes beyond the lab, but its presence is consistent with the documented reverse shell demonstration.
The analysis does not verify whether the exploit actually achieves RCE or whether the CVE association is technically accurate beyond the provided evidence.
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: some source evidence omitted · 3 binary files not inspected